Design sessions can often become emotional but this is not what I am talking about. People have strong feelings about the right and wrong way to do things but this is not what I want to address.
I want to try to describe the emotional feelings that one gets when a design idea is proposed. These aren't the strong passions of right or wrong but more of a gentle tickle deep inside that something is wrong.
We have all read articles on the "art" of programming and design. We have seen and experienced the best designers become the worst teachers. There is much written on the levels of knowledge from:
- I don't know how much I don't know.
- I have studied the process and am comfortable with it.
- This process is crap and these are the improvements we need to make.
- I understand thing well enough that I can explain it in simple terms.
we all exist at all levels. On many computing subjects I have no clue how ignorant I am and on others I teach.
I experienced a level 3 yesterday that went something like this:
Ed: Yes, you should replace VSS with CVS.
Customer: But CVS can't do file linking across branches. We only want to have to make a change once for all the product branches.
Ed: While that sounds like an advantage, it is actually the most horrific situation you could possible create for yourself.
I don't think I conveyed this statement quite as strongly as I might have but I couldn't articulate why file level release versioning was such a bad idea. I explained how I would manage it with branch and merge techniques in CVS and I think they saw this as a possible alternative but I didn't have the knowledge necessary to explain that the process they were using was exactly the thing that was killing their development throughput.
They gave me some hints to their atrocities, "We make developers send emails to the configuration team to check in and out files" and "The last release is managed on the O: drive because it was too difficult to manage in VSS".
Perhaps I could have got into the mathematics of why X files with Y differences takes Z brain hours to manage and the slope of the graph looks more like Everest than a manageable process.
So what is this emotional link we get with a set of ideas. Perhaps emotional is the wrong word, is it a 6th sense, intuition or perhaps just random gas.
Anyway, I have no answers, just experiences.
1 comment:
Glad to see you are blogging more!
What you refer to here is the difference between a Practitioner, Journeyman, and Master.
A Practitioner has learned how to take examples and apply them to the problem at hand.
A Journeyman has lived through a production release and has real people using a program he wrote. Just as bank tellers are trained to detect counterfeit money by handling real money, the journeyman knows defective code when he sees it and why it is defective.
The Master has released more than one product into a production environment. Not only does a master know how to write code, he also understands why and when to use a certain technique. His in depth knowledge allows him to know when to break certain "rules" of programming.
It sounds to me like you are a Master dealing with Practitioners! Maybe once they handle the money a little more they will understand. It will be a long time though before they know when to break the rules.
- Rob
Post a Comment