Philosophy of System Administration
System administration is not something that monkeys can do. While places like ITT Tech or Coleman University do teach the basics of using a computer they don’t teach how to be a truly great system administrator.
Learn why things work on a starship
In Star Trek II: The Wrath of Kahn during the first encounter between Kirk and Kahn, Kahn has crippled the Enterprise and is demanding Kirk’s surrender. Kirk buys time promising surrender and uses that time to hack into the opposing ship’s computer system and lower its shields, thereby leaving Kahn defenseless for Kirk’s counter strike.
Kirk and Saavik have this exchange:
Kirk: Saavik, punch up the data charts of Reliant’s command console – hurry…
Saavik: Reliant’s command…I don’t understand – >
Kirk: You’ve got to learn why things work on a Starship. Each ship has its own prefix combination code to prevent an enemy from doing what we’re attempting; using our console to order Reliant to lower her shields…
Star Trek II: The Wrath of Kahn
Computers can only do two things. Add and compare. Everything else is an abstraction. At the highest level you have widgets that look like physical objects that can be manipulated. They can’t be, at least not really. Peal off the widgets layer and you have a canvas with areas that trigger actions. Even a shape definition is an abstraction for multiple non-contiguous memory areas. Every swipe, click or keypress is simply sending a combination of instructions which is to add or compare. There’s a great article by Joel Spolsky on Leaky Abstractions that explores this in depth.
Learn why the abstractions work, what abstractions they are built on top of, and as Joel explains, what’s leaking through.
Don’t cut the ends off the roast
There’s an anecdote about a newly married woman who cooks a roast for dinner for her husband. In preparing it she cuts the ends off of the roast. At dinner time he asks her where the rest of the roast is. Perhaps it’s his favorite part. Perhaps he’s thrifty and doesn’t want good meat to go to waste. She replies “This is how a roast is made. That’s how my mother taught me do it.” She later calls her mother to ask why the ends of the roast need to be cut off. The mother says that she doesn’t know, but that’s how gradmother always prepared it. The mother later calls grandma and asks her why the ends of the roast must be cut off. Grandma’s response is “Because I didn’t have a pot large enough to fit the whole roast.”
Tradition is a terrible reason to do anything. Without understanding why decisions were made you have no idea wether or not it’s time to change it. You’re left with voodoo and superstition, jumping at shadows blaming anything and everything.
KISS
Everything should be as simple as it can be, but not simpler. – Albert Einstein (kind of)
Anyone can create a cryptography product that he himself cannot break. – Bruce Schneier
There’s an old saying in programming, “Don’t make your code as clever as possible, because debugging is harder than programming.” > – John Siracusa
The hallmark of good design is in reducing complexity. Anything can be made needlessly complex, which is usually an indicator that you don’t understand well enough what you’re doing or why you’re doing it. Any idiot can design a system. But it takes a smarter idiot to figure out what went wrong. Don’t design a system beyond your troubleshooting skill.