Friday, October 23, 2009

Agile moving

I'll soon be moving to a new flat and I decided to use an "agile" approach: a lot of planning but no plan and a way for visualizing the work in progress:


So far it has worked pretty well, dependency between various task is handled in the "ready" column (tasks can't be ready to start if they depend on other ones that are not done) and the work in progress limitation brings focus (instead of scattering between too many things at a time).

Monday, October 19, 2009

UI design and scrum

I've been during last week to the Scandinavian Agile conference in Helsinki and there I was really interested in a session called "Combining UI design and scrum", as the topic is quite hot and I still haven't see a good way for doing that.

First of all, I should mention that I've been really disappointed by that session. Overall, it had the feeling of a pure marketing session as it didn't explain at all the GUIDe methodologies used there (just a slide with a link and comment like "go read it yourself") but the focus was mostly on "see? we can do this, we have already done this, if you need this call us".

The second biggest disappointment came from the fact that the session was more about "separating UI design from scrum" than combining them, stating things like "only a UI design expert should to the UI design without involving the development team" and "in the product backlog you should put feature, not user stories as user stories are a problem and in the backlog you want to have solutions". What I got from the session is that the speaker's idea is that customer and UI designer should talk in order to have the UI designer fully finalize the UI and then hand it over to the development team, that should start implementing feature-by-feature starting from a mock-up.

While I think having a full UI mock-up ready before starting developing a product is a good thing (even PatientKeeper does that) I don't like the hand over part that what has been described in the session involves. In my opinion the development team (or at least part of it) should work together with the UI design expert and in that way get the knowledge on the product that the mock-up itself doesn't bring. I've never done that myself to that extent but I'm really interested if someone has at least tried and what were the outcome. So, if you've done that and want to share your experience please contact me, or, if you're in the Helsinki area, join one of the agile dinners!

Friday, April 17, 2009

Agile++ or just plain Agile?

Some days ago a colleague linked me a news on InfoQ about Ivar Jacobson, the father of use cases, saying that "Being Smart is an evolution of being Agile". After reading it I had the strong feeling that Ivar missed the point, calling "Agile++" what's simply Agile and calling "Agile" what's just a bad implementation of it.

For example, he says that being unsmart with people is "viewing processes and tools as more important than people", while being smart is "recognizing and understanding that software is built by people, not with processes and tools!". How can be that "viewing processes and tools as more important than people" be considered "Agile" in any way, when one of the 4 points of the agile manifesto is that "we have come to value individuals and iteractions over processes and tools".

All the other points he quoted as "being smart" are just plain Agile:
  • Delay all the decisions until the latest possible moment, in order to take advantages of the experiences done until that moment;
  • Don't build architecture up front, think about it for a while and then implement what you need (but keep some doors open for future implementations);
  • Have a cross-functional small team that can carry on all the work required for carry on the project (yes, also testing!);
  • Don't get stuck in copying a process that worked somewhere else, but use it as a first step and then continously adapt it by trying out new things.

And, if you really want to be smart, keep in mind that Agile is not a silver bullet. Agile is a tool that might or might not bring to success, depending on a lot of factors. Don't try being Agile if you don't need to!

Tuesday, March 10, 2009

Lean software development & Software craftmanship

I was randomly browsing the net and I've stepped into an interesting article written by Mary Poppendieck about lean software development, I think it says everything that has to be said on that topic, and I recommend reading it to everyone: http://www.poppendieck.com/lean.htm.

On another topic, yesterday Marko sent me an interesting link for a Manifesto for Software Craftmanship: http://manifesto.softwarecraftsmanship.org/main. I definitely agree with those things, and hope more people will start following those ideas!

Friday, February 27, 2009

Assumptions are evil

One thing that always makes me thinking that there's something wrong in our industry is that when building software people always makes assumptions instead of asking clarifications.
For example, if I would go to a construction company asking them to build a building somewhere they will ask me for sure if I'd like to have a new Empire State Building or just a wooden summer cottage, but if I would ask for some software in an unclear way to an average software team they would start building it making their own assumptions, and most likely what they'll produce is something that doesn't fulfill at all my needs.

Quite surprisingly things like that happen also with scrum teams, which is quite unbelievable considering that the product owner should know what he (as team's customer) wants or, if he doesn't know, he should figure those things out. There are companies where if the team doesn't have anything to do (because the PO is not doing his job properly) they would just go surfing (ok, maybe not the wisest thing to do in Finland, but works brilliantly in California where they are) instead of assuming, and I can tell you that the cost of having a team surfing for one day is less than having a team building a wrong software and then fixing (if not rewriting it).

In summary: assumption is the mother of all fuck-ups, don't assume, just ask. It's a simple rule, easy to follow, but its impact is quite big.

Tuesday, December 2, 2008

What is agile?

I was later on on the usual Agile Finland dinner and one of the question that was asked to everybody there was: "what's agile for you?". This is the answer I gave:

Agile is not a silver bullet, it's not a bunch of practicalities, it's the biggest cultural change in the software industry in the last 25 years, fixing the wrong idea that software development is an industrial thing and bringing it back to its original craftmanship dimension.

Anyone who wants to challenge that?

Sunday, November 30, 2008

The key to success?

I've been during last week in Tampere for the Nääsvillen Oliopäivät, or OO Days. The conference has been good, excellent talks during mornings (Alistair Cockburn, Pekka Abrahamsson and Jim Coplien) but way too many sales speeches in the afternoons, and no OO at all!

Alistair's keynote was about the few foundations that he founds crucial for software development and about properties of a successful teams. The first foundation he highlighted is that software development is a craft (quite surprisingly I had a conversation on the same topic with my friends Ari Tanninen and Marko Taipale while driving to Tampere the morning before the presentation). As a craft it has to be learnt, and about learning Alistair used a Japanese concept called Shu Ha Ri. It says that there are three stages in learning:

- Shu (traditional wisdom): you learn the basics of a technique, applying its rules blindly
- Ha (breaking with tradition): you reflect on the technique, finding exceptions to its rules and reflecting on them
- Ri (transcendence): everything is now natural, there's no need to think about the rules

I see that as really actual, and especially I see two big pitfalls coming out from that: people in Shu never leaving that stage and people in Shu trying acting as they would be in Ri without having the right knowledge and understanding.

For example, it's a very well known fact that the majority of projects using scrum fail. There's a good literature about that, and usually the causes are: teams sticking to what the book says, without adapting the scrum framework to their own needs (Shu people sticking there) or teams trying adapting the framework to their needs to early, when they don't yet understand it (Shu people acting as Ri).

After that and all the other talks my personal conclusion is that the key to success is not in tools, frameworks, processes and such. It's in people. And it can be summarized in one simple rule:

THINK!