One of the things that established professions like medicine and law have that we as software developers don’t have is some form of mandatory mentoring. For doctors it is residency, for lawyers it is internships, even carpenters need to apprentice with a master carpenter before they can become a master themselves. But in software development there is no formal apprenticeship that we all go though and as a result there is a great deal of inconsistency in skills between developers.
Don’t get me wrong, I love the diversity in our industry. Different perspectives can often lead to breakthroughs but I also see how just having some basic knowledge in common would help us communicate better and think more clearly about the challenges we face.
The apprenticeship model has existed for thousands of years and it is alive and well in the software industry. A lot of us owe a great deal to those who have taught us on the job. I learn tons from my students and colleagues and feel it is my duty to give something back and share what I know–that’s why teaching is a good field for me.
I know very well that there are perhaps even greater benefits in mentoring than in being mentored. Being able to perform a skill represents a level of proficiency that is far surpassed by being able to teach it. Teaching is one of the fastest roads to mastery.
As developers we all must be great teachers. Our ideas are only as good as our ability to articulate and engage our fellow developers in them. We must not only do the right thing but be able to explain why we did it. This is a skill that great developers have.
One of my students in a recent Scrum Developer Certification training who was particularly generous with his time and had helped everyone in the class improve their skills, confided in me that he was once very closed to sharing with other developers and saw knowing something that others didn’t as a competitive advantage.
“What changed for you,” I asked.
He said he had a few hours waiting for a flight with Ward Cunningham. In those few hours he said Ward shared a lot of valuable things with him. He said, if someone as super-smart as Ward could be so open, he wanted to be the same way.
This man was changed forever and he is now a highly valued thought-leader in his organization. Of course, he always had the potential but it was one chance encounter with someone like Ward Cunningham that showed him another way he could be and that changed his life forever.
For me, being able to spend a few days with developers is the greatest honor. My deepest wish is that I can help people the way Ward helped this person, not just with more and better development techniques, but by being someone that also embodies the qualities of agility and someday, maybe, someone will say about me what this student said about Ward.