One of the many traits that separates a junior developer from someone with a little more experience is how they approach the idea of a "bug report". Many younger or inexperienced developers will rush ahead to solve a problem — even if it's not a bug — in order to prove themselves. However, a lot of times there is no bug in the code but in the process. When this happens, the issue quickly turns into a "learning opportunity" where communication and collaboration is far more useful a skill than coding.
A "learning opportunity" can be defined in one of the following ways:
- showing someone how to solve a problem using existing tools, be it software or otherwise
- discovering "friction"1 in a process, which can lead to a better understanding of a problem and — ideally — a more complete solution in the future
- identifying something new — usually with conversations that start "Is it possible to … ?" — that can be created to benefit a group of people
What's great about learning opportunities is that it offers a chance to communicate with people in a one-on-one fashion, build relationships, earn trust, and solve real problems. People who choose to rush ahead to simply solve a reported problem miss out on this crucial opportunity, which can result in some unfortunate consequences.
"Friction" is a word that I use to describe anything that prevents a person from easily completing a task. A task may be complicated or multi-step, but the tools should support the person working towards the goal.