I am in QA now (about 15 years), but I was an application and driver developer for 12 years prior to that. I still develop code. I just don't do it to put food on the table. I was/am all five of the developers below.
I have noticed there are 5 classes of developers and the quality of their work depends on how they self-defined their job.
- I write code
- I write code that compiles
- I write code that compiles and works
- I write code that compiles and works well
- I write code that compiles and works well for a long time
The developer with 1/50 the defect density of his peers clearly wrote
code that compiled and worked well for a long time.
I also told his manager that the developer was slow only because of manager's incorrect definition of
done. The manager was using
The programmers says so; i.e. has submitted some pastiche of code for peer review. as the measure of done. I pointed out that if
done is defined as
passing a peer code review with no correction noted (regardless of the need for re-review), then most of his developers have
never completed their task and the guy we were discussing was done a over half the time. Suddenly, his careful, professional craftsmanship did not look so slow.
Code review helps every developer and designer become a careful, professional craftsman at developing or designing
software that compiles and will work well for a long time. Code review helps every developer and designer become the careful, professional craftsman they long to be. Code review are for the long view.
Any competent carpenter can produce a china cabinet in a day, but the guy who takes 15-20% longer, makes a cabinet which will be on the Antiques Roadshow 50 years from now.