In one of the groups I subscribe to on linkedin.com, a young lady asked how she should pursue a career in Systems Administration. A software developer asked why she should aim so low, and that with her BS in Computer Science, she should be pursuing a career as a programmer instead. I carefully formulated a response, but the discussion was closed before I had the opportunity to respond. I shall instead post my response here.
Sir, I respectfully disagree with some (but not all) of what you’ve said. I have worked as both a Systems Engineer and as a Software Developer and have found aspects of the CS education equally useful in both professions.
I view the Systems Administrator position as a lead into becoming a Systems Engineer. In an ideal world, a Junior SA has a CS (or related) degree and needs to learn some of the practical aspects of maintaining systems, monitoring, storage and dealing with systems using a systemic approach, and yes .. monitoring health. This isn’t taught at most
universities and it takes a few years to learn these skills on-the-job. As a Systems Engineer many of us work in low-latency/high-frequency environments. We optimize and compile kernels, tune kernel parameters, are intimately familiar with dozens of protocols, operating systems, file systems, database theory, security technologies & algorithms, and of course application development. We work with dozens of application development groups to migrate and troubleshoot software and to build packages. When evaluating new technologies for our companies, we need to understand the white papers we’re reading to formulate opinions on the technologies and produce meaningful test scenarios. Sure we write lots of small scripts and automation tools, but many of us also write some fairly large applications for monitoring, tracking inventory and support contracts, and for doing capacity planning (to name just a few).
We use tools like strace, gdb and truss to troubleshoot program failures, we understand IO, and memory management for capacity planning and performance tuning, and we configure, compile and build countless software packages on multiple platforms which don’t always work out of the box.
When someone calls and says a standard three tier web application is “going slow”, a Systems Engineer must rely on multiple disciplines and the fundamentals he/she learned in school to do troubleshooting.
– Are any of the three tiers running out of memory or CPU? If so, what’s causing it?
– How many connections is the web server configured to have open? Is the application closing the connections properly?
– Are all the OS’s properly patched?
– Is the SQL optimized?
– Are the database tables properly indexed?
– Do the database tables have reasonable relationships and are the tables properly formulated?
– Does the application have nested loops
– Is it a single threaded/process app?
– Does the server have hyper-threading turned on?
– Is the network saturated between the tiers?
– Is the database configured for multi-path IO?
– Is DNS configured properly on all the servers?
– How is the application authenticating permissions (LDAP/AD/NIS/local account/.htpasswd)?
– Are the network cards configured for full or half duplex? Are they configured for the right speed? Are they dropping packets or showing errors?
These are just a few items that can be checked. The list can go on and on. Some of the items on the check list are based on experience as a systems administrator, and other items require a fundamental understanding of Computer Science.
In terms availability of employment and salary using the broad terms “Software Engineer” and “Systems Engineer” in the indeed.com trends tool and salary tool:
http://www.indeed.com/jobtrends?q=software+engineer%2C+systems+engineer&l=
http://www.indeed.com/salary?q1=Systems+engineer&l1=NYC
http://www.indeed.com/salary?q1=software+engineer&l1=NYC
we show greater demand in the Systems Engineering profession with only a marginal difference in average salary. I really think salary depends on experience, specific skill set, your network, the industry that you are employed in, and the number of years of industry experience a person has.
I appreciate the amount of concentration and focus required for software development. It is a valiant pursuit that requires a great deal of skill. I simply wish to promote a broader understanding of the Systems Engineering profession.