Why Administrators Should Also Program And Programmers Should Learn Systems

    I have been working in I.T. for almost 17 years now. From my first programming job in 1993 through CTO positions years later, I have come to one conclusion. Programming and systems administration are not mutually exclusive. Either one can be enhanced by the other. Regardless if you use Windows or Linux, C or PERL; programming is enhanced by systems knowledge and systems administration is simplified by programming.

    When I was a junior network guy, programming for most uses was beyond my capabilities. What I did know was that there were a number of menial and repetitive tasks that would be ignored or forgotten and those tasks should be automated. The industry at the time was convinced that network management tools like Unicenter or Tivoli would be the answer by allowing the admins to delegate tasks to the software, but the software could never keep up with the creation of new needs.

    A few years later, after discovering Open Source and Linux, I learned about shell scripting and PERL. Using those languages, which are very simple to learn, in conjunction with tools like Cron I had found my panacea. Using scripting tools to automate those menial and repetitive tasks was the right answer. No longer would you have to go through a long and complicated procedure, possibly missing steps or forgetting it altogether; I could just schedule a script to do all of the steps for me. I could even choose to have the script notify me when it was done to let me know that it had completed it's work.

    Well, that worked well on UNIX and Linux systems where scripting is almost native to the operating system; but I still had to do those repetitive and tedious tasks on Windows. Along came Microsoft PowerShell, a.k.a. Monad. Using the .NET scripting built into PowerShell you could automate tedious and repetitive tasks in Windows almost as easily as you could in UNIX and Linux.

    Many of my colleagues have told me that I am rare in my understanding of both programming and systems administration, but I disagree. I don't know many I.T. professionals who could not learn at least some scripting and automation. It's really just a matter of getting comfortable on a command prompt. If you can do it on a command prompt, you can do it in a script. In Windows, that could be updating a large number of registry settings across a number of systems. In *NIX, it could mean pushing out changes to other servers on a scheduled basis. Either way, you have automated what used to be a manual and boring process and freed up more of your time to do interesting and useful things.

    For the programmers, there is another aspect to the equation. The more a programmer knows about systems and networks, the better that programmer is able to write code that "lives within it's means". I cannot count the number of times that a programmer has brought me a new application of which they are extremely proud and as soon as it is loaded into production the server is brought to it's knees. Many programmers just don't take into account how their code will effect the hosting server when they write their extremely detailed and complex code. They need to learn the mantra of Information Security professionals: Everything in balance.

    "Everything in balance" is a catchphrase that we can all learn from. Exchange may be a nice groupware solution, but if you don't have the resources and people to support it, it's a bad decision. Sure, Postfix and Dovecot may be cheap and flexible, but if you don't have people knowledgeable enough to maintain it, it just doesn't make sense. And my final example is IIS: Sure, it's got pretty nice GUIs, but if it is down because of attacks more than your business can accept, the time and effort involved with running Apache is a better option.

    So, in the end, my point is this: Having at least a basic understanding of your environment from start to finish will benefit anyone involved in I.T. If you're a programmer and writing SQL applications and your SQL server is on the other side of a 10MB hub, your application will be slow. If you're a systems administrator that needs to run a series of reports every day, scripting and automation will make your tasks more reliable and free your time to do more important things. Find tools and resources which make your tasks more reliable and accurate.

Below are some links which are for systems administrators and programmers respectively to learn the basics of their I.T. counterparts.

For Systems Administrators

For Programmers


Popular Posts