A random person from the street would not be able to fix a trivial problem/bug in some software - let's say a missing runtime package on linux.
I think you wildly overestimate the cleverness of the average Joe. I watch users struggle with basic GUI concepts. Add in learning a specialized language and support libraries? Joe can figure out a wrench by looking at it. He's not going to get very far with a shell prompt.
At least on a command line you can get somewhere with trial and error:
$ ?
?: command not found
$ what do I do?
No command 'what' found, did you mean:
(...)
$ help me
bash: help: no help topics match 'me'. Try 'help help' or 'man -k me' or 'info me'.
$ help help
(...)
A diy plumber who doesn't know of the existence of teflon tape is always going to have some leaky joints. However, as I asserted, I agree that most people can figure all this stuff out pretty easily, I just think most people are too intimidated or just not interested in trying in the first place.To put it another way, I've found that the concepts of "hierarchical filesystems" and "drain waste vent stacks" are equally foreign and equally accessible to average laypeople.
I have no background in plumbing - in fact, as a new homeowner, I just learned what a compression fitting is ($#@%!). I read https://en.wikipedia.org/wiki/Drain-waste-vent_system and... it seems pretty straightforward. I could build this, if perhaps with a few more trips to the hardware store than a professional might make.
On the other hand, I work with databases every day. I wrote ROLAP engines in the 90s. And yet this is probably the first time I've ever used the term hierarchical database in a sentence. If you said "here's this hierarchical database, generate a report for me", it would take me some hours to figure out what kind of db it is and how to actually use it. If you asked a layman I think you would get a blank stare.
Not to belittle the craft, but there's something intuitive about plumbing. Software is something different.
Also, people new to programming and command lines are seemingly incapable of reading error messages.
Aren't all people seemingly incapable of reading error messages? (ignoring the rouding-error-amount of people who do)
Initially I wanted to give an example of fixing a missing include/import in the source code followed by building the binaries as a trivial software development task, but I think we can agree that regular random Joe has about 0% chance of figuring out that, so I toned it down to just a missing runtime package.
and also there are a lot more people around who have the mental capabilities to learn plumbing than there are people around who are capable of consistently apply the abstract thinking patterns that involve software development.
https://www.seattletimes.com/business/real-estate/pricey-sea...
I think it's just confusing different terms. I'd say the bulk of programming is similar to plumbing - maintaining, resolving issues, etc. But that software engineering is more similar to engineering in general.
A mechanic works on cars, a mechanical engineer would design the components. Much like IT consultants/administrators would maintain systems and do minor coding, but engineers would deal with architecture and new designs and more advanced solutions to common problems faced by IT.