I am lucky enough to work with a small team of fantastic engineers who truly care about their customers. If you are not that lucky, this letter is for you to share with your engineering team.
Your job is not to write code.
Your job is to improve our product for our users. If you want to get technical about it, your job is to improve our product for our users in a way that improves the key metrics of the company.
For one thing, you need to make sure that the code you write (writing code is still one of the main things you will do when doing your job, by the way) runs the way it should, even on users’ machines.
Remember, your job is not just to ship something. It’s to ship something that improves our product for our customers. You can’t know it will do that unless you check that it runs in the way it’s supposed to.
We need to spend less time demanding that you write features and more time asking you to improve our product for our users. If we’re not doing that, I strongly suggest you ask us to. If we still refuse, you should leave and find an environment that lets you do your job.
No matter what our job titles, our jobs are all the same — to make the product better for our users. Every day.
We aren’t paid to think. We aren’t paid to write code. We’re paid to deliver a product. Our knowledge, skills, attitude, all of the attributes that could make us effective programmers don’t mean anything if we can’t deliver a working product to our customers.
We’re not paid to just code, we’re not paid to just think, we’re paid to do both in enough measure that we’re able to develop a product that solves a problem. Ultimately, we’re paid to be pragmatic, we’re paid to be smart, and we’re paid to deliver. Nothing else matters.