The more the counter next to my years-in-tech metric increments upward, the more I find myself in situations where I talk about career path, skill decisions, and choices about specializations. It might be talking to a publication, on a panel, or one-on-one with someone who wants to get into, or ahead in, IT.
One of the questions that comes up a lot is something like, "Are we at the point where everyone in IT needs to learn to code?"
It's a logical consideration. With everything-as-code (infrastructure, network, observability, security, and more) becoming an ongoing talking point, people who never saw themselves as coders (folks who have focused and like to focus on the physical and/or hardware aspect) and not to mention those who flat-out don't like coding, are now asking themselves whether they will be forced into it by the tidal forces of technological change.
The answer I give when asked this is, "No. And also yes." Bold of me, right? Thankfully, there's more to my answer, "You don't need to learn to code, but you will be well served by developing a sense of code."
A few years back, one of my kids was really struggling with school. It was 2nd grade, nothing seemed to be clicking for them no matter what tricks we tried, and we were all trying to sort out a path forward. My wife and I expressed our anxiety to a wise and kind guidance counsellor. She told us a secret:
"By the 4th grade, all we need for them to have developed is a love of reading and a sense of math. That's all they need to move forward into the next level. If they have those two things they’ll catch up quickly."
The phrase "sense of math" was new to us, so we asked about it. The counselor described it as developing an base-level intuition of how numbers worked—the recognition that if you add 7+9, the answer must be bigger than 9 and less than 20.
I don’t believe all IT folks need to become hardcore developers. I also don't believe this everything-as-code movement is going to be as pervasive, all-encompassing, or reality-altering as some—mostly vendors who have a stake in things all shifting to everything-as-code—would like you to believe.
What I do believe is that we—from sysadmin to script kiddie; from dba to disaster recovery planner; from project manager to product manager—all should have, like my daughter’s 'sense of math', a sense of code.
By that I mean the ability to look at an existing piece of code and have an intuitive understanding of what it’s trying to accomplish. We should understand looping structures and logic statements, at least in the broadest strokes. We should be able to understand the handoff to a subroutine, what data a call to an external API is trying to grab, and the overall contours of the program flow.
Even if—ESPECIALLY IF—we ourselves couldn’t write that code, or any code at all, or even explain precisely how the program in front of us is going to achieve its result. Nevertheless, we should be comfortable with what it's meant to do.
"But why? I'll never use this!"
Look, I get it. We're all busy enough with the work in front of us without taking on a whole new skillset let alone a skillset we may not be particularly interested in. Some of us still bear the scars from being forced to learn (and even certify) in ISO 9000, ISO 9001, and ITIL 1, 2, or 3. Trust me, NOBODY really wanted to learn that stuff! So why should we spend our precious time on learning to code or even develop a 'sense of code'?
Because code is an intrinsic part of how we get our job done, even when that code isn't ours. Everything from installing to patching software can, and often does, involve a scripted (i.e. programmed) set of actions. The same goes for troubleshooting a problem especially when the vendor gets involved and wants you to "just run this and email me the .tar file it creates." Programmatic solutions are present during migrations from old hardware to new, from one vendor to another, and more.
Having a sense of code will help you quickly understand whether a process labeled "rtkit" is short for "rootkit" (bad) or "realtime kit" (not bad).
A sense of code will let you look at a dashboard and draw a connection from misconfigured storage to the poorly performing order entry portal and straight on to the business impact.
A sense of code is what you need if you want to take just a single, exploratory step toward (but not into) development by allowing you to imagine and then create automated routines, turning tedious tasks into simple commands.
Developing a sense of code doesn't require us to be, or become, developers. But it could help us take the next step forward in our careers, even if that step has nothing to do with code at all.
CTA: If you liked this post and want to learn more about developing a sense of code and advancing your engineering skills, I’d love to meet you at FutureStack 2022, the ultimate software engineering conference, May 17-19 in Las Vegas. You can register here: https://www.futurestack.com/VyPOLB?RefId=R-DEV