https://blogs.msdn.microsoft.com/oldnewthing/20091123-00/?p=...
One way to empathize with users is to recognize that, to them, your software is a combination of an IRS form and the game Myst. It's filled with inscrutable, unknowable, questions, each of which, in any combination, produce arbitrary state changes in the rest of your program - and perhaps even the rest of the machine (or the internet). What's incredible to me is that this is not an unreasonable state. Real-world software has been forged in the fire of market forces, and contributed by remarkable individuals. Many of them have known computer science theory, but more than a few did not. Indeed, many computer science PhD has gone to his grave without writing a single useful program for other people to use! This, to me, is quite sad.
But I digress.
King's Quest seems a more fair comparison IMO.
[0] https://www.apple.com/today/event/ipad-basics-63381241581444...
Printing photos directly from an iPhone was solved for everyone else and I barely even noticed it happening because I still print from my laptop.
I see you’re an Android user!
Simple joke, don’t get flame baited. I’m sure there is something similar on Android but on iOS all you have to do is AirDrop to your computer. Takes 2 seconds.
I don’t call people users anymore, every employee at my company that I support is a customer of mine - I’ve learned over the years that the vocabulary change can really affect how you interact with people. My team writes internal LOB applications, we’re a medical billing company and not some hip startup; when you call every employee in the company “user” there’s a certain level of animosity (unconsciously best case) - they USE what you provide, it’s the same reason I’ve grown to hate the term “consumer”. A customer is someone you have a relationship with, respect and trust go both ways - ultimately the goal is to have a mutually beneficial relationship.
Being human even I have moments where my level of empathy drops below acceptable levels, when people keep reanimating dead tickets with unrelated issues I can get a little curt (don’t do that, now I’m going to send this to the service desk since development doesn’t work with the spam filter) - but overall I really enjoy the relationships I’ve built with everyone I support. When I get 20 tickets in the morning because a critical application is down I’m not racing because we’re losing $10,000 a minute or to meet an SLA - it’s there’s over 800 people, many of whom I know individually, who are relying on me to get it working again so they can get back to work (and for a production-focused company we have a shockingly low turnover rate, our employees generally love what they do).
When you box yourself into the "But, I'm an engineer" corner and decide it's beneath you to talk to customers, you limit yourself. Don't do that. Become a more well-rounded person. Talk to your users. Understand them. Empathize with them. It will make you a better engineer. And if you're a solo founder or part of a small team, it's even more critical that you do this.