We’ll say (jokingly) that developers are interchangeable, that if you lose a developer today you’ll be able to replace them with another with little or no change.
For something like construction, that follows a well-defined standard (every stick-built house will follow the same builder’s code), software is a bit more… loose in its standards, which allows for more variability in what a developer understands and is good at.
This leads to developer affinities — based on a developer’s career and their interests, they can wildly diverge from another developer of the same programming stack.
I know a guy, he’s a systems guy. He
believes strongly in systems thinking and the Theory of Constraints. I
wouldn’t ask him to design and implement a user facing feature, but I
would put him in charge of any messaging or queuing in our system, and
I’d also ask him to champion Continuous Integration/Delivery because he
has an affinity towards that.
Every workplace has one of these, but I also knew someone who was spectacular at solving hard problems in the system. They weren’t ever going to be on the critical path for a release, but they’d get every hard production problem we could give them.
Neither of these developers are interchangable. If they were to leave finding a ‘hard problems’ person or a ‘systems thinking’ person is tough — and finding developers is tough enough for businesses. Nor could one swap for the other without things moving more slowly.
Until software development becomes rote, that will continue to be the case. It’s also why judging programmers against their peers can be fraught — no two programmers took exactly the same path and exhibit the same level of knowledge or affinity.
As a manager leading a team towards delivering value, finding out the affinities developers have is a good first step to maximizing everyone’s productivity and happiness.
– Think about the developers you work with.
Where would they excel? would it be in developing CI/CD pipelines?
optimizing the system? Writing back-end features? Focusing on
user-facing design and those features? Do they have a knack for fixing
bugs in a certain area of the system?
– Are they currently working in those areas? If not, why not?