Tuesday, January 12, 2010

We can do better than this... Reloaded

In the last Italian Agile Day I delivered an open presentation called "Possiamo fare di meglio" (this post's title is just the translation), where I raised some questions about the way we develop software. I then tried to summarize some of the things that emerged in the discussion here, but there are still many things that are bouncing in my head...

One thing that really disappoints me is the low quality of many software applications I have to deal with in my everyday life. Some days I really feel like I am surrounded by crap. Just to make it clear what I am talking about: here is an excerpt of what a home banking service is asking me every single operation I do.

Choose the desired account:



And every time I think: "It's one account, it's just one account, it's always been just one account, so why on Earth you keep asking me this question every time! Couldn't you just take me straight to the account...".

Some days I just feel like surrender, some other I see how some application are doing a fantastic job, on platforms like iPhone or on the web, and I feel like there's still some hope for us.

There is still a lot to do


Despite all of our efforts, to introduce TDD and continuous integration, velocity based estimations and the like. There's a lot to do in other fields as well. Let me say it in another way: many companies are looking towards agile methodologies as a way to improve their development processes, in order to deliver software on time and on budget.

Doesn't sound that bad isn't it?

It does. It doesn't mention the quality of the product. ...Oh, yes, we forgot, we need also tests to reduce our defect ratio. Tests are good, software quality is good, but still doesn't address the whole point. We should deliver better products. Emphasis on the process itself would satisfy the managers' ancient need for schedules and predictable outcome, allowing teams to produce crap more efficiently, but would not produce better products unless some key points are specifically addressed.

The most neglected areas at the moment - at least from my point of observation - are:
  1. user's involvment,
  2. understanding the domain complexity,
  3. lack of an overall perspective,
  4. inefficient learning during the product development lifecycle.
The items are not completely separated, in fact they're slightly overlapping, but I think these are the areas where as software developers we can (and must) improve a lot.

In the next posts I'll dig deeper in these topics.

2 comments:

Tommaso Torti said...

in my opinion this lack of vision is due to shedule pressure. When you try to suggest some improvement to your project manager the usual answer is 'we don't have time, let's start now by reproducing the old habits and we'll fix this tomorrow'.
I think it's time for business analysts or managers to take their responsabilities. The developer duty is only to suggest new ideas in order to reduce complexity

Unknown said...

Schedule pressure is certainly one of the driving factor for his lack of vision. But lack of vision itself stands as a big problem.

Talking 'bout establishing a feedback loop with the users, I've seen projects where developers: a)have never seen a real user; b)contacts with users were explicitly forbidden (!) c)users were involved only after the project was developed... I guess this is nothing really new.

The example I used here is on the thin line between quality issues (you just need common sense to tell that this is not "done") and vision issues. The downside is that this approach is so common that I guess nobody really cares.

In many organization I've seen, the whole idea of software project is flawed. Software itself, often is not a product, but a part of a more meaningful whole. Seeing it this way is the only way to proper creative ideas and breakthrough software projects. And ...you're right, schedule pressure doesn't provide the best environment for that. Unfortunately, every project has schedule pressures: are wee doomed or can we break the vicious cycle?