Growing Pains
Last week I took the concept of The Factory and contextualised it with respect to stakeholder value. In short, the delivery of value is a multi-stage funnel with churn at each step. Over the lifecycle of a software project we may have the opportunity to reduce this churn by reflecting on our processes and practices and making improvements. We may also have the opportunity to better understand how we may reach our intended audience and new audiences too.
For many years in the culture surrounding tech startups there has been a philosophy: Build a network first, monetise it later. Building a network often involves providing software that solves a real problem at a cost of zero dollars to users. Free is often an important part of building a network because of the absence of confidence.
An expectation of free services has been reinforced for decades in defiance of the cold reality that delivery (i.e. design, maintenance and operation of the factory and the factory of factories, and so on) comes at a price. Growth is therefore often achieved through unsustainable means and eventually the bill comes due. This is as true for established projects seeking to maintain or increase profitability as it is for new projects that are yet to achieve it.
Let's focus on the scenario of a single company with a single digital product that they are working to scale-up. Scaling-up generally means pursuing these two goals, most often simultaneously:
- Increase the overall pool of users
- Increase the breadth of the product offering
Implicit in the first point is that you will (or at least should) retain the users that you already have. There are project-level forces working against this, such as the emergence of competitors in the market and price-increases affecting your supply chain.
The digital factory and the digital product can remain unchanged, and yet the perception (or experience) people have with your project can change dramatically. Support is a common example of an experience that often degrades as digital projects scale. Consider a single developer working on software and responding to support requests with a fixed proportion of their time. Suppose that their user base grows. The time to close support requests will increase, all other things remaining constant. More than this their user base will probably become increasingly differentiated, if only through the device. As time goes on they may increasingly be forced to engage with the consequences of supporting multiple versions.
It is important to understand that users do not only engage with the digital factory or the digital product, they are also engaging with other aspects of the project. Most people understand this intuitively, e.g. through marketing and distribution channels. It is nevertheless worth stating explicitly as we collectively struggle to consistently apply this understanding.
"The app" is all at once the digital product, the digital factory, and the digital project.
Occasionally the business that owns the project is also involved in this engagement. In today's world it is not uncommon for negative sentiment toward a company to be expressed through feedback channels for a project through "review-bombing" and consumer boycotts.
Now let's speak to the other consideration, increasing the breadth of the product offering. Quite some time ago, I wrote about navigating extreme memory pressure that was a consequence of the scalability (or lack thereof) of keeping all of the promises that a particular project had made. When we increase the breadth of functionality promised as part of a digital product offering we may impact the ability to keep existing promises. Sometimes this happens because of an unaccounted collision between desirable criteria (e.g. content belong to an app should always be kept up-to-date, but the app should be able to deliver an experience without an internet connection) and at other times because of real-world constraints such as hardware limitations as per the article on memory pressure. Both contribute to issues.
Scalability concerns are the first to be dismissed in high-pressure environments for a number of reasons. There is friction in reproducing problems of scale, and there is often even more friction in providing solutions on a number of fronts. Solving problems of scale usually involves re-solving "solved" problems in ways that may be considered less readable, less maintainable and more expensive. To use the language of the factory, we may need new production processes, new machinery and new input materials, which will almost certainly impact project-success metrics of time and cost.
Growth can be difficult, both inside and outside of digital factories.
Until next time.