Why Building Utilities From Scratch is a Good Idea
Homebrewing your own administration utilities doesn't have to be as difficult — and there are some advantages to doing so. In the continual quest for solutions that are easy on the bottom line, programming skills allow IT departments to go beyond the manual. The end result is that off-the-shelf solutions can be more precisely tailored to individual business cases.
IT Skills: The Wide vs. Deep Debate
You may be wondering how on earth this applies to you. And for good reason: Today's IT training tends to be highly specialized. While training for your IT career, programming and theory often take a back seat to more practical and direct skills like networking. This is advantageous in that IT pros are able to quickly get up to speed on using the latest systems, and be ready for action when they complete their training. However, it's important to be aware that knowledge gaps can form as a result of having too narrow of a focus.
When Edgar Nye coined the phrase "a mile wide and an inch deep" in 1889, he never could've imagined the implications it would have on our understanding of gaining knowledge. But in modern InfoTech, training tends to be the reverse, a mile deep and an inch wide, in order to provide the most solid foundation in a subject area.
An unfortunate side effect is that IT pros can be left without a strong understanding of general IT theory and systems programming — unless they specifically seek out training in those areas.
So, we argue that a more balanced approach to training can create a more effective IT Pro. Training in broader IT theory and programming can provide a deeper understanding of what's going on under the hood. This in turn reveals new methods to interact with our systems programmatically.
The Expense of Managing and Administering IT
Knowledge gaps can be expensive. In IT departments where budgets can be tight, a background in programming can tame spiraling costs and complexities. Programming enables the extension of platforms with utilities and scripts precisely tailored to specific business configurations and goals.
Of course, there's no end to the commercial software, outsourcing, and consultation services available to fill this void. But before we go there, we need to ask the question, "do we even need this, or can we handle it ourselves?"
It's common for companies to experience the shellshock of escalating IT costs as they become more reliant on technology. Particularly in startups that experience rapid growth, we often see venture capital expended at an alarming rate, mostly in the areas of IT systems and staffing.
This is due to the dystopia that emerges as infrastructure requirements temporarily outpace revenue. The exponentially rising costs of server capacity, bandwidth, security and redundancy often spell disaster for up and coming businesses. The successful IT administrator will steer clear of the red ink by examining technology challenges from a deeper perspective, finding efficient solutions rather than throwing money around.
Programming Backgrounds Bring Efficiency to IT
Some IT admins desperately want to avoid IT platform complexity and costs, so they attempt to build their own utilities as needed, completely from scratch. While we appreciate the enthusiasm, this approach often goes very wrong. It can leave the admin on the hook for major lapses in service due to outages or malware incursions. A better approach is to begin by establishing a trustworthy commercial administration platform, and then extend it programmatically.
These vary in scope and price from small business tools like Windows Admin Center or ManageEngine, to Enterprise class-tools like Ansible. But because today's IT departments exist in an endless world of configuration possibilities, it's unlikely that a single administration platform will precisely meet every requirement out of the box. This business use quagmire is expected in most commercial IT administration platforms, therefore modularity and extensibility are usually baked in.
For instance, Solarwinds uses its Orion development environment to integrate PowerShell scripts. ManageEngine provides APIs in order to integrate with existing infrastructure. Red Hat's Ansible is extensible using Python. Because of this trend toward user-extendable utilities, programming expertise is more valued than ever in the IT field.
You don't need a degree in Computer Science to work with these SDKs, because they're designed with IT departments in mind. Most allow the use of simple programming environments that admins can train for on the sidelines without needing to learn a whole new discipline. IT pros can usually achieve sufficient proficiency in Python over a month or two of spare-time online courses. Basic scripting prowess can be achieved in even less time.
With the ability to program your own utilities, new possibilities open for solving administration hurdles. Let's examine some specific scenarios where programming can save the IT Department:
A growing mid-sized business may have a number of Cisco devices in need of frequent NAT table updates. While this could be done manually when the company was small, it's now become an unmanageable burden that needs an automation solution. While Cisco's DNA Center is an amazing piece of kit, it's price tag north of $75,000 keeps it out of range for many businesses, and total overkill for this scenario. Network Address Table updates can be handled using a Cisco Devnet script, which could be plugged into Solarwinds or ManageEngine, allowing for network wide GUI-based NAT management.
Another IT department may receive a request from their developers to monitor all local and cloud SQL servers for transaction failures, producing a daily Kill report. While many admin tools such as ManageEngine offer SQL monitoring add-ons, they can be expensive and add unnecessary complexity. It turns out that a free Microsoft TechNet script is available that will produce an HTML report of all SQL transaction failures across servers. Another problem solved!
Programming can also be a huge benefit to the IT help desk. In its simplest form, help desk software accepts trouble tickets from users and allows help desk staff to assign the ticket to a tech for resolution. With some programming expertise, more advanced help desk software such as SolarWinds Service Desk can be extended to solve some problems automatically without the need for a tech's intervention. Common requests such as password resets or recovering an accidentally deleted file can often be scripted based on keywords in the ticket, allowing for user self-service.
It may be tempting to ask why a programming background is even necessary, given that so many IT problems have already been solved with publicly available utilities and scripts. The reason is that they will typically need to be customized for our particular application, therefore we need to know what we're looking at and how to get it ready for production. But it should be clear that the major complexities have already been solved, leaving us with the much simpler task of integrating them into our particular systems and workflow.
By looking at IT challenges from a programmer's perspective, new opportunities appear for cost savings and tighter integration of our admin tools. The use of commercial products should be carefully weighed against cooking our own utils. Home-brewed IT admin skills and tools will often make more sense for our business case, saving time and reducing complexity, allowing us to get more done with the software and staff we already have.