Yesterday, Neil Ford presented "On the lam from from the furniture police" as keynote to Atlanta DevNexus conference. In it he commented on all the ways that corporate workplaces inhibit 'knowledge worker' productivity. One of key points that stuck in my head were his examples of how far companies will go to maintain 'standards' no matter how ridiculous the enforcement of standards becomes.
The talk brought to mind a few quotes from Peter F Drucker:
"Efficiency is doing things right, effectiveness is doing the right things."
"There is nothing so useless as doing efficiently that which should not be done at all."
"What gets measured gets managed."
Corporations can measure and therefore manage the tangible - IDE software, Source Repository, types of UML diagrams used in code documentation. Good developers do appear to share some common philosophies for example, DRY, separation of concerns, testability. But what inevitably happens when companies try to measure these things? We lose the spirit of the art in order to adhere to the letter of the law defined by an inflexible, but measurable, standard.
You know good code when you see it. You know a good developer when you work with them. A system of peer review is the only reliable way to measure the true effectiveness of knowledge workers. It is also the only way to provide meaningful feedback that drives increased effectiveness.
How do you foster a culture that standardizes effective choice of tools for problem to be solved? Does coding style at your workplace measure reusability and extensibility or are you simply reformatting files to ensure 'proper' parenthesis placement? Who gives the measure of your work? Is it your manager or your peers? Do you find yourself going to ridiculous lengths to meet those expectations?