Tuesday, December 16, 2008

The Last Line of Defense, in Soccer and Bug Catching...

I was a goalkeeper on my soccer team from about 8 years old through college. I didn't always like being the goalkeeper, but my coaches and teammates always liked putting me in goal anyway. It was stressful, nerve-wracking, and either very boring or way too exciting. Sure, sometimes I had my hero moments when I made a really great save, but other times I messed up and let a goal through that should have never gone through. Whenever I had a bad game my parents would remind me that "the ball has to pass through 10 other players before it gets to the goalkeeper." So, 10 other people messed up before the ball got to me, unfortunately my mess up as the goalkeeper was the most memorable and dramatic one.

So, how does this relate to a software project?

Well, the ball is a bug and the soccer team is each member and phase of the project. In many cases the bugs that are found post-launch are blamed on programmers or testing team, when in fact they could have been caught much earlier on.

What is the first line of defense? The offense.

From the very beginning, be sure to clarify requirements with the project stakeholders, the client or the end users. When possible, use prototyping to demonstrate how the application will work. Using a prototype will hopefully dig up more questions that will lead to defining the product more carefully.

Next, as you move back to the mid-fielders, make sure the technical, functional and design specifications are closely married to the requirements. Review specs with the client/users to ensure that everyone is on the same page with what the end product will be. A bug can just as easily be created in this phase of the project, by missing a critical requirement or misinterpreting the user's needs.

The defense is the programming team. Make sure the level of quality is consistent in this phase by holding peer code reviews, functionality checks and regularly merging all of the elements back in to be tested together. Programmers who develop independently might build perfect pieces of an application, but if not brought together often enough those incongruous pieces are useless.

The last line of defense, the goalkeeper, is the tester teamed with the programmer assigned to fixing those bugs. Of course this stage is critical, and to ensure the highest level of quality you want to make sure there is proper testing documents, adequate time to properly test and fix and then test again. Ideally there will be a full system test each time a new set of bug fixes is rolled out.

All of these players in the project are human, and they can all make mistakes. I haven't yet found a software solution to ensure that requirements are completely met 100% from start to finish, without some level of human intervention.

So, next time one of your end users finds a bug or the opposing team scores a goal...don't just blame it on the goalkeeper, take a look at a whole picture and figure out where else the mistakes could have been made and how to avoid them next time.

(as the referee whistle blows, the next play begins....)

good luck!

Tuesday, December 2, 2008

"Sending Confirmation", the slow and painful way

I continue to be amazed by the processes used at my older daughter's school. I have no doubt that they are doing an exceptional job teaching her and providing her with all of the tools she will need (and in the end that's what's most important anyway), but sortof just like one of the administrators put it to me a couple weeks back, when referring to technology "it's like the new immigrants are teaching the natives".

Natives = my daughter's Pre-K class

New Immigrants = their teachers

So, a week or so ago I get a call to schedule an appointment for my younger daughter to have an 'interview' for preschool. Won't use this space to get into the 'hows' and 'whys' of a preschool interview, but I'm sure they will see she is not a violent threat to her future classmates and will be happy to accept her. So, I gave the registrar my preferred date and timeslot and she said to me "Ok, you've got it, I'll send you a confirmation."

At that point we hung up and I thought for a second, "wait, does she have my email address to send the confirmation?"

And then for a quick happy second I thought "well, they must have a database of all the students and families and I'm sure my email address is in there."

That was just a quick second because the email never came and after checking my junk folder a few times I gave up on it ever coming at all. The confirmation was actually coming (gasp!) via postal mail. I won't go into the thought of how many trees their are wasting handing their communications via paper rather than electronically, but it's also just so inefficient when it comes to sharing information quickly!

This first call took place on a Friday. The following Monday morning I called back because I realized that I wanted to change the appointment and push it back two days. So, we found a new date and she penciled me in (literally!)

She then said "you can ignore the confirmation that you were sent now that we have changed the date." Oh, thanks for letting me know, that confirmation hasn't even arrived yet.

What I would suggest to them to save them time, money, paper, trees, etc... (any one of these will do):

  • Send me an email! Save the paper and postage.

  • Setup an electronic calendar that can be shared when appointments are made. Use Google calendar and shared events, or an Outlook calendar with meeting invites.

  • If sharing the electronic calendar is too complicated, than trust that I will write down my appointment (or enter it into my electronic calendar) and you will also write down yours. We are all adults here (and this can be the first 'test' to see if my younger daughter comes from a family organized enough to be a part of their school).

I should remind myself that I spend most of my day in a happy technology bubble, and I shouldn't have such high expectations of the teachers at the school. I don't expect them to walk around with blackberries, communicate with other teachers via Yammer, and share their class information via Ning sites. But, maybe little baby steps....try to incorporate email a little more into your regular communication.

What if they find out that I'm criticizing them, and decide to keep my younger daughter from attending their preschool??

Something tells me they probably don't surf the blogosphere much, so my thoughts are safe...