Awesome Conferences

How I would teach a university-level sysadmin degree

The coursework would be very focused on understanding the internals of each layer of the stack. To make a comparison to the auto industry: Your training won't result in you being a mechanic that can follow the manufacturer's manual: you will be the person that can write the manual because that's how much you understand how the car works.

But the real change I'd like to see is how the labs are done.

  • When you enter the school they give you 12 virtual machines on their VMware cluster (or Ganeti cluster).

  • In phase one you go through a progression that ends with turning those 6 machines into 2 load balancers, 3 web servers, a replicated database, a monitoring host, etc. (this is done as a series of labs that start with setting up one web server, then building up to this final configuration).

  • At that point the CS department turns on a traffic generator and your system now gets a steady stream of traffic. There is a leader-board showing show has the best uptime.

  • Phase 2 you set up a dev and qa clone of what you did in Phase 1, but you do it with Puppet or cfengine. Eventually those tools have to manage your live system too, and you have to make that change while the system is in use.

  • Once you have a dev->qa->live system and your uptime stats become 20% of your grade.

  • Another element I'd like to have is that there is a certain point in which everyone has to run other people's system using only the operational documentation that the creator left behind.

  • There might be another point in which the best student's cluster is cloned to create a web hosting system that provides real service to the community. Students would run it cooperatively, maintaining everything from the software to the operational docs.

However, by the time you get your degree you'd not only know the technical side of system administration but you'd also have the practical experience that would make you extremely valuable in the market.

Update: To be clear, there should be gobs and gobs of theory. I would want the above to be the labs that match the theory. For example, theory on OS matched with Linux kernel as an example; theory of autonomic computing with cfengine/puppet as an example, and so on and so on.

Posted by Tom Limoncelli in Career Advice

No TrackBacks

TrackBack URL:

11 Comments | Leave a comment

This is a good idea for a lab, Tom -- but don't forget that a university's job is not just to tell you how to do things (that's training) but also to help you to learn how to think about problems that have not yet come about. For that you need a mixture of theory, practice and reflection on the culture of learning. I have my own problems with current university models ( but the need for that intellectual depth is greater than ever.

Mark, I totally agree. This would be the lab that would accompany theory classes. I would hope the entire 4-year experience could be structured so that the theory comes in the right order so that the labs build the cluster described above. This would be a lot of coordination but it would be worth it. (I've added an update.)

You cannot give them the VMs before they know what a database is, and at least some theory on replication.

You cannot expect much from them before they are taught how to program, so at first you teach them C and then as a term project you let them research and select a scripting language in which they automate something.

Include Mark Burgess's Analytical Network and System Administration.

They must learn how to measure things and construct metrics.

By the time they are ready to finish, they are expected to build the infrastructure that will host the VMs for the next year's group.

Once you have a dev->qa->live system and your uptime stats become 20% of your grade.

I just hope the university has a good uptime with their equipment and hardware.. I can see the Freshman myth: "You knwo if your cluster hardware dies, you get an automatic A for the semester out of grief."


Downtime is an option. Personally, I would love to see a system administration class on Coursera, developed by Google (and Tom in particular).

You forget that a University's job isn't to fill the student's head with knowledge, or prepare them for the real world, or even make students useful to industry with up-to-date skills on the latest tools.

Mostly, the whole system is set up to rank students by their intelligence and how competitive they are. Maybe even to teach them how to learn in the process.


Patching is important; but you must manage it properly to maintain your _availability_

I got my bachelors, then changed careers into IT and attended community college before going on to get my Masters in CIS. What you describe in this article is the real work that I do now (several years later). This is genius and would have saved me so much time.

I would take the hell out of that course.

Sysadmin is such a hard system to use. I've looked through so many business directories for a tech guy to assist me with it.

hehe bookmaked. Keeping this for future reference appreciated heaps man.

Leave a comment