One of the resolutions that any IT professional should make and stick to for 2016 is to learn a programming language. Before anyone starts shouting and telling me that they aren't going to be a programmer just yet, let me clarify my thoughts around this. Learning a programming language is not going to make you a programmer overnight.
Computers are a very procedural thing. For all of the amazing things that we can do around location services, deep analytics, and artificial intelligence we are still working with a system that processes instructions. Those instructions must be clear and correct in order for a system to work correctly. Computers are not capable of context separation or intuition no matter how smart they may appear to be.
Learning a programming language isn't about writing apps for mobile phones or working on the dirty underbelly of a program that controls your business. Instead, you're learning how computers process information and evaluate instructions. You're learning how they think. And that helps you figure out what they're thinking when things start going wrong. Troubleshooting a network issue or a server malfunction is actually much faster when you understand why something is broken.
Take a simple problem like a race condition. This can have a huge security impact in your IT environment. It sounds ominous and scary. But it's really just a situation where two instructions are processed in parallel and whichever is completed first is executed. Now, that instruction may contain malicious code or it could just contain a conditional that causes something to be true all the time. The former is a huge security hole. But the latter case is a bad instruction that could just cause you a headache every once in a while.
By taking the time to sit down and think through how instructions are executed and processed, we gain insight into how to prevent things from becoming problems down the road. What about massive data entry? If you don't know how data is being read into your systems, you could end up with Little Bobby Tables running around:
The truth is that our personal and professional lives are governed now by programming languages at almost every level. Learning how to evaluate statements and conditions gives you a leg up on other professionals that don't know how to discern the secrets hiding under the surface in a modern computer system.
The other reason for learning a programming language is that you can understand how repetitive tasks can be automated and simplified. A staggering number of errors in computer systems are caused by errant data entry. But learning how software can do that hard work for you, you not only increase your productivity but you reduce the amount of incorrect data. You don't have to write multi-function parallel processing AI scripts. Something simple that takes input and produces output will get the job done with a minimum of effort.
Hour of Code series that is being positioned for kids everywhere. It's a bit simplistic, but it teaches the basics of syntax and constructs without being tied to a specific language. Once you know the basics, you can move on to something more formal, like Codecademy, which features lessons on many languages in bite-sized chunks that you can go through at your leisure.
These two resources will give you a huge advantage in your daily IT life as well as your personal computer interactions. When you learn to think like a compute you can learn to outthink them and solve problems before they happen. And that's a program that anyone can get down with.