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
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?