I have always wondered what would happen if someone had to invent spreadsheets from scratch, today.
Would conditional formatting and pivot tables get removed, because only 1% of users use them?
Would they feel supporting column, bar, line, area, pie and X/Y charts was just too complicated? That being able to customise the chart styles and colour schemes was just going to confuse users?
Would they think obscure jargon like 'vlookup' was too confusing, and difficult to localise internationally? Would they think formulas were too complicated to ever be a mass-market feature, as well as too difficult to input on mobile?
Would they discover 80% of office suite users don't use the spreadsheet beyond shopping lists, and replace it with a shopping list tool?
My theory is the modern software industry couldn't produce such a product. I don't think I've seen the industry produce a mass market product that requires a comparable level of user expertise in 20 years.
Most of the time it goes way that sales people promise something you build it „because that’s going to be great huge customer” - but after a year or 2 years that huge company moves away because people who originally wanted features moved to other jobs or departments and you are left supporting something some other customer started using by coincidence and is using it in totally wrong way but it somehow works good enough but still initial effort is not paid back and best would be to kill the feature.
But then you start selling to Enterprise and everything changes. Because one missing "hygiene feature"* can tank the the whole deal. And every Enterprise has a different one.
*like a toilet. It needs to be there. You use it 3 minutes per day. If it is not there, the house is uninhabitable.
Damn you must get a lot of fiber.
"Unless it's Enterprise users. Then 1000 Enterprises all care very seriously about 2 custom features no one else cares about. You had to do horrible things to your code base to support, that will only kick some poor dev in the face two years after you left, and a year after the customer churned."
I think you may need to go see a doctor about that, seriously.
https://www.joelonsoftware.com/2001/03/23/strategy-letter-iv...
Which is why interoperability is the most important feature you can embrace.
I get the abstract sense reading this article that the main problem is software and sometimes version specific file formats. I don't mind cobbling three tools together, it's just that the tools seem to mind being used as part of a pipeline.
The dream of Unix is a tricky thing.
[0] https://littlegreenviper.com/the-road-most-traveled-by/#pavi...
So it always appeared to be bloated with features nobody ever used, but actually somebody, somewhere, was using every one of the features. I doubt the number was actually 5% or that usage of features was close to even, but the principal idea seems reasonable. Different users use different subsets of a product.
Yes, this is actually a critical insight into how to find product-market fit
Many people have a similar experience, but it's amusing that statements like this can roughly indicate your age and the systems you were dealing with... Mine is 40 MB.
And the first reason I don't is because I'm not interested in promoting it, and it's pretty pointless to release to no one.
But the much bigger reason is because I'm not interested in implementing the remaining 80% that I don't use myself.
BUT if you can find a feature that few people use, but which requires a lot of maintenance and/or ongoing development time, get rid of that bit and enjoy a higher ROI.
create issue, edit issue, move issue, update issue status, close sprint, repeat
Another thing worth considering is that your users won't actually know what features they are going to get until after they've used the application. Users will install your app not based on what's in the app but based on what they think is going to be in the app after they install it. That's an important distinction. All that hard work you are doing on features won't actually pay off until after you convince people to use the app.
This is especially important when you are trying to make an MVP. Lack of features is almost never the problem that prevents users from installing and staying in your app. Usually the actual issues are with your messaging, marketing, etc. Or maybe your app doesn't do anything that actually interests users. Whatever it is, your feature set probably has nothing to do with it. Adding more features won't solve these issues either. This sounds simple but I've seen companies get this wrong.
The simplest MVP is simply trying to get users to sign up before you even have anything implemented. It's a common pattern to validate ideas.
The best confirmation that your messaging is right is users getting disappointed after they sign up. That's still bad but now at least you know that at least the messaging is right and that you can convince people that what your selling is worth having.
This of course leads to another issue: launching your app before it is a proper MVP for whatever your messaging promises. If you promise lots of things that aren't actually there, you are probably setting people up to be disappointed at least somewhat.
A related point here is that many features are nice to haves that are hard to monetize because they aren't that essential. Especially with SAAS applications there are usually a lot of nice to haves that people don't actually want to pay for. Treating your customer wishes as requirements is going to need a lot of scrutiny. Do they actually value what they get? Would they pay for it? Does it solve some important pain point? Etc. It's more important to understand why they ask for stuff than to exactly deliver what they ask for.
The entire premise of an "application" is, in my opinion, a huge mistake. Each application, by virtue of being just that, is designed to be a silo of functionality and usability. An application monopolizes the functionality for the use case it was designed to apply to. Not only does an application hold its functionality hostage, it insulates itself from the functionality of other applications. This creates a brittle system with incredible overhead.
There's a reason many of us prefer to use a terminal emulator and shell utilities: they are designed with the opposite goal, to collaborate with each other as much as possible. That's often worth dealing with the ~40 years of cruft that the shell comes with, but accessibility could definitely be improved.
Not really the articles core point, but to me at least, those two products are full of loads of stuff I don't want!
I thought VS code was a good example, I'm curious about if anyone has other examples that they think do modularity well?
This is actually a lot of fun to discover.
In the enterprise software (think ERP), each user may be using only 0.01% of the overall functionality. And the entire company maybe using only 1% of the functionality.
Make
It
Stupid
Simple,
To
Experience
Revenue
= M.I.S.S.T.E.R.
i.e. keep removing features until the idea fits in your head, the value can be explained concisely to a small group of people to whom it'll just 'click'.https://untested.sonnet.io/notes/miss-make-it-stupid-simple/
And indeed, we should make sure the apps we write are FOSS, so that those users who care about those various 20%'s feel that its also "their application", and may actually help out - with money or code or time.
I do get why some integrations are beneficial (eg. office software with text editing, spreadsheets and a database, so you can generate eg. letters with data from a database, etc... but every service needing its own cloud and adding a useless AI chatbot is just a useless overkill for me.
That is the starting point. You can get people to care if your application becomes a great tool for the things they want to do. And good tools don't get in your way.
If your users are programmers, engineers or scientists, fine.
If your users are not the above, fuhgeddaboudit. You will end up in support hell.
Notable example of this approach is suckless' programs[1] such as dwm, dmenu, and st.
I also took this philosophy and wrote hat - a hackable text editor[2]. Mostly because tweaking neovim was not a pleasant experience and took more steps than it should.
I only use one of these links regularly, another one occasionally, and the others, if I happen to press it, it was probably a misclick. So about 20% seems like a good approximation.
There is always one or two parts where all data comes together and that is the heart of your application. Yeah those are the parts your users care about and pay you to make.