Training
11 Feb 2025
Over the last few months, I’ve spent a lot of energy learning. In true form, I’ve jumped into the deep end across a number of things - some of which have been self-study of sorts, but some have been more formal and structured. In particular, my time training with Civil Air Patrol and my time as a student pilot have really started getting me thinking about training in my career.
I’ve long felt like the software industry underinvests in software engineers. It’s kind of bonkers really - most, if any, college grads are not fully equipped to hit the ground running as an entry-level software engineer. The expectation is that new engineers – either brand new to the industry or just new to a team or role, will learn the skills they need on the job, maybe assisted via informal mentorship and pairing.
Nothing really changes as engineers progress through their career. There may be some formal training opportunities, but they are generally few and far between. Engineers are generally expected to stay current on their own. Some front-line managers are good at encouraging and guiding their teams, but in my experience at least, that’s not terribly common.
The net result, at least in my opinion, is:
- Engineers that don’t have good managers early in their careers, have challenges learning informally from their peers, or have an inherent motivation or passion for building software, stall out in their career growth. Sometimes switching jobs helps
- Senior engineers can be, and often are, incredibly under-developed in some key skill sets that are critical for continued career advancement. Being a strong coder only gets you so far - at some point, knowing how to lead, influence, delegate, and motivate is very important – even for roles that are technically labeled individual contributors.
- Training and education is generally viewed as a less impactful activity for engineers to engage in, both as a student and a teacher. This will be heavily manager-dependent, but often front-line managers are more focused on meeting aggressive short-term goals, and are less incentivized or focused on helping to shape the broader organization or the longer-term development of their engineers.
- Short average tenures for software engineers also make it less attractive to spend a lot of time and effort developing engineering talent.
There’s also a lot of cultural resistance to formalized training. I’ve seen a lot of engineers pass around the answers for mandatory compliance training, or talk about how to otherwise complete it as fast as possible. That’s a bit counter-productive - especially when that compliance training includes some pretty important topics like the OWASP top 10!
While training isn’t going to make engineers proficient or capable, it does really help build a common understanding across a number of people and helps to ensure that everyone is familiar with and using a shared language. It’s a bummer that many engineers (and managers!) look at training as a waste of time, or as a secondary concern to shipping code or fixing bugs. In reality, I think this is a missed opportunity for leveling up the industry as a whole.
It’s certainly not a simple problem to solve for. But I do think that, should I return to the software industry, maybe I’ll find some fullfilment from a role where I’m able to, in part, help better train and equip engineers get up to speed, stay more proficient, and expand their skillsets. Hopefully I would be able to help establish a more formal or structured training program, and try to help the industry (or at least my little part of it) move a little further away from adhoc, informal, inconsistent, and inefficient individualized training.