I think the briefest way to sum up the difference between a good developer mindset and a good sysadmin mindset is “a good developer thinks, ‘how will this work?’ and works accordingly. A good sysadmin thinks, ‘how will this break?’ and works accordingly.”
Developers think in terms of “edge cases” and “off by 1” errors, which start from a default of things working. This is good as a design skill; developers need to think algorithmically, pondering a main way of something functioning and then dealing with anomalies.
However, sysadmins tend to install systems and maintain them with scripts, as opposed to building new software — usually. Sysadmins deal with systems when anomalies happen, so they must have a mindset of “how will this break?” vis-a-vis — “how will this break and how can I be notified of the breakage before my boss/the customers call?” which leads to “what if the notification system breaks?”
Now, a DBA leads a double life. In fact, DBA has come to mean “database professional”. There are plenty of folks who use DBA when in fact they’re great Database Programmers, who can code their way around any problem but haven’t touched a config file and never have GRANTed anyone access. On the other end of the spectrum are folks like me, who fiddle with stored procedures but are great at administration.
I’ve always thought that “database professionals” bridged the gap between Systems and Development, almost by sheer need. I wonder if that’s true for any “major application professional” such as an Apache/Tomcat/Resin/Jboss administrator.
What do you think about the different qualities of Sysadmins, DBAs and Developers?