Second, create visibility. This rests squarely in the hands of engineering leadership. We’re not a terribly confrontational bunch. We tend not to like to have uncomfortable conversations. But we’ve got to do it anyway. I’m speaking to myself here, as well as all my peers. Create relationships with your counterparts in product and sales and make sure that, each time this happens, everyone knows exactly what was traded off in order to make the sale happen. Don’t be a dick about it, just convey facts. If you can, trace it all the way to other sales that didn’t happen because the product wasn’t built that would have enabled them. Articulate the cost in terms that make sense to sales people. Don’t just assume your gripes will be understood in a salad of engineering speak. Don’t just complain once. Complain repeatedly and constructively and to the right people. Say it in words that a team player would say, not a disgruntled do-nothing. But do, in fact, say it. And don’t be afraid to make people uncomfortable, including yourself.
There’s also a cost to developer attrition. Especially in this tight labor market, why would the most talented developers stick around for this kind of treatment? They wouldn’t, that’s the answer. Pretty soon you have a negative self-reinforcement cycle where bad developers stay and good developers leave and, eventually, no company at all to sell for. Think that’s extreme? I’ve seen it, several times, with my own eyes.
C, C++, Java, HTML, Python and PHP are the common ones, but don’t stop there. Every year, new programming languages make their entry; so if you are a developer, make it a point to learn at least one every year.