You Let the Whole Team Down
I recently wrote about documenting your code properly and it got me thinking about my responsibilities as a developer who works with many other developers. A while back I realized that I had contributed a lot of undocumented or poorly documented features, and that was hurting my team. A feeling of dread would sweep over me every time a coworker would start asking about some bit of an application which I had written. It was embarrassing having to explain things over-and-over. Others had a hard time maintaining or updating things which I had written. As a developer I felt awful. I felt like a failure. I had let the whole team down.
Redemption Starts With Accountability
Instead of wallowing in self-pity I decided that I should take action. There would be no cowering from the mess I had made. It was a daunting task, but I was determined to fix it and to change myself—to take accountability for my role on the team.
I began documenting my new features with comments and actual documentation files(!). As I came across old code I would fill in missing comments. Whenever someone asked me about how a feature worked I took the time to write down the answer so that the next time the question would be answered before it was even asked.
An amazing thing then happened! What had once appeared like a terrible, unmaintainable code base began to look tame and organized. My code quality had not changed much, but people now understood it. Making changes to the application was no longer scary—for me or my coworkers. Fear comes from the unknown, and since things were now written in the documentation they were known. No longer did I feel like a burden to the team. I felt like I was a good, constructive, positive contributor team.
Holding Others Accountable
Having raised the expectations for myself, it was time to do the same for my coworkers. I began rejecting code changes—doing so respectfully—if they lacked tests, lacked good comments, or had other problems, as I talked about in my aforementioned post. Pretty soon another amazing thing happened. My team began rejecting my code changes if I had failed to meet our new higher standard (hey, I’m not perfect). And this was a really great thing! We were holding each other accountable for the quality of our applications. It’s not so much policing each other as it is watching each other’s back. For me there had developed a great feeling of unity and cooperation within the team. No longer do I feel like I’m letting the team down, but rather I feel like we are holding each other up. And things will keep getting better!