Project started in early 2012 with rough idea of innovative product followed by quick market research. At that time scope of whole venture was very blurry, there were lots of great ideas but there was no documentation besides minutes from many creative meetings. It also become clear that if it was to succeed things had to move fast and product had to be released quickly to verify business case and get ahead of much bigger competition. Bread & butter of our customer IT was large B2B systems so they were not experienced in B2C delivery at all. That’s why they reach out to us to support them from software development perspective. We provided autonomic team of 4 developers that started close cooperation directly with our customers business team. There were no system analyst, documentation was bare bone at most but most important thing was product itself that you could “touch and feel”. After initial 2 weeks of creating foundation developers and business were talking on daily basis together coming up with new ideas and validating existing ones. Some of them had to be dropped because they were too time consuming, some had to be simplified and some were done in creative way of “cutting corners here and there”. After 3 months MVP version of the system was ready for internal “family and friends” release (pool of 1000 users)
The second phase was a struggle due to the lengthy legal process. The product was created for a heavily regulated market and it took getting through bureaucracy and audits to tick all the formal boxes and get the final approval. Besides making adjustments and adding small features, the development team also smoothed the application code that gets a rough treatment during the very dynamic first phase. Aditionally, they also created an automated deployment pipeline. From a team dynamics perspective the development and business gained even more mutual understanding and trust. Developers knew what, and, more importantly why they were implementing given features. Thankfully the business team was comfortable with allowing developers to introduce their own ideas or suggest changes.
Shortly after we were given the official go it was clear the technical improvements the developers did payed off. The business team worked hard to seize as many opportunities as they could and that often required making quick changes to the product. Thanks to the efficiency of the deployment process, the team was able to release new versions even 2-3 times a week. Additionally, automated test processes consisting of test suites on 3 different levels of (unit testing on code level, integration testing and full end-to-end testing) deployment were very stable (of course some minor glitches happened from time to time but there was not even one critical issue). A new model of working had emerged (again thanks to a mutual understanding between the development and business team). After more periods of intense work on business features, the developers had some time to slow down and focus more on technical aspects of the product. This time, focus was put mostly on improving application security (which again later helped in preventing hacker attempts).
The product continued to become more and more successful. One year after the initial release the user base grew to one million, passing the three million mark in the next two years, which required a quick increase in our number of developers. The development team grew to almost 20 people and the system was divided into three separate products. Good code quality (self-documenting code), consistent architecture and a great technical team leader allowed new members to quickly get on board and feel at home with the product and the team. Over time, as our customers Software Development Life Cycle got more suited for B2C products, the team slowly moved towards that process in order to keep standards consistent across the whole organization.
You could get the feeling from the description above that it’s almost too good to be true. However, smooth sailing from the start and no storms on the horizon … it was not. As always both teams (business and development) had to struggle with their fair share of problems. Some decisions made along the way were not the very best ones, some of them, that in the end benefited the product, were not that obvious during the time we were making them. Overall though taking it all into consideration, this case is one of my personal favorites. In my opinion the key success factors were: