Saturday, February 26, 2005

SAD - Solitary Agile Develop(er|ment)

Part 2

Interactions

In SAD there are two different types of interactions. The first is the interaction between you and the customer(s). The second is an interaction with yourself. This may seem a bit strange at first, but once you set down a few ground rules you will begin to find methods and strategies which will keep you on top of your game. Back in September I saw a presentation on Agile Database Design by Scott Ambler. One of the things I found interesting which he noted is that "Programming is like Swimming, its dangerous to do it alone." But does that mean you should not be prepared if you find yourself in the middle of a lake?

I think the reason that Scott says this is because more often than not, the lone coder will not consider things such as reusability, maintenence, best practices, or coding standards when they code. They often just bang out the app with the thought that they will be the only one who will have to work on their code, and thus they can deal with any problems that may arise. Yet how many of us out there look at code we wrote 1 or 2 years ago and think "what the hell was I doing?" So to think about reuability and maintenence you are really only helping yourself in the long term.

SAD requires the developer to swim extra hard. In order to keep their head above water, they will not sacrifice the quality of thier code. The lone coder will avoid hacks and shortcuts just because nobody will notice.

In terms of interactions with the customer, this is one place where SAD will diverge from the Scrum method. Where scrum says only to interact with the customer through the Scrum master as a gateway, in SAD you are the Scrum master and the developer all in one. Interact with the customer as much as possible. There should ALWAYS be an open line of communication between you and the customer. They should feel free to communicate requirements to you and you should feel free to ask questions of them. Interuptions will only cause you to question the requirements as you understand them. This will lead you to constantly reevaluate your code and your design. In addition, the interuptions could keep you from going down any rabbit holes.

But just because you are working on one application alone, does not mean you are alone in the world. The web is full of blogs and sites where people are posting their ideas and best practices about software development and the tools and methodologies they use. Any good developer will be on top of the latest trends and technologies in the same way that a good accountant keeps up with all the tax codes. Information is out there to be consumed.

2 Comments:

At March 04, 2005 3:27 PM, Anonymous Anonymous said...

Nice post. Are you sure that SCRUM says to only interact with the customer via the Scrummaster? I think that's not right at all. The Scrummaster will facilitate stuff where needed and remove obstacles. I'd be very surprised if SCRUM advocated that.

So: BACK IT UP. :)

 
At March 04, 2005 3:35 PM, Blogger Ben said...

I should clarify...

There is no Hard Fast "rule" in Scrum that says it must be this way or another, but the suggestion is that the interaction with the customer DURING THE SPRINT should go through the Scrum Master. See http://c2.com/cgi/wiki?ScrumMaster for more info.

 

Post a Comment

<< Home