If you follow certain social media and news/blog aggregate sites, especially startup related sites, you can’t get away without constantly bumping into stories about people’s or companies’ failures and stories of how much they have learned from those experiences. And yes, it is true that failures teach you the most but sometimes when reading those blog posts or articles, it makes it all feel so easy and natural.
But when you have a customer sitting on the other side of the desk while discussing about ending a failed project, it’s just horrible. Even when you can recognize all the bad things that happened and have already learned about those, it’s killing you inside to bring the matter to the table. I went through my first real big failure this fall and settled the deal during this week. I just had an urge to write about my feelings and everything storming inside.
The story starts in late spring, somewhere around April when I was contacted to do a certain project for a customer and I happily took the project – it was an opportunity to scale up my knowledge and skills while making something fun. I had done similar things in smaller scale for other people and organisations but this was obviously one step bigger than I had ever encountered.
Looking the last 6+ months from retrospective, one of the rookie mistakes was scheduling the work. It turned out that I had underestimated the project and I was unable to see the forthcoming pitfalls that would completely wreck the schedule. These are of course things that come by experience but still something that I believed I would’ve been able to make right on my first try. Nope.
When creating spesific solution to a single-customer problem instead of creating a customer product that is available to wider audience, testing with the customer from day one is crucial. It was the biggest mistake I made, even bigger than scheduling. Even though we had good communications (something I’ve learned from other projects), it was too abstract level and it was too late when we started to do customer testing. It has to be done early enough, it has to be done a lot and it has to be something that is agreed from the very beginning. This is especially in situations where the developer is not familiar with the product domain.
Finally, when the end is near and it’s clear that everything won’t be completed, it’s super important to keep good communications open and keep everyone clear of the situation. Personally, I think that securing the future of the project without me is something I really succeeded. The codebase is well-designed, documented and a new possible developer to continue the project has been made familiar with the product.
This time, the project ended due to the fact that I’ll be moving to San Francisco to work starting next January but nevertheless it was really horrible experience having to admit your own failure and to face the disappointed customer. We all want to create marvellous projects that always work like a charm but sometimes things fall apart for different reasons.
Anyhow, I learned so much from working with a customer, I learned a huge stack of development skills and I got experience of the important pitfalls and how to better avoid them. Despite the last week being super stressful, for the first time in my life I have to admit that I learned more from this failure than I would have from it if it would’ve been complete success. But it still doesn’t feel right. Or nice.