Thursday, July 24, 2008

Peer Review

Why are some people against having their work reviewed by their peers?

Commonly called a "peer review" in academia, the concept revolves around letting other people knowledge in the same field comment on your paper (design, theory or observation) prior to "publishing" it.  Specifically to the IT world a peer review is when a design is reviewed by knowledgeable people in an effort to determine any flaws in the design.  I will grant you that these reviews can be brutal on the ego, but aren't they the right thing to do anyway?

One of our primary objectives in our job should be to produce quality work.  Now, the exact measurements behind defining quality are highly contentious, but in general, the idea is to produce something that accomplishes the objective and does it as efficiently as possible.  One of the keys to creating a quality product is having a good design, one that is as simple as possible yet still satisfies all of the objectives and goals.

A good design.  How do you know if a design is good?  Well, one of the ways that the rest of the world  does it is through design reviews or peer reviews.  When a design has been completed it goes to someone else knowledgeable about the requirements so that they cam see if the design does indeed meet those requirements and does it in an efficient manner.  Seems pretty simple doesn't it?  So why don't we do it more often?

The Enterprise Architecture Working Group (EAWG) did this, to a very limited extent, when they reviewed the application architecture on various projects, but the problem was that at 50,000 feet everything looks blurry.  As a friend of mine used to say "Good from far, but far from good".  Understanding how someone is going to piece things together is important, but the details, the microscopic manipulations that occur on an individual program level are completely oblivious to everyone except for the designer and programmer.

Every critical piece should be peer reviewed to ensure that it is designed properly.  This means that if you are writing something that manipulates funds it needs to be peer reviewed.  If you are writing a mission critical import/export/reporting piece, it needs to be peer reviewed.  If you are writing a security component, it needs to be peer reviewed.

If it's never bee peer reviewed, never had an objective review of it's design, how are you every going to know if you designed something properly?  Is it fear that is stopping you?  Fear of people pointing out mistakes?  Or is it narcissistic in nature?

2 comments:

Unknown said...

People don' want their flaws pointed out. Pretty much it most of the time. If you didn't do something right, or if there is a more efficient way to do it, that means that the original person has to go back and fix it up.

I have worked on many projects where this is the case. You look at the application and it's pure garbage! Everything all over the place. No design patterns, no proper n-tier architecture, nothing. So what do you do? Well, you can talk to someone to fix it, but that someone usually isn't on the project anymore, or you try to fix it properly and make it more efficient. But if you try the latter, that might be looked at from the wrong point of view, as you wasting time, and most of the time, nobody cares, as long as the project gets out the door....

Unknown said...

"...as long as the project gets out the door ..."

It is sad to hear you say that as that is one of the differences between a quality application and just getting paid for doing a job. I play a game called World of Warcraft, from Blizzard. The philosphy behind the company is excellent as they deliver the game not when it is perfect, but when it is good enough for the client base. Nothing as complex as an MMORPG with its infinite diversity can ever be perfect and they realize that, but they do have a certain level of quality that they expect from the game and if what they are working on does not meet that level of quality they don't release it.

Their moto amongst the developers must be something along the lines of "...we'll release it only when it's ready ..." Too few companies adopt this attitude and it's a shame because it is not necessarily that large a step from where they are to where they need to be, it just takes some effort.