Software engineering is a meritocracy; if it’s not already true, at least it’s a noble goal to aspire to, right? After all, to be truly judged on the sole merit of your technical ability and work ought to mean that the accolades are showered upon those who’ve rightfully earned them, on that axis which only cares about raw programming acumen, anyway.
Well, except that the real world doesn’t work that way. I ran across this piece on an engineer leaving big-bad Microsoft to go for a startup, and it’s for all the reasons you’d suspect: lack of impact, heavy bureaucracy, reviews, and all that big-company crap that startups use to compensate underwhelming equity grants and a stiff downgrade in pay. And it’s not just MSFT either; I’ve gotten the same feedback at Google, my first job at a mid-sized company, and at startups that have been around for 5 years and 5 months respectively.
It may go against our engineering moral fiber to have to talk about our achievements rather than simply show them, but reframed as a communication problem, it’s akin to every other piece of human behavior: marketing, sales, and branding work against other people – engineers and non-engineers alike – and it’s much easier to change our approach to the problem rather than try to “fix” the social API that favors vocal exposition of deeds performed.
Once there are more than just one engineer working on a project, the cost of communication follows something of a logarithmic curve, until it completely breaks down at scale and a new system is required. Repeat a few more times with an order of magnitude of growth per iteration, and the resulting hierarchy is fractally complex, with the unpredictability of human relations and behavior thrown in. In such a complex system with multiple discrete actors, the most effective algorithm to communicate importance may be just the undeterred broadcasting of events (e.g., status updates) coupled with event sinks employing strong discriminatory filters.