“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.” ~ Refactoring, Martin Fowler with Kent Beck, 1996
What if good programming is about making code understandable to other humans?
What if one of those humans is you?
Understanding means you feel comfortable and confident changing other people's code.
That is - with little or no perplexity.
Update your interview process
During the job interview you need to check the candidate's attitude towards knowledge sharing and
how they can actually do it.
For that we recommend adding screening for "empathy”.
It can be simple as asking them:
do they write code so that other developers can understand it?
what their approach is to answering questions about the systems they have built?
The goal is to set the tone that you expect your developers to think not just about how to build the systems,
but also about the people who are going to use them or change them.
Update your systems of recognition and reward
Look at what your software development organization is celebrating, paying, and promoting,
and make sure you have rules and policies that make the knowledge sharing better whatever that looks like.
To experience how policies affect collaboration and
then productivity you can use the Kanban Policy Game.
Promoting knowledge sharing is a cultural change.
Cultural changes that don't involve changes to what is valued when it comes to recognition
and rewards are destined to failure.
If you only promote people who solve technical problems,
you're going to have a hard time retaining the people who do the work to enable knowledge sharing in the organization.
There will be an up-front cost as you change the way people work.
Initially, Your teams are going to spend more time talking amongst themselves and to customers,
and less time purely writing code.
They may complete fewer tickets or other process-oriented measures of productivity,
and the pace of work might look slower.
Over time, their capability will increase which will be manifested in what is produced to be better,
as measured by customer surveys, adoption, migration timelines, and eventually, engineering productivity.