The Blind Leading The Blind
I have a number of recent example of people starting tech careers 5 years into a different career. They're already SO strong on the non-code aspects of programming - partly I'm sure because of their personalities but also because they've had some time to figure out how to be an adult with a job. Problem solving, teamwork, self-teaching, communication, attention to detail, organization, etc. These people are invaluable team members long before their technical contributions justify their salaries.
So that's been making me think we need to value non-code skills much more highly and explicitly. But resumes, interviews, the whole hiring process is set up to focus on technical ability. Sure, the best resumes, the best interviews, the best hiring processes do at least acknowledge non-code skills. But the industry as a whole certainly doesn't. We represent ourselves as front-end devs instead of INTJ devs or conflict-resolution devs or empathic devs or devs who make it fun to come to work. We try to hire people with CS degrees and 5 years of AJAX. We've decided to value entire careers on a small technical cross-section, and we're just as successful as evaluating a tree by its rings. It's kind of possible but misses so much.
I think part of the reason we don't value non-code skills is because we don't have any frameworks for discussion and evaluation, no ladders and metrics to support and measure progress. It's hard enough with technical concepts, which are arguably objective compared to super-subjectives like "communication." I took a first shot at a piece of a framework, but it's far from perfect.
The Walled Garden Atop The Hill
Hiring devs is really hard, and I don't think it's news to anyone that the pipeline is part of the problem. Currently, most people enter the programming industry through a CS degree, self-taught, or bootcamps (very new). All of those paths are valid and have their own pros and cons, but all of them are hugely privileged. CS degree means you can go to college. Self-taught means you have a computer, down time, and probably technical friends to ask when you get stuck. Bootcamps often mean you can scrape together $10k.
We desperately need new paths to success and we desperately need to lower the barriers to entry. Our current approach is so black-and-white. Can you code? Here's $70k+. Can't code? GTFO. We need more coding-adjacent spaces so people have the opportunity to make the jump.
I think there's something fundamentally important in the combination of making-new-paths and valuing-non-code-skills. I'm not sure yet what it is; I want to explore each idea independently. But to make this a little more concrete I do have a strawman proposal for how to bring these things together. Components of my proposal:
1. HIRE LITERALLY ANYONE
Select them as much as possible based on non-code skills, but I'm not convinced we can do a great job of that yet. Goodness knows the way we're hiring people right now based on code isn't any better than random selection. So maybe just hire people who are excited. And specifically hire out of underrepresented communities.
2. Fill their time as follows
- Doing actual work 'around' programming - testing, project management, etc. They already have the non-code skills, let's get some value from them. We're paying them for a reason.
- Rubber-ducking with a senior developer. Just sit there and watch/talk to them. This is not pairing.
- But also, pairing.
- Explicit code training.
3. Start them at $40k or something livable
This rate will increase by $10k every six months as they progress through a two-year program. These raises aren't arbitrary, they represent the actual value the employee is providing. (ok, it probably does include a bit of a premium to incentivize them to get all the way through the funnel, but hopefully their non-code skills are actually worth this much). Hopefully we also have some standardized ways to evaluate people's progress and adjust appropriately. The end goal here is to create a sustainable path for people to become developers, there aren't necessarily plateaus available at each of these salary levels.
Squeezing The Grapes
Why isn't this happening already? I think actually it is, or almost is, in many ways. People are talking about these problems and trying out some solutions. That's why I'm hopeful it's a realistically addressable problem.
But to the extent it isn't... small companies don't have the bandwidth to develop and manage this entire pipeline, especially the sourcing and curriculum pieces. Large companies, while potentially having the resources, are going to create hugely varied implementations, most of which probably suck. To truly create a new industry inroad, we need someone focused on this at the industry level.
Riding Into The Sunrise
The time is right for something like this. So much work has been done on so many aspects of this problem. Bootcamps have identified a big piece of it and have been very successful addressing that piece. Most bootcamps have hiring rates near 100%. Companies are trying to lower the bar, they just don't know how.
Similarly, there's an entire industry around teams and non-coding skills - it just hasn't really penetrated the dev community. This is why we have so many blog posts titled "You're a dev promoted to manager? Here's how to people". If we had more value on non-coding skills before you got to management we wouldn't need those blog posts. Programming has definitely shed the loner-in-a-basement stigma (at least inside the industry), we're ready for the next step.
I don't know the answers. I don't know the right industry-level vehicle to make this happen. Maybe a few dozen conference talks would be just as effective. Maybe bootcamps are ready to branch out to a less centralized model or alternative financial arrangements. Maybe a new company or nonprofit can address these ideas.
So what I need now is a reality check. Am I making sense? Have I missed something obvious (in my assumptions or in the work already being done)? And of course I'm also very interested in reactions and additions to all of this. What are the opportunities and challenges for moving this discussion forward?
Thanks for reading :) Let's blow these doors open.