Be Careful What You Optimize For
In two recent posts, I wrote about the notions of clever and dumb code, and the possible implications of their usage in their every-day language. There’s a particular point of interest related to these posts:
A common – and very understandable – motivation for requiring code to be “dumb” is the reasoning that if the code was dumb, then less skilled – and less paid – programmers could take on software development.
This is anther example how doing (or thinking) the “obvious” is a clear sign of shortsightedness.
Aside from evidence that mediocrity costs more, there is one more interesting long-term effect:
A demand for low standards will produce low standards.
Somewhere, I think it could have been the Lean Development Book1, I’ve read that staff always responds to the messages of its management. Unfortunately, as with any communication, it is not the spoken, but the non-verbal messages, and the implicit values hidden therein, that are most influential.
So, if management asks for less skilled programmers, even though not explicitly or intentionally, it’ll get them. Not immediately perhaps. But with time, the really skilled programmers are likely to leave a place where their skills are obviously not valued. Competence proliferates where competence is in high demand. Likely, where “cheap” work is in high demand, it’ll proliferate, too.
On the long run, every individual or organization will eventually reach their optimization goals.
So, to paraphrase a famous saying:
Be careful what you optimize for, lest it come true!
- anyway one of the books that have changed my way of thinking about both doing and managing software development a lot [↩]