Starbucks-fueled Developer

Sunday, May 29, 2005

[My] Ethics of an Agile Software Project

I don't think I could never make it as a mechanic. I don't think I've ever had a pleasing experience getting my car repaired. My estimates never seem to be anywhere close to the actual costs of the work I ask to be done and what's worse, I feel, is that I never really know if they only do what I ask and nothing more. If a mechanic were to call me and report that s/he over-estimated the time and materials for job, I would most definitely be a returning customer. Seldom, though, is that the scenario.

Software development projects seem to fall into that same rut. I mean, honestly, when it starts out, the customer (in my humble experience) enters the project with some set of expectations of the work to be done, sometimes with an idea of cost as well, but almost always receives feedback throughout the project that is not at all inline with any of those expectations. The other side - the Team - does not go unscathed to these effects either. Changes to the project, either set-forth by the Customer or some other external influence, upset the expectations of the Team and the project thus altering its outcome.

However, I believe the important difference between the rest of the world and software development is this: the customer should not bare the brunt of the effects changes have on the project. The Team shouldn't either, don't get me wrong; however, it seems that this is far more seldom the case.

Both stakeholders need to be able to react throughout the project accordingly as it changes. If the Team discovers that it can complete the work with the designated resources ahead of schedule and under-budget, the customer should only be responsible for the cost of that work and nothing more. Period. However, if the project becomes more volatile, greater risk discovered, or any other turn that a project can take that either or both stakeholders do not see it in their best business interest to continue, the project should terminate under conditions acceptable to all stakeholders.

To me, this is true agile software development. Communication is a unrestricted and all stakeholders are provided with sufficient knowledge in order to make valuable business decisions. Change is accepted and embraced allowing everyone to respond and react accordingly since everyone is kept "in the loop". And...it's ethical. There's no sneaky, dirty, behind-the-scenes plotting on either side to outsmart or gain over the other. The interests of everyone are constantly kept in check so that, in the end, everyone wins.

0 Comments:

Post a Comment

<< Home