The most important skill of senior developers, working in teams, is to be able to pass down skills to junior developers.
The best way to pass skills is by using pair programming. Pair programming is a practice with many benefits, one of them passing knowledge with direct interaction.
While pair programming should be the main tool used to pass skills to other developers, different techniques should be used in different scenarios. The scenarios present themselves at different stages depending on the project and its maturity.
There are many adversities in passing skills to new developers, depending on the type of project, and the stage of the project:
- Business rules (domain)
- New technologies (R&D)
- Cryptic code bases (legacy code)
When complexity in projects comes from complex domains
, the best way to catch up the new people with the project is to talk to the business analysts about the project. The business analysts and developers can come in a consensus of what is the common language in the project, ubiquitous language
. Then they can start to build new behavior based tests
. Behavior based tests check that the basic operational rules are not violated. Therefore, all changes passing tests will be in-line with the business vision. The behavioral tests will prevent the new developers from altering logic that will affect any stakeholders.
When dealing with R&D, one of the biggest challenges is bringing people up to speed on proprietary, cutting edge or obscure technologies. The best way is to build materials for them to learn on their own, just the basics. This is of course complementary to shadowing senior developers, because this way they will be able to also learn debugging patterns and undocumented parts of unusual technologies.
For cryptic code
, the only thing that helps are a large time commitments and pairing based refactoring
. They are required to help the new people whenever they have questions. Whenever they find something they do not understand, make them write it on the project documentation so the next person will have an easier time getting accustomed to the code.
General best practices:
Do not have them shoulder surfing for days. Let them drive in pair programming. In shoulder surfing lessons it is possible to get the big picture but the details are lost. Without writing code people have a hard time learning keyboard shortcuts, locations of functions and they miss kinesthetic learning.
The most important thing to remember. Be professional, honest and approachable. I have worked in several teams where developers are afraid to ask other developers for assistance because they are treated as ‘n00bs’. By being professional you become a role model. By being honest people will trust when you point out their flaws or strengths. Finally, by being approachable, when they make a bad mistake, they will let you know right away. Then the error can corrected as soon as possible.