People work for free on things they enjoy and not what others want. This is no shocker.
I don't have builders building me a house for free just for the fun of it. In general in the world, if you want someone to do something that you want and not what they want, you have to compensate them for this work. And this works fantastically for areas where people are willing to pay. The consumer hardware we have today is mind blowingly good and the software to go with it is outstanding.
It is true that "empathy" probably won't help much, though.
Based on my personal experience, any software that requires a large team to build and maintain seems to be better when it's commercial (and usually proprietary). This is not the case for one-man software projects.
NodeJS tried to move to an industry governance board model around the release of 0.12, where commercial interests took part in running the project. It nearly killed nodejs entirely.
It would all be even better if 1) knowledge was de-commoditized (since thanks to digital tech knowledge is now already a non-rivalrous good as it has a zero marginal cost of reproduction) and 2) we used transparent p2p supply chains (http://valueflo.ws + http://holochain.org).
I think today's world is a black box hellworld. I don't think hardware and software are high quality at all. Proprietary tech is a straightjacket. I believe we can definitely escape this hellworld though. Some even say overcoming it is is essential if we want to make it out of global warming:
"The current political economy is based on a false idea of “immaterial scarcity.”
It believes that an exaggerated set of intellectual property monopolies – for copyrights, trademarks and patents – should restrain the sharing of scientific, social and economic innovations. Hence the system discourages human cooperation, excludes many people from benefiting from innovation and slows the collective learning of humanity.
In an age of grave global challenges, the political economy keeps many practical alternatives sequestered behind private firewalls or unfunded if they cannot generate adequate profits."
I don't agree. I think its impossible to make good software without deeply understanding the perspective and needs of your users. Money can be used to hire empathetic designers, but its hard to beat software designed and made and maintained by its users directly.
I worked with a designer years ago who organized a series of user study sessions with our prospective clients. She insisted on each engineer on the team going to at least one of those sessions with her. I thought it was a bit silly - but I went to a couple of meetings and I was shocked. It was hugely eye opening for me - I learned so much. It made our product better, too. Down the track I added some small features to our product that nobody asked for, but which were easy to implement and which our clients loved. It wouldn't have occurred to me to add any of that stuff if I didn't first sit in those meetings and hear things from their perspective.
This is a massive generalisation and one that I don't think is as clear cut as you make it sound. Most businesses in my experience would happily replace a horrible hard-to-maintain legacy system if...
* It could be done for a reasonable cost * It wouldn't take ages to do or at least they know how long * They knew how to find the right product amongst thousands of sales people telling them to use theirs * They could find a reliable way to migrate to the new system * They weren't heavily regulated and knew they were on the hook for millions in compensation if they get something wrong
I think a bigger reason is that the software engineering industry is only just starting to form a formal trade where quality is assured by agreed processes and you are more likely to get consistency across suppliers closer to medicine and law. At the moment, there are no agreed worldwide regulations for software, there are no requirements for software engineers regarding experience/qualification and many other reasons.
If we can solve some of those, or at least get close, then we help derisk businesses who want to stay competitive but are currently too scared to!
For example, there's no easy way to search the app store or Google play for free software with no ads, in any sense of the word free, because free software without ads isn't profitable. All the top ranking app review sites are listicles for ad-supported or paid apps, because those apps have marketing budgets. It is easier to find a FOSS app's github repo and navigate to the play store from there than it is to find FOSS apps on the actual store.
In general there's less profit to be made from showing someone high quality free products than low quality paid products who'll give you a cut of the take.
Immediately, SAP NetWeaver comes to mind. The whole architecture, concept and experience is violating every possible UX guideline of any operating system - and has never been updated since the 80s.
Every single person I've talked to hates SAP for various reasons. Nobody understands why there's no alternative, and nobody understands why SAP exists in the first place. And everybody hates that SAP created the optimum lock-in scenario; where they fictionally created the maximum amount of cost for companies trying to switch to another, more modern, system.
The advantage SAP has from an enterprise's point of view is "automated" accounting that theoretically can be integrated into third-party software, like the software that sends out bills via mail to customers.
Usually SAP is too bloated for everyone, in Germany we would say "mit Kanonen auf Spatzen schiessen" because it's too much overhead for maintaining/licensing the system vs. just using a simpler alternative that likely even is open source and can be modified quickly to your needs.
From a selling point of view, SAP is always sold as "it can do anything out of the box" without any development resources necessary. While that's far away from the actual truth, most CEOs believe that kind of stuff and just buy the service; which is contracted in a way that it has a minimum lifetime of years (usually 10 years+) until you're allowed to change to an alternative.
Legal requirement to archive all bills 10 years does the rest, et voila, you have a working Dip nobody can exit out of.
Trying to please other people is how a market economy functions. You do not produce the things that you would ideally want to produce but the things that other people need.
I think the issues you raise are totally correct, and don't just apply to entrepreneurs. Most developers will, if given the choice, build complexity into products. They will develop things that are fun to develop, not fun to use. And when people want to build a new business, they will usually try to build things that are fun to build...not many people want to build things for water treatment plants or waste disposal operators, that isn't fun or cool.
So I think there is a way in the middle. You should be guided by your own want (but that want should be the product, not building the product) but business is about serving customers. The puzzle over market fit is strange to me...if you aren't building something that other people need, that isn't a business. You have to respond to the market, other people as much as be guided by your own beliefs.
Side-note: you see this in almost every walk of life. Craftsmen prefer old techniques that are fun but result in lower quality. You see it in medicine. Investing is an interesting one too...you only get paid if the world comes round to your view but some people will actively shut out the opinions of other people...that ends badly 100% of the time because you are shutting out the only information that will stop you from making a bad decision (eventually).
But if you build for yourself you a) know what you want b) There is only one you
Hmm, can't say I agree with your second point. The industry standard version control is notoriously messy and hard to work with.
One of these years I'll be comfortable with git. Maybe next decade.
https://learngitbranching.js.org/
You can probably complete that in less than a day
I Just copy blindly off the cheat sheet.
hopefully something better will come along.
The GUIs never expose the full power or standard error messages that the CLI will. Had a case where gitlab was blocking a push because the master branch was protected. The git gui gave the wrong error message about why the push was rejected.
I think there is tremendous value in life in thinking about how to leverage your abilities to the maximum effect to serve and make an impact on the others, even if it might imply giving up part of what you thought you personally like to do the best. (Cal Newport's idea and his dislike towards the "follow your passion" slogan is somewhat similar to this.) A simple example would be trying to build something in your favorite but esoteric programming language which pretty much nobody else uses, instead of using a boring but mature technology with a lot of community support, which practically all big companies do. Will your pet product reach millions of people? Unlikely. Will you lose some of the "personality" that you tried to cling to, if you either join a big tech company, or grow your own company rapidly using battle-tested technologies? Probably. But in the end most wisdom seems to suggest that being able to serve the others (and by definition millions of others are bound to be "faceless") will be ultimately much more fulfilling and mature than attaching too much self-importance to your own peculiar quirks and beliefs that you just can't let go of.
Yes I build for myself foremost, and if other people get to use my tool, then that's a bonus. However this comes with the caveat of having to build in business logic from the get-go (Unless it's FLOSS in which case it's a free-for-all and I would be working for free).
But on the flip side, a lot of the software regular people use for their jobs is awful. As software engineers we've built lovely tools for ourselves (development environments, version control, etc). We've scratched our own itch. But we collectively don't feel a lot of empathy for folks in other industries. So they end up with bad, missing or massively overpriced software as a result.
The answer is to go outside, and make friends with people who aren't software engineers. Pick up a hobby or a craft. The best software is always made out of necessity.