Wednesday, December 1, 2010

Verbal Communication

Humans used to have such a marvelous oral tradition; myths and history were passed orally from one generation to the next. Until an Athenian ruler started writing them down Homer's The Iliad so that it would not be forgotten, stories like Homer's were told, not read. Our memories must have been a lot better back then and must have started to fade sometime in the 1970s because by then we could no longer remember even short statements like "The system shall prompt the user for a login name and password". So, we started writing them down.

And that's where we started to go wrong.

This is an excerpt from Mike Cohn's "User Stories Applied", which I encourage you to read.

What's wrong with written requirements? Actually they have advantages as well (traceability is an example), but they are based on a flawed assumption: they capture every detail of what must be developed. This is practically impossible, with the only exception of very trivial systems. Nevertheless, we do want to write something down, at least to be sure not to forget important things. So what do we have to write down?

User stories are very useful for many reasons, but one of them is that they favour high-bandwith face-to-face communication; actually stories are reminders for conversation. This calls for (I'd like to say force but it would be too optimistic) the customer and the team to interact frequently, thus leading to a product that is just what the customer wants instead of - at best - what is captured on a ton of paper that nobody reads.

This might not be true for every domain; some specific software would probabily require a very complete and detailed document, but this does not apply to anything I've had to develop so far (but I wouldn't be able to say anything about software for pacemakers). Yet, I think any written documentation is not complete unless it also describes how to test a feature. That is definitely what I'd like to have, rather than a series of "the system shall...". Oh forgive me, it is "the System shall...", capital S, we don't want to underestimate the beauty and the power of our product (which by the way does not yet exist if not in our dreams of glory).

Is time spent on requirements completely wasted, then? I think it is not. Requirements do not come out of thin air, so at least all the conversations held in requirements workshops can help the developers (but most of all the customers) to clarify what the business rules and information flows really are and what the system will really need to do in order to support them.

And this only emerges through verbal communication.

Tuesday, November 30, 2010

Unlearn your MBA

Be an enterpreneur and invest about one hour of your time to watch David Hansson give a talk at Stanford.



The talk is very interesting, David repeatedly insists on focusing on the importance of delivering value in a profitable way. He's also a good speaker, so time will fly by.

Wednesday, November 24, 2010

Systems Thinking

A bad system will beat a good person every time

W. Eduards Deming

German wisdom

Do like the sundial:
Only count the bright hours

Tuesday, November 23, 2010

7th Italian Agile Day Mind Maps

Too entranced to take notes at the 7th Italian Agile Day, weren't you? don't worry, you can find the mind maps developed during some of the sessions here.

How to create a new object in NetBeans

Another useful java code template is newo, that expands to the following:
Object obj = new Object();
As behind the curtains the expression is

${TYPE default="Object"} ${OBJ newVarName default="obj"} = new ${TYPE}(${cursor});
all you have to do is change the type and note how the IDE at the same time changes the name of the variable setting the first letter in lowercase, e.g. if you hit newo TAB MyObject the result will be
MyObject myObject = new MyObject();
Neat and clean :-)

Saturday, November 20, 2010

7th Italian Agile Day: a review

Yesterday it was held in Genova the 7th edition of the Italian Agile Day, which is so far the best I've ever attended, so the first thing I'd like to do is thank everyone for being there.

As always, I studied the program for about a week before I made up my mind on which sessions I would follow. As always, I didn't follow the plan. Hey, inspect and adapt, right?

After the usual introduction by Marco Abis, who with many others made all this possible, Paolo Perrotta gave the keynote speech, which was very interesting as it revealed a totally unexpected piece of information: software projects have problems, and writing software is difficult. Strange how I never realized that in all these years :-)

Paolo also talked about the waterfall method, which - curiosly enough - was not so "waterfallish" in the intentions of its author; all the problems originated from the (in)famous picture of phases, which originally referred to the phases of a single iteration. Moreover, there was also a clear note that stated that this model could not possibily work. Somehow this detail was lost.

Anyway, great speech, and all my compliments to Paolo that keeps improving his skills as a speaker.

Then I went for "Note to managers: IT is different, get over it" by Andrea Provaglio, which was very interesting and gave me many starting points for further studies. I was a little flustered when, toward the end of the speech, he said that all changes start from the management, which corollary is more or less that you cannot start anything from the ground up. I revived a little when in a private conversation he was so kind to tell me that all you have to do is persuade the management that a change is due. Sounds easy, but it is not. That's why you have to persuade the management that a change is due by showing them why they should be interested in that change, in such a way that they can understand what you're talking about because you use their language, and what would their advantages be. At this point I was quite happy to see that all the time I spend reading Neurolinguistic Programming manuals is not wasted, as Andrea suggested just what all the manuals do... there must be a reason if everybody agrees on that!

I didn't change the room for next talk by Fabio Armani, "Scrumban, a methodology fusion". Unluckily what should have been a nice background music became too loud to be kept so he had to turn it off. Another annoyance was the projector (or maybe the computer) that kept running out of sync. Putting aside technical problems - wich are always lurking when you have a public, no matter how many times everything went right just before the showtime - Fabio explained how he trains his teams and how they perform. Man, I want to work like that!

In the afternoon, after a very long queue for lunch, the first session was "The secret art of Agile Javascripting" by Luca Grulla. I think that if I had to manage a project with more 50% of the codebase written in Javascript I could just as well get mad. I mean, madder than I already am, of course. But, again, that is because I don't know the language as well as I'd like to (and, alas, as well as I should). Anyway, I'll try to follow his advice: separate what must be separated. And, yes, the DOM is an integration point as well.

Next, I ran to follow Alberto Brandolini for "Due uomini e una lavagna", which was absolutely different from what I was expecting, yet it was another great presentation, from which you could get all his passion and sound expertise. This was the occasion to meet him in the flesh after we exchanged a bunch of posts and comments: I knew he was a prolific writer, but I didn't know he had such a high count of words per second :-)

I was quite undecided for the last session (just like for the others), then I went for "TDD per le viste", a "pomodoroed" session by Matteo Vaccari and Carlo Bottiglieri. I already knew what to expect by Matteo, having seen a slightly modified version of his slides, but Carlo's part of the presentation was quite shocking. The reason of this lies in his (paraphrased) sentence "I was not told that TDD was just for the domain, so I started applying it for everything. TDD is a support for taking informed decisions, and it must be used as such". Sounds extreme, but probably it is not, we only have to get used to it.

And, just like that... it's gone!

The conference was really rich in contents, fast paced, and very well organized. Soon the recordings of all the sessions should be available online here. Also the funding went very well, with more than €5.500 donated by the community for the community (and while donating I also I brought home a wonderful shirt with a "will refactor for food" writing!).

What else... looking forward to the 2011 edition!