I am occasionally asked for career advice by people wanting to get into the industry, for example, high-schoolers deciding on career choices. One situation that frequently comes up in this situation is people who love programming and want to get a job being a programmer. They ask, “How can I get a job as a programmer? Because I love programming.”
I too love programming, and so naturally my initial thought is to say, “Learn to program. Maybe pursue a college degree in computer science.” But there’s more to it than that, and in fact, thinking about this leads to some interesting thoughts about anyone in the technology industry.
I still give the “Learn to program” advice, but my industry experience has led me to add something important to this: yes, you need to learn to program, and all about pointers, and recursion, and loops, and data structures, and software development lifecycles, and so forth. But that’s just learning to use the tools. That’s like, learning how to use a 3-D printer, but not knowing what you’re going to build with it.
Knowing how to write good code is definitely part of it, but you have to know how to DO something with that code.
Thus, the trick is to pick some domain that you have an interest in or knowledge in and combine your coding skill with that domain knowledge as well.
- Know about airplanes? Write code to simulate planes flying.
- Know about medicine or healthcare? Write code to do imaging analysis and big data management, or to manage patient records and medical appointments.
- Know about art? UI/UX design is in HUGE demand.
- Know about building things? Write code for 3-D printers, or to manage manufacturing logistics and inventory.
- Know about accounting? Well, there’s plenty of dev shops that need help there, knowing how to reconcile purchase orders and receipts.
For an aspiring software developer, that’s what makes you valuable to an employer, not someone who can just write code, but someone who can write code to solve real-world problems for people. There are honestly very few (relatively speaking) “pure” programming jobs where you’re just writing operating system or compiler code. For most programming jobs you need to know how to use your programming in conjunction with some other industry knowledge.
And you can see the obvious parallel for an experienced developer, or a business leader as well. You might have built the coolest, neatest, most innovative tool ever, but unless there’s contextual knowledge combined with it, to actually solve some real-world problem from someone with real-world money to pay you, then it doesn’t matter.