Working in the IT industry, there are challenges that individuals will encounter in their day-to-day work. Today, we will highlight a few tools and tricks for Ops Admins who are trying to get ahead of the game. Most of the tips are geared toward soft skills, since they can be used in a variety of situations rather than super technical, which go out of date easily.
The items I have listed should be combined to form a better understanding and knowledge base for solving problems and becoming a productive engineer or sysadmin. These “hacks” form most of the cornerstones of being a productive member of IT society and many companies.
Get It Working Before You Optimize
This idea has some roots in software development and engineering, but it definitely applies for operations folks as well. A lot of time and effort is spent prematurely optimizing.
This principle can be applied to complicated things like putting together a new system or network architecture to easier tasks like writing scripts or configuration management code.
An example of applying this logic to a complicated piece of architecture might be something like testing out a smaller component and getting it to work on a local machine. After playing around with things locally, you can start to add more complexity, but most importantly, make sure to get things working correctly first.
Once everything works correctly locally, a logical next step might be to build the architecture in an isolated test environment in a way that can’t cause any harm to other existing systems.
Knowing how to get a simple working solution is an incredibly valuable and pragmatic productivity skill. It’s much more efficient to work through complex problems one step at a time, breaking down each step into individual pieces and then being able to combine each step and component to create a workable solution.
Always Have a Backup
This rule can and should apply to both securing your data and to your problem solving approach. You never know when a backup copy of your project will come in handy; it may even save your or somebody else’s job.
Since company data forms much of the base pillar for any company, it should go without saying that this data should be treated as a valuable asset. As an engineer or sysadmin, one of your many roles is to protect the company data and assets.
It doesn’t matter what backup solution you pick, as long as it works. This can range from a set of scripts that get run on a Cron schedule to an entire infrastructure dedicated to backups that uses storage arrays, tape and cold storage.
The other side of this equation is ensuring that these backup plans are working. Nothing is worse than an elaborate backup system that costs tons of money and doesn’t work. Make sure to spend a little bit of extra time to make sure restores work as well as the initial backups.
Being the hero of the day when somebody accidentally deletes something will buy you major points in an otherwise disastrous scenario!
Find a Text Editor that Works for You
As admins and engineers, we often tend to spend much of our day at the command line writing scripts and code or performing other lower level tasks. Therefore, I think it is absolutely necessary to become proficient with the correct tools for the job.
For example, being able to edit files quickly and easily is great for productivity. I personally like Vi/Vim as a text editor because it is installed or easily accessible on most of the systems I work on. There are ports for Windows and some good resources out there about using Vim effectively in a Windows environment. The learning curve is the biggest downside of using Vim.
Learn to Code
I know there may be some disagreement on this one but I have found it very useful to know how to code for a variety of different reasons.
For one, it helps in collaboration with developers and understanding the types of problems they deal with. By being able to read, follow and understand the code developers write, it becomes much easier to work together to fix a problem or to come up with a solution to a technical challenge.
Increasingly, the line between dev and ops is being blurred. Recently the DevOps movement has become popular and operations folks need to be aware of development practices.
Some ops admins may be set in their ways, but I believe to move forward you must always be learning new things. Basically, if you aren’t willing to learn how to program in at least some capacity then it is very likely the industry will drive right past you and leave you in the dust.
More is (almost) always better, so knowledge of more languages will be helpful. I’d argue that knowing at least 2 languages should be the bare minimum. At the very least, learn your native scripting language. On Linux, that is usually Bash or some other variant and on Windows it’s PowerShell.
Get SmartFile’s Bash Commands Cheatsheet
Check out our cheatsheet and download our one pager so you can script without losing focus!
Scripting languages are a good first step into programming if you don’t already have familiarity. They can be used for pretty much anything you can think of, which is why they make great tools for automation.
As an operations person, writing scripts and automating tasks will make you a rare commodity because of your efficiency. Having worked as a Windows admin for a number of years, I know that in the past, scripting was not as common as it should have been in Windows infrastructures. With the power and flexibility that PowerShell offers, there is no reason not to learn it and to automate anything and everything.
Get Good at the Command Line Interface
Knowing how to do things from the command line for both Windows and Linux is a must-have skill for any operations admin worth their salt. This tip fits nicely with learning to code, especially when pairing a scripting language like Bash or PowerShell.
If you are new to the command line, learning this skill can be daunting and frustrating, but it will come in handy in the future. The longer you use command line interface (CLI), the more productive you become. Since new CLI tools are being developed all the time, you are constantly learning new tips and tricks to become more productive; the learning process never really stops. I have discovered over time that if you are trying to do something, there is more than likely a CLI tool to help accomplish the given task.
With the move towards API driver services, CLI tools have evolved so the tools are still able to run locally, but now have the ability to interact with the API. This is incredibly valuable.
For example, most cloud services now offer a public API with a CLI tool that wraps the functionality. If you are good with the CLI tool, you can do pretty much anything the website offers, including spinning up cloud servers or opening and closing tickets on sites like Github. You can use your imagination to come up with ideas, but the possibilities are nearly endless.
If you are interested in developing yourself and your skills, definitely learn how to get good with command line tools.
Learn Configuration Management
Configuration Management has been a wonderful boon for operations people in the past several years. Leveraging config management has given operations the ability to declare the blueprints of their infrastructure in code so that it can be managed in the same way as complicated software.
With config management, you can define what a server should look like and do and, with relative certainty, know that when you run your code you will get exactly what you expect across the board. This makes config management very appealing because it is scalable, reliable and provides the ability to audit through code versioning.
So when choosing a place to get started with config management, it doesn’t matter what Configuration Management tool you choose, just pick one. If you work with Python, then Ansible or Salt may be easier to understand and lower barriers to entry or learning curves. Likewise, if you are already comfortable with Ruby, then something like Chef or Puppet might make a better fit. Of course you should always use your own judgement and research as to which tool works best in your specific environment and scenario.
That said, config management tools make life as an administrator so much easier. When dealing with config management tools, you will probably hear a lot about idempotency. Idempotency refers to the logic of being able to run code over and over and know that it will not explode in your face. Using this idea, you can essentially glue the logic of creating and updating your infrastructure together and know that it will work across different platforms.
One nice thing about (most) config management tools is that they are all flexible enough at this point to double as orchestration and deployment tools as well. Using config management in such a way is not trivial. No matter what kind of tools you are using please use your best judgement when deciding whether your config management should also do deployments and orchestration.
Know Where to Look for Help
Everybody gets stuck on problems. I would argue that it is at least as important to find where to go to look for help as it is to find a solution. Finding the answer is part of the journey and should be treated as such.
Depending on the type of problem you are trying to solve, different outlets offer different forms of help. For example, if you are working on fixing an issue in an open source project that happens to be hosted on Github, it would make the most sense to go look there first to see if anybody else has seen the issue you found. More times than not, you will be able to find clues in the “issues” section of the project.
Make sure that you not only look through open issues but closed issues as well. Also make sure you understand the rules and etiquette for opening a new issue should you find a new bug in the project. Being respectful to the developers and members of the project goes along way and will usually benefit you. Typically the rules are similar but many projects have etiquette rules posted in the issues section when creating a new ticket, so please be aware.
IRC is great when you are looking for quick answers and looking through the GitHub issues is either too daunting or just doesn’t turn up many results. Most projects offer help through a Slack channel or IRC channel.
Slack is becoming increasingly popular and many folks are moving away from IRC-based chat rooms to publicly hosted Slack channels. Slack offers a lot of benefit over IRC, which is why many are making the change. It is easy to use and provides a nice set of communication tools to interface with others including a list of (growing) third-party integrations as well as text manipulation tools and a simple interface.
These are just a handful of tips for becoming a more effective sysadmin/engineer. Obviously this topic can reach pretty deeply.
I hope this post has shown readers tricks they aren’t familiar with or even sparked some interest to explore some of these topics in more depth. Let me know if you have any tips or tricks that you’d like to share.
Want More Tech Insight?
Learn more from Josh and other tech-insiders on the future of technology, including storage, security and system administration. Sign up today to get our free guide to IT compliance!
About Josh Reichardt
This is a guest post from Josh Reichardt, DevOps Engineer with about.me and the owner of Practical System Administration, where he writes about scripting, devops, virtualization, hardware and policies.