Having banged on about ‘feature modularity’ until everyone’s heartily sick of the sight and sound of me, I’m feeling the need to explain just why it is that this idea has taken a hold of my brain, and why curiosity about it is driving me to believe that I need to build a whole new computer company.
So, gentle reader, if you’ve had your coffee and you’re feeling in a geeky frame of mind: strap in, keep your hands inside the car, and let’s go on the ride.
There’ll be diagrams.
applications vs features
We’re all used to living in an ‘application-modular’ world - a world in which the smallest unit of code you can ship to users, for money, is the app.
Apps are such a standard way of organising software that we don’t even think about it.
But apps aren’t atoms; each app is a cluster of capabilities, which we’ll call features.
For instance, a maps application has a feature to show the terrain in different ways; a feature to compute an efficient route between two points; a feature to show the names of shops in a city, and so on.
Features can have sub-features; for instance, route computation could have a sub-feature to compute a driving route, and another sub-feature to compute the best route on public transport. And those sub-features can have sub-sub-features, and so on all the way down.
As a user, you get to choose which apps you use. But once you’re using an app, you don’t get to choose which features you use. That choice is made for you: by the company that built the app.
instagram
Instagram is a great example. It has some features I like (taking pictures for my friends to see, or being able to see pictures that my friends take); but it also has some features I don’t like (the feed, and reels) because they’re just too powerfully addictive.
A point came (last summer) when I realised I was regularly spending four or five hours per day scrolling mindlessly through a sea of amazing videos about cats, 1970s architecture, DJ drops, sharks, aircraft landing sideways in gusts of wind, and other such essential material.
And at that point, there was no option other than to just delete instagram from my phone. Which is a shame, because now everyone I know has to miss out on my amazing holiday snaps, and I miss out on theirs.
Tough titty. I need those five hours a day. I need them to scroll through Twitter.
a venn diagram for you
I’m not gonna lie, I like Diagrams. I especially like Venn Diagrams. In fact I think they might be my favourite kind of Diagram.
Here’s an exciting Venn diagram showing all the features that a Software Company could possibly build into their app :
Now here’s a Venn diagram showing the idea that some of those features benefit users (the ones inside the blue circle) and some of them don’t (the ones outside the blue circle) :
Now here’s another Venn diagram showing the idea that some of those features benefit the companies that build them (the ones inside the red circle), and some don’t (the ones outside the red circle) :
Now comes the Venn Diagram magic: let’s look at those two circles together, understanding that they’re not the same :
Now let’s rename these feature categories :
Obviously, every software company wants to maximise the production of ‘good features’ (like ordering a cab when it’s raining without going outside) and minimise the production of ‘timewasters’ (like cookie consent popups, or Mr Clippy).
But there’s still tons of users with unmet needs, for an excellent reason: if a feature benefits only a small section of users, but costs a lot of money and doesn’t increase market share, why should a company go to the trouble and expense of building it?
Much more profitable to spend time in the ‘bad’ part of the diagram, and create ‘dark pattern’ features.
Like super-addictive scrolling feeds, in-game purchases for kids, sponsored links at the top of a Google search or App store search, algorithms that track you to sell you ads for the thing you just bought, ads that pop up over the ads that pop up over the text you want to read, ‘free trial’ payment models that lure you into recurrent payments that you then forget about; impossible-to-delete user accounts; the list goes on.
waste not, want not
Another not-so-obvious consequence of application-modularity is waste.
Let’s say I build an app. It has three features, which we’ll call Lightbulb, Jigsaw, and Teddy Bear.
Now you come along and use my app. And you like it, and it’s great, but actually you don’t want Teddy Bear; you want Pig. So you ask me : “please can I have Pig instead of Teddy Bear?”
Now: I don’t like Pig. I don’t have time for Pig. I like Teddy Bear. Teddy Bear is my homeboy, we came up together, us against the world. Plus, I’ve got other stuff I want to build, and who the hell are you anyway.
So I tell you, politely, to fuck off.
So what’s your option? Well, you have to fuck off. And build your own app.
And this, of course, is some bullshit.
You had to start a whole company, expend all that time and effort and money and heartache and stress and energy, and you had to rebuild Lightbulb and Jigsaw (probably not as well as the originals), and you had to create a go-to-market strategy and find investors and hire and fire and rent office space and advertise and sell and support and all that stuff, and you missed your daughter’s Little League recital and your wife is spending quality time with that guy she told you not to worry about.
And now all the users and companies out there in the world have to review and compare and test and deploy and interoperate and re-train and spend more money and time and energy and effort to use the new app you made.
And now there’s users who want to use Teddy Bear sometimes, but Pig other times, so they have to buy both bits of software and keep them both around and copy and paste between them two hundred times every single day until they want to set Waymos on fire.
Worst of all: now you and I can’t be friends. We could have been best buds and built some awesome stuff together, but now we have to be competitors.
And the whole time, all you wanted to do was just build…
Pig.