February 14, 2020 // By Larry Smithmier
This article is about mentoring junior coders, but I am going to come at it from an oblique angle so bear with me a moment. When you take laundry from the dryer, how do you fold it? If you know that you are washing two loads (weekend warrior) do you wait to fold the first load until the second load is finished and fold it all at once? Do you fold from your laundry basket onto your bed, or do you pile all of the clothes on the bed and pull from there? Do you pick out your socks first, and hunt through until you find matches or do you pile them on the side and save them until last? Do you bring hangers to the clothes or clothes to the closet and then put them on the hangers? Do you hang t-shirts?
I would hope/guess that you have definite feelings of rightness and wrongness for at least one of the questions above. My 13-year-old son takes each shirt to the closet as soon as he puts it on a hanger. It drives me mad! That isn’t the right way! You put all of the shirts on hangers and take them all at once when you have no more to add. That is just how it is done. Or is it?
All senior developers have climbed certain mental hills often enough to wear paths in the ground. We know how certain problems ‘need to be solved’ and can take all sorts of mental shortcuts. Junior developers can’t. They may still be washing colors and whites in cold together. Our job is to show them the way.
At times the best we can do is help them by showing them how run separate loads so that they can treat the different types of clothes differently. We know and show how some data is relational and best stored in SQL while other data is not and should go into a document database. Our job is to help demonstrate the differences in the data that lead us to treat it differently.
You do know to wash your towels separately and to not use fabric softener on them right? The waxes is most fabric softeners reduces their ability to absorb moisture. Similarly, we now teach developers to externalize configuration items and treat code and configuration differently. Code and code like artifacts are one instance per release while configuration is one per release per environment.
We just get those things because we have been doing it for so long. The tricky part of becoming a mentor is maturing in your profession to the point that you can slow down and think through the whys and not just the hows. Then you have to be able to convey that experience in a consumable way to others. That means letting them make mistakes. It means having pink socks, or poorly written LINQ queries. In the end, my 13-year-old son is helping around the house by folding laundry and it is wonderful.