Don't create for an imaginary group of people
sarvasvkulpati.com
sarvasvkulpati.com
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.
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.
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.
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.
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.
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!
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."
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.
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).
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.
An audience of one is specific. Whether it’s you or someone you know well, there are clear preferences that you can cater to. They have a manageable number of needs and pieces of feedback. Which means that creating for an audience of one is specific and attainable. You have a goal post that can tell you whether you scored or didn’t, so failure and success are both explicitly defined. Now, you know what to make, but more importantly, you know exactly when you’ve failed making it."
Interesting quote. What was not mentioned is how to find the audience for what you create; whether it's a new thing with a new market to be created or an improvement on an existing thing with an existing market.
An interesting blog on why it's important to find the right audience for your work is https://leveragethoughts.substack.com/p/cracking-the-who-you...
The entire premiss of that book is to avoid "faceless audiences" but to talk actual people that you think should or could be your customers.
Once you know it is important to find the right audience, the next step is to actually find them and engage. Which is what this "lean canvas" thing is about.
This. 100%
I have an imaginary audience that I've curated over the years. I use them to critique my draft poems. These voices are people I've met, both online and in real life, in various poetry forums and workshops. They are people who have given me valuable advice about draft poems - advice that I've internalised over time to the point where I can self-critique my new work as I redraft without needing to constantly badger the real 'them' for feedback. They are the people I want to write poems for - even if they don't know it.
OTOH when I listen to an audience of one - me - for feedback on some non-poetry work[1] then I do it knowing that the work is going to end up as Outsider Art[2]. This state of affairs doesn't particularly bother me, but sometimes I do get sad that I've taken paths that real people are unlikely to be interested in. Maybe in fifty years the Posterians will notice, like they noticed Wilfred Owen back in the 60s.
[1] - I posted links to some of my less mainstream works a couple of days ago in another comment, so no need to repeat myself here.
I wonder if there is a way to fix this problem, kind of like a software patch for the nodes in a cluster. In this case though, the nodes seem to be resistant to patching, even if they might desire it...like there's some sort of other software (or something) preventing it.
I think we write or create for some faceless other in part because it's easy to criticize and criticism is rampant and people are happy to dog you, your writing or your creation for any old reason. People start trying to figure out how to defend against that and it's not unreasonable to want to defend against that, but it can end up putting the cart before the horse.
If you are writing or creating from a defensive position first and foremost that will impact the creation. It will tend to be all defensible facade and little real substance behind that.
Get to know your audience, try to make sure your audience is some specific individual or some real group of people to whom you can genuinely relate and then consider tweaking it defensively after the fact.
Smartphone users already had devices they loved like BlackBerry and Palm Treo, not to mention Nokia, etc., but Apple stupidly introduced an "iPhone" that was very different from what smartphone users expected and were asking for. iPhone was like a shrunken version of the failed Microsoft Tablet PC, but without the nice stylus and Windows compatibility. Nobody besides Apple fanatics wanted one - until they actually saw it in action. All of a sudden a Treo-like Android phone didn't seem viable anymore, and Android had to pivot.
Ironically Apple did eventually end up delivering cheap, fast UNIX machines that run all day on batteries and fit in your pocket or backpack.
The subtle thing here is that experience is emotional, not mechanical. It can be difficult to stay attuned to your emotional intuition while you are analyzing and coding all day.
was also when I started disagreeing. Sure, your gut-feeling is a good guidence. Asking yourself "do i need this polished" or "would I stop using the software if X is removed" is great advice.
I disagree because I think better advice is to make it slightly more scientific: "Most people would jump ship to a competitor if I remove X" is easily proven (just remove it), but also researchable: remove it for a cohort. Ask 10 random customers. Check your event-log or database if X is actually used currently.
[0] Forgot video: https://www.youtube.com/watch?v=-QMHOsfjHq0
Timestamp when he talks about the general peer https://www.youtube.com/watch?v=-QMHOsfjHq0?t=1228
The more common "creating for an imaginary group of people" problem is creating a product for a too-narrow niche. You see a lot of those if you go to VC presentations. It's classically a problem of writers writing their first bad novel.[1]
In my experience, the opposite is more common. Instead of just nailing core feature A, devs start thinking that users will want features B, C and D as well. And this is before even entering beta.
Of course, there are many possible users, so there may be many personas. Persona development lets you decide which one or two to prioritize.
Cooper use the term "The Elastic User" to describe what this essay describes as "The Faceless Other", and the associated vagueness.
If you are writing software for software developers then you can likely follow the HP approach - "design for the guy at the next bench".
If you write software for non-software developers, it's harder to know if your personal views are a good guide.
Am I allowed to use the word "black" to describe a visual aspect of an evil character? Am I allowed to release code with a master branch? What if I misgender or deadname someone accidentally? What if I don't have a code of conduct?
Creating anything right now is fscking terrifying.
But it's also rare enough that you shouldn't let it stifle your creativity. Don't worry about Twitter coming after you over some misunderstanding. There are far more important things to worry about. I'll tell you my biggest worry: making something no one wants.