by npmaile on 3/17/23, 3:25 AM with 327 comments
by leoedin on 3/17/23, 9:14 AM
Of course you disagree.
All the examples - installing and using a package manager, running a command line program - are "simple" from a software point of view, but they're not at all "discoverable". To understand the steps you need to memorise a seemingly meaningless sequence of text.
Of course, the programmer has a very strong underlying model of all of this, and so these commands seem straightforward. But even for a programmer, this stuff isn't very discoverable. I'm frequently stumped by man pages, and end up having to hunt down an example of how to use a particular command line application on Stack Overflow. I've been using linux for decades and I still often can't find where an applications binaries or config live, and I still very often have to type some magic incantation I found on Stack Overflow into the command line, because my mental model of some subsystem of Ubuntu isn't complete enough to know it. None of these things are discoverable - I've got more patience than most in searching Google and Stack Overflow, but it's not exactly a desirable way of using a computer. I would prefer it if there was a nice button in the system settings that did what I wanted.
When things aren't discoverable, they become hard. And people don't generally like doing hard things. That's not exactly a revelation.
by nindalf on 3/17/23, 7:43 AM
But this article doesn’t strike a chord with me. The author fails to understand that it seems easy to us because we’re familiar with it. Of course we know how to transform it into PDF or HTML. But this knowledge isn’t basic, and it’s understandable that people want to stick to what they know.
Here’s an example. Say you had 10000 rows of CSV to slice and dice and extract insights and visualisations out of. All of us would go to the tools we’re familiar with - pandas, R, duckDB etc. But I think the median Excel user probably completes this task quicker and better than the median pandas user. And then if the pandas person is told “oh, just pick up Excel, it’s easy to learn and so useful” they won’t listen. And for good reason! Excel is powerful, but it’s not easy to learn. It only seems that way to people who already know how it works.
Don’t confuse the familiar with easy. Just because it’s easy for you doesn’t mean it’s objectively easy.
by fcatalan on 3/17/23, 5:08 AM
They just know how to type Java on an IDE, maybe some SQL (using some graphical front end), some HTML/CSS. They can't operate in a Linux dev environment at all, can't use the command line or exit vi or perform any kind of simple shell based automation or use git without a plugin for their IDE.
And they also are reluctant to learn because they are self defined into some narrow field that doesn't include all this ops trickery in our workflow that they don't consider real programming.
by atoav on 3/17/23, 6:46 AM
People who used formatting in any 2000s internet forum know in principle how to use markdown.
That aside, I see it as a problem that tech people fail to anticipate the needs of their peers. I know people like that, who dare to say: "Oh you just need to reverse proxy the port on your server" and they fail to realize the person opposite has a face that seems to be assembled purely out of questionmarks.
Explaining someone what a reverse proxy is involves explaining them:
- what a server actually is (confusingly both the machine and the software)
- how/that web clients communicate with that server (HTTP)
- that on that machine there is software running that communicates a local loopback port (127.0.0.1:7777)
- that a webserver can be configured to grab normal traffic coming to port 80 (http) and 443 (https) and forward it to that loopback port
- that this is called a reverse proxy
Most people are not idiots and will understand an explaination like this. Even if they don't they will be happy that you gave a coherent explaination.
I just tend to remember myself and how unclear everything was to me when I was a teenager. What explaination would that former me appreciate? Sometimes the most important thing to say is something extremely obvious that helps the person to conceptualize the whole thing (e.g. clients communicate with a server and a server has ports).
by flamebreath447 on 3/17/23, 5:45 AM
1. There are a decent amount of software engineers or programmers whom literally aged at the perfect time to organically learn these tools that later became fundamental. If you even touched a computer from the 60s to the late nineties in a engineering aspect at all, you were bound to have worked in a terminal, worked on computers with a single core, worked on computers with very little memory, had to either get comfortable with some lower level tooling or build your own, at some point had to mess with networking or at least understand how packets were being sent and received, seen and gone through iterations of version control and saving your work, automated task using shell scripts.
2. While there is a plethora of knowledge, videos, tutorials and flavors of ways to learn these things; the sheer volume and breadth that presents to newcomers is daunting. Yes you can learn Git, but there are so many ways to do it that it can cause analysis to paralysis. Building on point (1) if you learned it early there were only a few ways it was being done or even shared in smaller communities. Too many choices or paths can lead to just using the way someone showed you without digging 1 layer deeper just because you might not know better.
All of those things you ‘caught’ by being at the right place at the right time are a privilege. Please don’t look down on people trying to aspire to learn or want to enter into this field that haven’t got there yet.
Coming from a family of immigrants and being the first person in my family to graduate college + enter SWE. I cannot count how many times other engineers were rude, made condescending remarks or discouraged me by shoving these expectations in my face as failures instead of taking the opportunity to teach (I was always open to learning).
by twawaaay on 3/17/23, 5:32 PM
When you ask your wife to fetch you from work at 5 you don't have to explain:
* That she needs to take a car,
* That there must be enough fuel in it,
* That she has to plan some time for the drive and add extra if traffic is expected on the way,
* That she needs to let you know if there are unforeseen circumstances which will likely mean she won't make it.
And yet for some reason, whenever the topic of doing anything at the computer comes up between us, I feel like I have to start from scratch.
"The printer does not work again. Can you help?"
"Is the printer on?"
"Can you check it, you are better at it"
Checking the printer... of course somebody turned it off.
I think there is a combination of laziness and probably something else which makes some people treat computers as not their problem. For the most part the companies making hardware and software cater to these people making stuff they care about as intuitive as possible. They are fantastic when it comes to activities that make ads pop in front of your eyes.
The trouble is with everything else.
by jonahx on 3/17/23, 4:39 AM
Judged by the standards of a programmer, yes, the suggested solutions are simpler. Judged by the non-technical coworker's standards, no, they are new and therefore scary and harder. You might say, "If they expended even 5 minutes of effort, they would not feel that way." But that's 5 minutes more than just using the thing they're used to.
by jpgvm on 3/17/23, 4:19 AM
Often non-technical folk are only interested in "easy" solutions.
Technical folks are more inclined to pick simple solutions.
The perception of simple being hard mostly comes from simple often eliding things like a GUI which is inherently complex and overkill for a good number of tasks. However users have been conditioned to think mouse == easy and keyboard == hard.
by Swizec on 3/17/23, 4:23 AM
> "Why would you do that in the command line? It's way easier using $Program"
A concerning observation that’s slowly dawning on me is that more and more programmers don’t know how computers work. They can write code, build software, and do lots of useful things. But they have no idea how computers work. They’re more akin to lusers as we used to call them than they are to hackers of old.
Fantastic at their specialty and the tools they use. But move a button to an unfamiliar place or throw them into a new (but fundamentally same) environment and they’re lost.
The realization came a few weeks ago when someone shared The Missing Semester of Comp Sci on HN. It’s full of basic things you’d expect any programmer to somehow magically know … but they don’t learn this anymore. https://missing.csail.mit.edu/
Seeing that link shared connected the dots in my mind. I’ve been wondering for months ”Why does everyone at work have so many random local environment issues all the time?” … it’s been working fine for me for years. Same code and hardware. ¯\_(ツ)_/¯
Maybe I’m just getting old and grumpy. I’m sure folks older than me thought “wow kids these days know nothing” when we came on the scene …
by jerf on 3/17/23, 5:19 PM
Most people receive the training where opening up Word is not difficult, and then once they've done that, there's no step up. They press "a", an "a" appears on the screen. They have buttons that do things like italicize. The first few steps are easy.
It may be the case that after that there is a brick wall in the difficulty curve, whereas the programmer-favored solution is a smooth easy curve for quite a ways. But that first step is sufficient to block most people, and people are often happy to just give up in the face of the brick wall.
This is not unique to programmers. A lot of the "maker" disciplines have a similar step curve. A lot of times it's just that first step that is the hardest overall. But it's enough.
by AndrewPGameDev on 3/17/23, 7:45 AM
I wish "normal" people were more tech-literate. I don't think they realize just how much of their autonomy they've given up by choosing to use Microsoft Products/Reddit/Twitter/Spotify/Facebook/TikTok/Apple Products/ etc.
We're at a point where now the average person depends on several layers of technology that they can't even conceive of, and often the companies building that technology don't share their political interests. But then the average person expresses frustration at having to use open-source alternatives (which is completely understandable when the open-source alternative is definitively worse!).
Basically, for me not understanding how technology works when it's so central to our everyday lives just seems baffling. I suppose someone could say the exact same thing to me about not understanding how my car works, or how to grow my own food. Maybe technology seems easier to learn than agriculture? But then of course it's easier for me, I'm a professional programmer. So I try to have a lot of empathy for everyone who doesn't understand technology, especially my mom when she doesn't know how to convert a PDF.
by roenxi on 3/17/23, 7:49 AM
They know that engineers (and programmers) are in the same rough class as all the other professionals. These conversations showcase the confusion as they try to figure out what problem programmers are there to solve. Other engineering disciplines also suffer from this - engineering is a subtle art. Nobody knows what we actually do except the rest of the brotherhood :(.
The first example is a really good showcase. They really don't want to be walked through how to solve their problem. The point of the specialist is supposed to be that they solve the problem in exchange for payment. They don't understand that programmers are really all about adjusting the cost of taking action rather than acting directly.
by INTPenis on 3/17/23, 9:27 AM
Programs like Microsoft Word are amazing, even Richard Stallman himself has praised it. So there's nothing wrong with Microsoft Word, but some people just feel like a GUI is a bottleneck.
I'm speaking for myself here first and foremost but I know there are literally dozens of us. ;)
Why choose markdown over Word? Why choose CLI over GUI? Why choose Linux over Windows? Because it's just quicker, it allows me to get my ideas out faster than the alternative.
But I'm not saying we don't have some work to do on inter-personal relations and how to deal with end users and clients. We definitely do and I work on that every day.
I think it comes down to memory capacity. If you can remember several languages, or command line syntaxes, or programming languages, then you can use that to get the same results as any GUI program, much quicker.
by bdcravens on 3/17/23, 6:55 AM
Empathy is one of those skills that is as, or more, valuable than any particular programming language.
by sebastianconcpt on 3/17/23, 2:27 PM
BTW this can happen to any field, not just tech. It can happen with intellectuals, philosophers, medical doctors, blockchain lingo, AI lingo, devops lingo, telecom lingo....
Fortunately! Now we have AI which is insanely good at summarizing and explanning anything like I'm 6y/o so that little expert trick just got massively nuked and has its days counted.
by Version467 on 3/17/23, 6:02 PM
And yet this isn't so.
The reality is that peoples problem solving skills are absolutely atrocious. They don't even try to figure shit out. The maximum number of inferential steps the average person is willing (or able?) to make before throwing their hands up and exclaiming "this is impossible" seems to be somewhere between 0.5 and 2.
There seems to be just enough stuff you can do without having to ever really think for yourself that people are content with not understanding.
This is so far away from my own experience that I really struggle with understanding it. Obvious knowledge gaps and noticeable confusion are two of my biggest motivators. I cannot stand not understanding. It feels like giving up agency.
Wow. I got quite angry there for a second. I guess I need to examine that frustration a little more.
by sqs on 3/17/23, 5:14 AM
by docandrew on 3/17/23, 5:12 AM
And I find myself wondering if I’m beginning to serve technology rather than the other way around.
by altacc on 3/17/23, 8:53 AM
Normal computer users want programs with dropdown menus and they are faster with those than we are when we have to look up a command or function that we rarely use. I know people who can filter & pivot a complex dataset quicker in Excel than I can in SQL.
I think it is safe to say that most programmers occasionally encounter something they need to Google for and dig through some stack overflow posts to find the syntax. That would be necessary almost constantly for a non-programmer and it's just not an efficient use of time.
by sofandsoc on 3/17/23, 9:25 AM
two things; - I think it boils down to people not having 'poked around'. I grew up on DOS / early windows, when messing about, learning commands, configuration files was needed to install and run games (or new hardware). New game, new challenge. This learning process was part of the use of a computer to me. It gave me enough confidence and knowledge to 'try things' in later Windows or software if things were not working. To most people i'm a 'computer guy', yet when it comes to Linux / unix / mac I have no idea how to get around.
- being overwhelmed / debilitating alienness (for lack of a better word), when they dont have adjacent knowledge & confidence. It's not just the transfer of knowledge, but often a çomfort of familiarity that is needed. My wife was a basic computer 'user' who would panic or blank out when she got simple technical instructions or something went wrong. I quickly learned that it was more helpful to show her we can just poke around, and it's ok to not completely understand something. We talked about how to communicate computer problems, and effectively use google. She got over the 'deer in headlights' syndrome, and now actually welcomes any new computer topic - while working in IT service desk!
by charlie0 on 3/17/23, 2:39 PM
It's easy to forget how many countless hours I spent learning how to Google for the right command line args and picking up little tricks here and there to chips at problems until I've solved them. Take a deep breath and give everyone else who can barely use their keyboard and mouse to do their work a break alright. Not everyone enjoys bashing their head against the wall to solve these things the "easy" way.
by DeathArrow on 3/17/23, 12:32 PM
As a programmer I sometime prefer the world of clickety-click GUI instead that of command line. Doing something in a visual way, requires no knowledge. You just discover how to do things as you do them. Using the command line requires me to learn paths, steps, command line arguments, the order of the command line arguments and also memorize them.
Some times I prefer the command line.
I know that for some folks VI or Emacs is better and more productive and faster, but for me Visual Studio is that and more.
Maybe there isn't one objective truth, and for some persons the command line and text editors is better and for other folks the visual stuff is better.
by cmiles74 on 3/17/23, 2:07 PM
I don't have a solution, but I think we have two big problems: the rigidity of the GUI (it's difficult to combine operations, in some cases impossible) and then arbitrary gatekeeping of features for dollars (why can't the free Acrobat export PNG files?). For every tool like Excel, we have another "simple" tool that is nearly only one possible workflow.
by marymkearney on 3/17/23, 11:33 AM
For example, you can theoretically know how to change a tire, or how to use Photoshop to replace a color in an image, or how to troubleshoot a printer. But you only run through that series of steps occasionally, when there's a specific problem to solve.
by cushychicken on 3/17/23, 11:46 AM
https://cushychicken.github.io/python-guis-for-heretics/
Might find it interesting.
by lxe on 3/17/23, 4:50 AM
by solarkraft on 3/17/23, 9:39 AM
I know my way around Markdown, but I just don't like it. I'd rather directly see what I'm working on rather than a weird approximation.
(I don't like hidden or direct formatting either, which is why I do sometimes use Markdown)
by egypturnash on 3/17/23, 6:47 AM
I try and try to explain that this arcane system of monochrome text and rendering steps is ACTUALLY easier than editing in Microsoft Word, but my pleas fall on deaf ears.
Easier for you, who probably has an auto-activating mode in your text editor that highlights Markdown. Not easier for someone whose only plaintext editing tool is Wordpad. Not easier for someone who can hit command-i to turn on and off italics as easily and thoughtlessly as you type .
And of course it is a simple program, but whenever the first step is opening a terminal, it is no longer simple*
To you, the terminal is a comfortable place. You have learnt all the arcane incantations, including the ways to make the terminal help you craft and remember them. To them it is a mystifying place, with little guidance, and the possibility of totally fucking up their computer if they type the wrong thing.
I tell them to execute the simple and easy step of running $PACKAGE_MANAGER install $PROGRAM, and they don't want to do it.
And then you list examples of exactly how you have learnt all the arcane incantations. You have ten different package managers on your computer already, and know how to use them.
"Can you help with my printer" "no"
Fair enough, really. Drivers suck.
What was the point of writing this post? I don't know. [...] Maybe I just need to have a little more empathy (or is it sympathy?) for normal people.
Yes.
Find someone who refuses to use your cryptic incantations, and find out what they're really good at. If you can find someone who's frighteningly good at a thing, who's been doing the thing at a professional level since before you're born, that's the best. If it's something you have no interest in doing yourself, that's even better.
Ask them their stories of the time they had to work with someone who was completely clueless of their craft. Ask them how they do something that looks impossibly complicated to you with next to no effort. Ask them to walk you through doing one of those things in enough detail for you to do it. How immensely tedious does this start to sound? How many times do they use a word you've never heard, or a word you're familiar with in a way that is pretty clearly having a very specific meaning to their craft that is not the same as normal usage? What tools do they refer to; how many of them do you have casually sitting around your life, and know how to use with even the vaguest competence?
by b0x68 on 3/17/23, 1:27 PM
And please… (to those writing docs) always include examples. So many man pages lack examples; it can be very frustrating.
by eviks on 3/17/23, 9:10 AM
Like the cli example "explain how simple it is to just convert -density 300 input.pdf -resize 50% output.png, and I'm met with a blank stare"
Why would an unsuspecting user ever need to remember (or worse - look it up) that density is "-density" and resize requires explicit % when a GUI app can show the most common flags right there, with in-band help and validate your input (was there a typo in a file name and inupt.pdf doesn't exist?) in real time?
Or the markdown example with tables, which are especially painful to edit one you add just a bit of complications like formatting, which break your tabular alignment, practically requiring you to use both md and formatted output Why would you wish regular users this pain?
by DeathArrow on 3/17/23, 12:39 PM
I've been asked by others to install software, repair PCs, repair laptops and even modify or replace firmware on phones. Sometimes I did it, if I had time. But for my personal needs, I always called a technician or went to a repair center.
As for programming tasks, I did many: C++ desktop software, Windows device drivers in C, embedded software, websites in HTML + JS, video games, mobile apps, hacked Android kernel modules and libraries, web backend, web frontend, microservices.
If you have the time to learn the business domain, learn tools, frameworks, libraries, APIs - you can work on anything. "Doing" things is different, because some projects are quite huge, impossible for one person during his life time.
by jamesgill on 3/17/23, 12:59 PM
by nitwit005 on 3/17/23, 7:21 AM
There is often an office Word or Excel expert, despite the whole floor spends all their time in those apps. The expert is just the person who was willing to poke around the app or Google things.
by kome on 3/17/23, 5:48 AM
by User23 on 3/17/23, 5:24 AM
So true. I can’t even help myself with the blasted thing.
by gregjor on 3/17/23, 5:39 AM
The secret world of auto mechanics: “Just change the air filter.”
The secret world of electricians: “Turn the circuit breaker off and back on.”
The secret worlds of chefs, carpenters, doctors, lawyers, … I could go on and on. Why would programmers expect people not invested in programming to know this stuff, or care?
I only care about ignorance of jargon and specific skills when demonstrated by so-called professionals. A “programmer” who can’t install from the command line seems like an auto mechanic who can’t open the hood.
by grose on 3/17/23, 1:12 PM
by vfistri2 on 3/17/23, 9:29 AM
by beeforpork on 3/17/23, 12:19 PM
Unless 'aish' has crashed.
by analog31 on 3/17/23, 10:36 PM
"It's simple. Here's a terminal command you can use."
It will return an error message on the first try. After much back-and-forth over chat, I'll come to your cube and see for myself that it returns an error message, then find a few more commands and settings that were needed to make it work. The same commands won't work the next time.
"Just use markdown."
The 80/20 rule looms large. Markdown will produce a readable document, but I won't be able to tell you how to make it conform to an existing aesthetic style, or even know where to look for that information.
by dieselgate on 3/17/23, 4:50 PM
The difference being most software/tech workers largely make their salary from non-tech savvy consumers so I don’t know, maybe some more perspective is needed in dealing with “normal people”.
But also helping out with printers and stuff is lame, as mentioned I understand where author is coming from.
Edit: I guess my point is - rants are totally fine if labeled as such but this doesn’t seem very constructive to me. Hopefully us tech savvy individuals can help level up everyone else
by Yenrabbit on 3/17/23, 5:29 AM
by rhacker on 3/17/23, 1:15 PM
This is a super condescending thing to say. Let's say you're a lawyer telling a client why you can't do something. The language you're using is pretty harsh.
> Maybe I just need to have a little more empathy (or is it sympathy?) for normal people.
You are also a "normal person" I don't understand why developers sometimes think they are gods or something.
> Can you help with my printer. No
No explanation on this one at all? That, again, is a rude response.
I've been saying this for a while, but the pay we provide to developers was a mistake. It has created a class of people that think they are gods. Come down from your soap box, learn real empathy, decide you are a Normal Person yourself and get rid of your condescending attitude.
by actionfromafar on 3/17/23, 5:03 PM
This is the one for me. Yes, yes I could.
If I spent a year learning how to do $THING.
So after that exchange, I'm either stupid, or more likely "Well, if you didn't want to help, you could have just said so".
by theK on 3/17/23, 7:05 AM
On a tangent,
> Can you help with my printer?
Related Ask HN: https://news.ycombinator.com/item?id=35165560
by II2II on 3/17/23, 9:19 PM
Alas, as the article states, it is as though you are speaking a different and very intimidating language to non-technical users so the end result is nowhere near as positive as it should be.
by Havoc on 3/17/23, 9:57 AM
Anytime you speak to any subject matter expert they're likely thinking "ok what's the simplest way I can phrase this for this idiot".
Not sure what the solution is beyond being kind & understanding & patient
by zokier on 3/17/23, 2:04 PM
by WalterBright on 3/17/23, 4:45 PM
For example, there was one office where the engineers were affectionately known as "swine". (I'm not sure how that came to be.) If an engineer did some particularly clever piece of engineering, the ultimate compliment was to call it "swinish".
To an outsider, this made no sense at all, but it worked for us.
by deafpolygon on 3/17/23, 6:48 AM
The problem isn't them, it's us.
Why DO we expect "normies", as it were, to understand Markdown, text editors and the holy war of Plain Text?
Why are we going backwards with our tooling?
by jevgeni on 3/17/23, 7:30 AM
by willismichael on 3/17/23, 3:36 PM
"Oh, you're a programmer, Can't you do $THING"
I always respond with "I don't really know how to do $THING. It's kind of like asking the piano tuner to play a sonata. They might be able to, but just because you can tune a piano doesn't mean you can perform a piece of music on the piano."by analog31 on 3/17/23, 2:43 PM
"Simple" means "uses abstractions that I've learned by trial and error but can't explain."
by langsoul-com on 3/17/23, 6:49 AM
by helsinki on 3/17/23, 12:27 PM
by clircle on 3/17/23, 2:25 PM
by voicedYoda on 3/17/23, 2:26 PM
by jwsteigerwalt on 3/17/23, 10:27 AM
by pdntspa on 3/17/23, 5:19 AM
by maze-le on 3/17/23, 2:58 PM
by jeffrallen on 3/17/23, 2:07 PM
LOL. No, because I can never get the ducking things to work either.
by Clubber on 3/18/23, 4:09 AM
>no
Can you do my taxes for me? I hate printers as much as you do.
by acdw on 3/17/23, 1:26 PM
by JohnMakin on 3/17/23, 6:48 PM