Originally posted by: Markbnj
Originally posted by: chronodekar
Originally posted by: Crusty
If one person can't follow the rules what makes you think two people will?
The idea is that the 2 of them will understand the code. If more than 1 person understands the submitted code, there is a higher chance that it will be more readable than if it were by just 1 guy/gal.
(posted in a half-dazed state, might issue corrections later... ZZzzz... sorry in advance...)
Edit: (am a bit more sober now) I know an uphill battle when I see it guys. I'm laying down my arms on this one.
-sigh-
Seems that I have a one-man view point here.
Oh not at all, really. A lot of people agree with you. I guess for me it just seems like a management attempt to formalize something that has always existed, and works well on any close-knit team that does participatory analysis and regular code reviews. I'll be the first to admit I have a somewhat cynical and jaded view. I think there are almost no businesses outside the computer industry that really understand what they are doing when they develop their own software.
I visited a huge retailer years ago that was opening like a hundred new stores a year. I expressed my amazement at an undertaking like that, and my host told me about how standardized the designs and processes were. The whole thing was a machine. That's production, in
Jack Reeves' definition, where the design is fully specified and can be repeatedly executed to create output.
Business management tries to control programming as a production process. That's where we get metrics like lines of code, defects per kloc, function points, etc. Each one of these things that has come along has been an attempt by the layer of management that is responsible for what we do to understand what we do, and why it so often is hard to predict how well we will do.
Now imagine trying to apply the same management techniques to any other engineering or scientific research discipline. How many designs should a good automotive designer produce? How many molecules should a good biologist examine and reject in a certain time? Should architects designing a bridge always work together in a large room with their manager?
Moreover, how much molecular biology, automotive design, or architecture gets off-shored to the lowest bidder?
These are high-value, creative design processes. They are not production. That comes later. Programming is also a creative design process. For very fundamental reasons nothing we do is likely to ever change that. Our production comes later, too. It's called compilation, and it's both inconsequential and free. That's the problem in a nutshell. In most other businesses the ultimate costs of production dwarf the costs of design. System development is all design, and little production. It's entirely front-end, which means that the whole process from front to back is as risky and uncertain and dependent on individual inspiration and insight as any of the professions I mentioned above.
Most businesses, if they really understood system development, would not develop systems. And most of them shouldn't. Engaging in system development is no different from firing up any other expensive R&D process: all cost and no joy for years to come. You have to have a powerful long-term vision of how the software will improve your business to risk dollars on it. I think if more businesses really understood what they were getting into there would be less offshore development, more independent ISVs, a bigger support and services sector, and a crapload more respect for the people who, after all, are the only people on the planet who can do what we do.