This is a response to a particular article, but also to all hundred and forty-two or so of the articles that are fear-mongering/rage-baiting devs, saying AI is coming for their jobs and they’ll be destitute before Christmas.
To be clear, I’m not saying AI won’t change our jobs.
However, it seems market has always been somewhat difficult for juniors and entry level folks. This isn’t just unique to our industry though. Without experience, people are reluctant to hire you, which leads to.. a lack of experience.
But it’s only going to get worse for budding, enthusiastic young people who want to be devs, because there’s an exponential increase in the amount of YouTube/TikTok/Instagram/XTwitter influencers telling them they can make 6 figures after 6 months, with a handful of certs and a bland GitHub project that’s a clone of some popular app of the month.
For mid and seniors, the job market is solidly “fine.” 7/10. Should get better and then worse again as is the usual cycle. Software jobs are inextricably tied to the interest rates, which have fluctuated for decades. More on that here.
Independent of the job market though, there’s a complete flood of people who think that “able to code” is the minimum skillset required to be a software developer.
To them I say this: Coding gets you in the door. It’s ironically, the lowest grade skill. Knowing a dozen languages and toolsets and docker and vim? Uninteresting to me.
The real skill set of a software developer at the senior level and above is:
- Communication
- Do you understand what customers and other stakeholders want?
- Can you rephrase technical terms & dev jargon into clear layman understandings?
- Can you code switch (linguistically) smoothly during discussions with different types of team members to help everyone be on the same page?
- Technical Analysis
- Can you translate user-based functional requests into code architecture and technical requirements?
- Can you look at a bug and know what part of your systems are involved in the execution of that portion of the software?
- Design
- Given a set of requirements, can you break it down into work items that communicate the design goals, follow a coherent architecture, and allocate the work in sensible, small and completable items to be divided amongst your team?
- Delivery
- Do you get stuff done by its deadline? Rarely do we assign urgent, important work to juniors. As I’ve heard it said to juniors/interns, “Don’t worry about going fast. If we cared about getting this done quickly, we wouldn’t give it to you.”
- Reliablity
- Can you make stuff that works, and works well, for a long time? Performance tested? Integration tested? Scalable? Maintainable? Understandable? Documented?
- Knowledge sharing and knowledge base. If you know Javascript, thats cool - but how much do you know about EU regulations on data collection in financial systems? That’ll impact how you build the website. Can you explain to new teammembers the legacy subsystem you’ve just been tasked to rebuild?
These skills come over time, and from purposefully cultivating them. Having good mentors that exhibit these traits is also a good way to make progress on them yourself. Maybe we’ll see more direction and instruction regarding these pieces, but the more we talk about them, the more realistic people’s expectations can be about what it really means (at least from this humble blogger’s perspective) to be a senior software developer.