« The couple that blogs together... | Main | MT Upgrade »
May 26, 2005
Form an opinion, but don't make up your mind
I've been getting rather frustrated at work lately when I run into people who've made up their minds on a technical question before, it seems, they've gathered and analyzed sufficient data. Worse is when it comes out later that they've made their decisions not on knowledge, but on assumptions that could easily be demonstrated to be incorrect.
A hallmark of a good engineer is that when confronted with a problem, they immediately start to mentally solve it - making assumptions along the way. With more experience the time between hearing about a problem and having the rough draft of a solution decreases; previous similar solutions are dusted off, shaved to fit the new situation, and mentally whipped into shape.
An equally critical hallmark is that they not marry themselves to the assumptions and solution that they reached while the problem was still being described.
Good engineers re-use patterns heavily - eschewing reinvention in favor of adopting proven solutions - saving innovation for where it counts.
They are also conscious not to fall into the age old trap summed up by Baruch's Observation: "if all you have is a hammer, everything starts to look like a nail." In other words - patterns are good, but applying the same (or a small set) of patterns to the exclusion of open analysis is ungood.
Essentially, there's a fine line between sufficient analysis and analysis paralysis.
I've known otherwise very talented technical thinkers who fell prey to always finding one more thing to measure before making a decision - one more question that must be answered before a solution can be proposed, one more data point needed before conclusions can be drawn.
On the other hand, it's just as damaging to convince yourself that the first solution that comes to mind is the right one. It may be a feasible one, it may draw on a body of existing work and look attractively familiar, but it's rare that there's only one feasible solution to a technological problem - and the sooner you mentally narrow to a particular solution, the harder it is to objectively consider alternatives.
It's a mental latch function - very similar to the "idiot bit" phenomenon Jim McCarthy describes in Dynamics of Software Development.
Once you've decided that "the only way to solve the problem is to build it from scratch" you'll find ways to pick apart just about any off-the-self or hybrid solution.
One of the things at work is that good engineers like building things more than they like gluing things together, but part of being a good engineer is building the right thing. While re-inventing linked lists, or distributed object caches may be fun, it's often hard to argue that the resulting work product has added value to the project or organization.
I'm constantly amazed and frustrated by how many engineers fail to take these aspects into account - and once they've made up their mind, all the evidence and persuasive argument is hard pressed to change it. So ultimately, sometimes, someone above them in the organization who has considered these angles makes an edict - which ruffles feathers all around.
A situation that could have been avoided if people had taken just a bit more time before making up their minds.
Posted by dberger at May 26, 2005 5:23 PM