Software is eating the world, as Marc Andreessen famously proclaimed. Companies voraciously devour software to automate workflows—the promise of increased productivity is too tempting to resist. The result is a SaaS industry growing 17% annually (Gartner), with over 21,000 companies as of 2021 (Statistia).
But this feature feast leads to app sprawl and not always business benefits. The average enterprise has over 100+ apps deployed (Better Cloud survey), with employees wasting nearly a month per year switching between them (Ring Central study).
This article examines why software's fractal nature means features are easy to build, but apps are not. We’ll see how generative AI may enable the just-in-time generation of features, which could dramatically change how we think of software.
In the spring of 2010, Scott Brinker presented a talk at the Search Insider summit. As a marketing consultant and blogger at chiefmartec.com, he had been following the technologies that were changing the marketing world. His talk was titled "Rise of the Marketing Technologist," and he aimed to educate his audience on the rapid growth of martech software. To make his point, he put together this slide with the logos of all the technology vendors he knew about.
The following year he attempted to organize these 150+ logos into categories and released his first Martech technology landscape. In the subsequent 12 years, his curated landscape has grown from 150 to over 9,000 vendors.
It is hard to believe there is room for 9,000 vendors, each with hundreds or thousands of features. Each logo reflects the vision of founders who convinced themselves, investors, employees, and even some customers that they needed to exist. However, how is it possible that the existence of 8,999 other marketing technology companies did not dissuade them?
It’s a story of hope and walking the tightrope. The founding team gets down to user research to uncover an unaddressed use case. They sniff out whitespace that existing vendors haven’t yet occupied. They identify a feature they could use as a wedge to enter the market and evolve into a platform.
So, they roll up their sleeves, launch the company, sign up lighthouse customers, and start writing code. The speed of execution is awe-inspiring, with an alpha and beta version ready within months. Customers are over the moon with the product, which does one thing and does it well. The company seems to be on its way.
However, a few years later, innovation at the company seems to be slowing down. Internally, the rallying cries about responding to customers are now tempered with measured discussions about product strategy. The innovator has now become the incumbent. As the velocity slows down, new whitespace opportunities arise for startups sniffing for whitespace, and the cycle continues.
So why does this happen?
Building software is a complex process with unique challenges and quirks. One factor is that a software system's growth in complexity doesn't scale linearly with new functionality. The larger the software system, the harder it is to add to it.
In physics, the second law of thermodynamics states that entropy (disorder) in a system will continue to increase with time. To illustrate this point, imagine a library with neatly arranged books. Entropy suggests that those books will become disorganized and scattered around the room over time.
Similarly, code may start well-organized and efficient, but over time, technical debt accumulates, and the code deteriorates.
Even simple changes can have downstream effects, such as the need to update help documentation and tutorials. To manage this complexity and limit the uncontrolled growth of the code base, processes are established to ensure that changes are made in a controlled manner.
One research study found that up to 70% of software development costs are spent on maintenance. The table below (from the paper: On the Relationship between Software Complexity and Maintenance Costs) shows how the Windows operating system's estimated maintenance cost grew faster than development costs over time.
Another reason why apps become harder to sustain is usability. Even if a feature is available in an app, users may not be able to find it. A study by Pendo in 2019 found that 80% of features in software are "rarely or never used." (Yep, this is the Pareto principle or the 80/20 rule at work) This study estimated that these unused features cost software companies $30B annually.
The responsibility to play traffic cop and decide which ideas get development resources falls on the product management team. Product managers ask themselves: would enough people use this feature? Would it generate new revenue or retain existing customers?
Articles like the one from Intercom ("Product strategy means saying no") emphasize the importance of saying no, and teams rally around the ideas of focus and priorities. Investments in new ideas are scaled down to minimal viable versions, which are typically more minimal than viable. With the increasing cost of building new functionality, features must be designed to serve the largest possible group of users.
By designing features to appease the masses, they birth beige, uninspiring products devoid of flair. In distilling a product to its barest essence, the "least common denominator," they suck the soul out of the experience and spew out something that works for everyone and appeals to no one.
The best code is no code at all
Jeff Atwood, Coding Horrors
Generative AI could enable more flexible, responsive software systems. Rather than baking in code for every feature upfront—which must then be maintained and adds fragility—what if features were generated on-demand based on user needs? This approach isn't about generating underlying code but about dynamically crafting tailored user interfaces, workflows, dialogs, and navigation for each user. In this vision of the future, the software is bespoke and made-to-order. Features are created instantly to fulfill user needs, then disappear when no longer needed. With no persistent code to maintain, the software stays nimble and lightweight.
Apps like Runway ML hint at this future by letting you train AI models to customize tools for your needs. But the concept reaches beyond creative apps—most business software today focuses on the same core data functions (CRUD: create, read, update, delete). Much of an app's code deals with exposing those functions through user experiences governed by business logic. In an AI-generative approach, developers could define the business rules, and the AI could dynamically generate the UI and workflows required for a user's specific goals. The AI builds what the user needs on demand, avoiding unnecessary features and development efforts.
Curious about what this world will look like? So are we. My cofounder Francis and I are exploring the future of tailored, just-in-time software at boxcars.ai. Follow our newsletter to see the latest demos and innovations in the future of bespoke software.