First let me tell you a tale. Then let us see what we can learn for software development.
Last week I was on honeymoon in Rome. What a wonderful time, perhaps except the time we were cheated by taxi drivers and restaurant owners, a story for another post.
When arriving at the airport for flying back from Rome to Berlin with easyJet, the flight was delayed, for one and a half hours. Hey ho, nothing better than spend some hours of Sunday at the airport I thought. The promised delayed departure time came and went, nothing. No new information for 6 hours. I no longer feared to waste my Sunday at the airport, I feared I wouldn't get home this day. No official showing up, all having their head in the sand. Rumors spread said the plane had technical problems. Or the pilot hadn't the correct papers. After six hours we were told due to the volcano flights all over Europe were cancelled. We now feared to not get home for a week - but without any offical information or care, we didn't know. The volcano information wasn't given in a proper manner, only to some people randomly. And not by someone from easyJet but from random people at the airport. We wanted to get our luggage back - not possible, as our flight wasn't cancelled and luggage was already in the machine, and they only return luggage from cancelled flights. We asked when they would decide if the flight was cancelled - they wouldn't tell. We asked when and if the flight will leave - they woulnd't tell. And noone from the airport was interested in pursuing this question - and still noone from easyJet showed up. We were promised information updates at specific times, which - you guessed it - never materialized. Then our flight went from delayed to missing, no longer any mention in the system.
After another 4 hours without any information (10 hours in total waiting without clear information, my Sunday wasted, my fears for another week at the airport skyrocketing ), suddenly we should board - at least we assumed we should board now because everyone was running to the gate - there was some chaos, more chaos, people shouting at each other in Italian, more shouts and chaos, but 30min later we were on our way to Berlin. The other two flights to Berlin hadn't been informed about their fate and were later cancelled.
What can we learn for software development? Software development can easily go wrong. Problems arise out of nowhere, just like volcano ash. Sometimes you can't prevent those (but you have a proper risk startegy, haven't you?) from coming after you. But when they arise, and you're in the heat of handling them, don't forget to:
- Inform early - easyJet never told us what went on, frustration increased as we were kept in the dark. If you software project runs into trouble, inform early. This goes for developers and testers too, not only for ScrumMasters and project managers
- Don't lie - it seems someone lied to us, which made us furious when we suspected this. In the end lies will fail, so don't invent reasons why the project is failing or you don't make any progress
- Keep your promises - they promised us updates with new information, and then never showed up again. Don't do this to your stakeholders. Don't make promises or otherwise keep them. I know it's hard sometimes, and you can't keep them for external reasons, but make sure you try as hard as possible
- Inform all stake holders - they informed random people, which made as still more furious as we couldn't get the information we needed. Stake holders will talk to each other and sometimes - as people do - distort information by accident. Have clear communication channels, inform all your stake holders in software projects at once
This was such a pain for me, and easyJet handled the situation in the worst possible manner - it reminded me how I myself can handle those problems in software development better. Perhaps it helps you too.