Print This Post
This article is about a very important question today’s innovators face when they develop new software products.
Namely, that of:
“What are the appropriate technical skills, technology stack and architecture for the new product?”
This question is very hard to answer, because very often it is not clear what features a product should have. Needless to say, that sometimes it is not even clear what problem the company is trying to solve for its customers.
Consider a development team that follows an iterative approach to test fundamental hypotheses about the product, the business model and the market.
Initially, during the startup phase, the team will attempt to build, test and adapt an MVP, in an iterative process. With each iteration, the team will improve the MVP and adapt it to reflect the feedback received during the tests.
Once the team verifies their fundamental hypotheses and validates the business model, the startup phase concludes and the scaleup phase starts. If the team disproofs or fails to verify their hypotheses, it will attempt to pivot the strategy to correct the course, formulate new fundamental hypotheses and reiterate.
By the time the team completes the MVP and validates the business model, the product may have gone through several fundamental changes and most likely already has many users. The next step is to scaleup and roll out the product to significantly more users and even enter different markets. At the same time the team should continue operating the product for the existing users.
Following the above approach comes with contradictory expectations regarding the appropriate technical skills, architecture and technology stack. The reasons are:
To put it another way, the technology dilemmas can be described as:
“A startup needs a technology strategy that not only allows for fast delivery of value and supports growth, but can also fulfill unknown, diverse and possibly contradicting requirements”
To put the technology dilemmas in a familiar and tangible context, two examples, which are based on actual situations startups have encountered, will follow.
The first example is about an e-commerce company that operates in the B2C market.
Their product idea is great, but they have to be very fast in gaining a significant market share because competition looms. The team decides to go for a simple architectural pattern and a hosted solution on premise. The reasons for their choice are, that they are very familiar with these technology options and feel that this is the fastest way to build the product. Very soon the first version of the website is ready and the team continuously develops and tests their assumptions about the market.
After a couple of years, the user base in their home country has grown significantly in size and so has the code of the B2C web-based application. It is now time to grow even further, enter new countries and even the B2B2C markets.
Sadly, the team realizes that the application cannot handle the new traffic load and regularly crashes. To make things worse, implementing requirements for other countries and for the B2B2C market turns out to be very difficult. Their web-based application, a monolithic architecture of spaghetti code, cannot be easily scaled or extended.
The team now feels that they should have chosen a different approach to build the web-based application, but they would not have been as fast as it was required in the beginning. Now, their suggestion is to migrate the application to a modern micro-service architecture and to move it to an external IaaS/PaaS.
However, this will take much time and effort which they cannot afford because the competition is catching up.
The second example is about a startup that builds a SaaS product for the industry 4.0 market.
Their business model assumes that several thousands of customers and tens of thousands of users will work concurrently with the product.
The development team is excited and chooses a micro-service architecture for the product. Work begins and the team chooses to develop the product on the IaaS/PaaS of a major provider. The team is not familiar with these technologies. Progress is slow at the beginning, but they learn fast. With each iteration they incrementally improve their MVP. After several months of work, they begin to test with users and potential customers. Everything seems to go great and finally they are making good progress.
Unfortunately, after a while, the team realizes that their target customers are not willing to adopt a SaaS solution yet. There are good reasons to believe, that in the future, customers will accept a solution running on a third party cloud, but for now it is too early. The majority of the potential customers have concerns, because they plan to use the product with intellectual property and are not willing to allow this information to leave their own infrastructure.
The product team decides to pivot. Instead of offering the product as a service to thousands of customers and tens of thousands of users, the decision is to offer it “on premise” to a handful of big customers and later to a few hundred mid-sized customers. Subsequently, every installation must take place on location, as remote access is not always possible. Furthermore, because each installation is customer specific, it will have only a few hundreds of users at most.
The team is now facing a difficult technical challenge, because the requirements have fundamentally changed:
Re-architecting the application is possible, but it will take much effort and the team still needs to continue developing new features for existing customers
Modeling the technology dilemmas can help to better understand their dynamics and develop strategies to tackle the associated challenges.
The value a new product creates, resembles an S-Curve. Initially, as the team tests various hypotheses and builds the MVP, the value creation is relatively flat. Once the right strategy is found and the business model is validated, the value creation potential assumes exponential growth. To capitalize on this potential, the scaleup phase starts. Ultimately, as pressure from competition increases and the market saturates, growth flattens out again. If it was possible to choose the perfect technical skills, technology stack and architecture, the development team would be able to develop the MVP and validate the business model fast during the startup phase. Furthermore, development could smoothly transition to a scaleup phase and the team would deliver work that optimally capitalizes on the exponential growth potential.
In reality, because of the uncertainty about the requirements and pressure to deliver, the technology choices cannot always satisfy the contradicting expectations for fast development needed to quickly validate the strategy and at the same time the ability to scaleup.
Constantly changing the MVP to reflect feedback from the market and pressure to deliver, have most likely led to quick fixes, shortcuts and poor engineering choices. In other words buildup of technical debt. In addition to the above, pivoting may have even set a totally new direction for the product, which may not even be compatible with the current technical solution.
The result of the above situations is, that product development cannot keep up to the demands that derive from the exponential growth potential. The technology debt constrains growth and value creation flattens. The business encounters difficulties scaling-up.
To avoid a premature plateau in growth, the development team will have to perform a technology shift/pivot. What type of pivot is suitable (e.g. re-engineer, migrate or rewrite) depends on the specific situation the startup faces. However, the optimal point in time to perform the pivot is “fixed” and independent of the situation. It is the moment when the team validates the business model i.e. when it becomes evident that creating value has the potential to grow exponentially.
If the pivot is successful, the product will capitalize the exponential growth potential. However, most teams have difficulties taking this decision. Teams hesitate, because the decision is counter intuitive. The reason is, that the pivot will temporarily delay growth. Additionally, it should happen at a moment when growth has, for the first time, demonstrated an exponential trend. Despite appearances, graph  shows that the decision to pivot quickly pays out and outperforms the decision to keep the existing technology choices.
What are common pitfalls when it comes to pivoting the technology, besides failing to recognize the need to pivot?
The first most common mistake is delaying to pivot. Doing so may seem to be a better option than sticking to the current technology choices. Even so, this decision will eventually perform worst when compared to pivoting at the moment the growth potential becomes exponential.
Another danger is that, if the pivot takes too long to complete, it fails to support the growth potential. As a result, the product will miss the chance to scale.
Finally, teams may be tempted to make technology choices optimal for scaling already from the start of development. For example, by choosing a highly scalable but complex architecture or a heavyweight technology stack. They will do that in hope of avoiding to pivot later. By doing so however, they will most likely be very slow in developing the MVP and validating the business model. The graph  shows how such a choice will again lead to sub-optimal growth. Demonstrating feasibility of a scalable technical solution is vital, but implementing it too early is not.
This article, described the technology dilemmas that innovators face and presented a model to explain how the dilemmas affect product development.
The next step would be to answer the question raised at the beginning of the article:
“What are the appropriate technical skills, technology stack and architecture for developing the new product?”
As already mentioned, this is a hard question to answer. Fortunately, the model presented here, offers some insights that can help in developing ideas to answer it.
In a follow-up article, I will write about these ideas and try to suggest a technology strategy for innovation.