An old mentor of mine told me something interesting one time. He was the manager of a team that developed software to simulate the flight of airplanes. He said to me, “I’d rather hire an aerospace engineer and teach them to write code, than hire a computer scientist and try to teach them aerospace engineering.”
I do get what he’s saying. In his particular case it might be a good idea; aerospace engineering is a really challenging field. And this aligns with a business idea that “anyone can code”. Which is maybe true to an extent.
The reality is, today everything is basically software. Something as simple as a $10 scientific calculator, or a microwave, or an elevator, to something as complex as an Airbus A380 or a skyscraper’s environmental systems. All of those have lots of software in them, either within the devices themselves or in controller systems. In conversations with people, I’ve learned lots of fascinating things such as the cash register at your grocery store is probably a version of Linux with a GUI app running.
In my experience, Computer Science used to be a “catch-all” degree for anything computers. Wanted to be in IT? Software development? Algorithms and math? Build computers? Computer Science! I remember being taught, especially at the graduate level, that this is not really what Computer Science is about. CS is about the mathematics and algorithms used to construct programming languages, digital logic interactions with data, and information theory. Although these are certainly related to IT or networking, CS is really more about mathematics and the computer is just a tool for understanding a real-world implementation.
There are a lot of divided opinions on this but I believe that anyone can learn to code, and in fact should (just like I think everyone should take Intro to Statistics and Probability, but I digress). Not everyone will publish their own app to the Apple App Store, but anyone can learn to build Alexa skills to help themselves with daily tasks or home automation. Coding skills also help with things you maybe never would have thought of, like programming your Christmas lights on your house or brewing beer.
If you are reading this blog, then there’s probably one of two situations: either you’re a programmer, or you’re not.
- If you are not a programmer, you should know how to code, even if it’s the basics of a scripting language
If you are involved in the technology industry (and you probably are whether you think so or not) then you should probably learn the basics of software development. There are so many courses and materials available nowadays to teach yourself. Just some quick searching and I found these high-quality resources:
https://studio.code.org/courses
If nothing else, learning how to code will help you train your brain to think about processes and logic in a way that will help you do everything better.
- If you ARE a programmer, pick a domain beyond pure tech and learn it
But keep in mind that knowing how to code is only part of the issue. It’s about how to use that code to solve a problem. And to do that you have to understand the problems you are trying to solve. You might already be an expert in another field. If so, great! If not, then look at who your customers are and what industry you support. Are there books you can read? YouTube videos to watch? Maybe even introductory seminars to attend? Learning more about the context and background of the domain your software runs in can help you better make those tiny decisions that pop up as you are writing code: Should this button be blue or red? Should I show a running total of these amounts? Does this need to work on a tablet? A phone? In the dark? In the cold wearing gloves?
In either case above, you can improve your job performance, and in many cases yourself as well, by understanding how software intersects and interacts with whatever industry or situation you are in.