Letter to a Lead

Wednesday 28 August 2013 at 12:26 BST

Dear Developer,

Thank you for taking the time to review my pull request. I have to admit, it made my heart sing when you accepted it. The lack of a human touch did not diminish the sweet joy I felt when I received an automated email telling me that you had judged my code worthy to be folded into your most noble of pursuits, to be treated as a brother to the code you wrote with your own hand, to be respected as though you yourself had crafted it.

Some minutes go by, then hours, then days. But then! Another email, this one a question: would it be possible to make an ever-so-small change to the product? Aha, I think! This is my chance! Of course it's possible—I myself wrote the very module that enables your desires, and now I shall explain them to you! Of course, our dear developer deserves a lot of the credit for building such an exquisite masterpiece that I was able to so effortlessly add my own touch, but you will pardon my vice as I take pride in my own contributions to the works. And so I begin, and I pull down the changes to ensure that I make no mistake in explaining the various interfaces that make up the customisation that turns your wishes into reality.

A grin turns to puzzlement; puzzlement gives way to a frown. My code? It is not there. It is as if it were never to exist, for no trace of any of the files I poured my heart and soul into can be found. Where is it, I wonder? I go to the immutable log, for it tells all, and ask it: where has it gone? Reverted, it says, undone, revoked, cast away as trash for the foxes and the rats, and all within hours of review.

My heart starts to pound. I have nowhere else to turn; I send you a message. My hands shake as I type the words, "why?"

Within minutes, you come back to me. "Your change broke the entire app." I stare, aghast at the message, apologetic and confused, for the changes worked well on my machine. And did you not review it? Examine the code and ensure it was not foolish, deploy it and ensure it would run as desired? When you brought it into your family, was there no consideration of whether it would bring harmony to the code base?

Confusion gives way to anger as I realise you had no intention of ever telling me, had I not asked. The feature deemed unimportant, the code deemed unworthy, but how? We have the same end; we are building for the same purpose. This is not for my enjoyment, but for the customer's, both yours and mine. He has asked and I have given, and you have thrown it away as if it were nothing.

I ask you, is the purpose of "owning" the code for your benefit or for the products? The product is what is important, not your ego or mine. We meet the demands placed upon us by our customers, not by you, and we build to satisfy them. You are the gatekeeper, but this is not a bestowment, it is a responsibility. I am new to this, and you are not. If I fail, you must teach me, not brush me aside as if my contributions are worth nothing, for the only contributions I have made, I make to please our customer.

So forgive me, dear developer, as I make a small request. Perhaps it is not my place; as the newcomer to this team, I am unsure of where I sit, and you are so very far away. Maybe it is just lost communication? But I think not. Your tone and abruptness has convinced me otherwise. So I ask this of you, dear developer, so that I might help you find the way.

Dear developer, don't be a dick.

Your faithful colleague,

Samir Talwar.


If you enjoyed this post, you can subscribe to this blog using Atom.

Maybe you have something to say. You can email me or toot at me. I love feedback. I also love gigantic compliments, so please send those too.

Please feel free to share this on any and all good social networks.

This article is licensed under the Creative Commons Attribution 4.0 International Public License (CC-BY-4.0).