Having helped people with both software and plumbing problems I am not convinced that "a random person from the street" would be able to trivially tackle any plumbing problem. In my experience random people consider both software and plumbing to be black boxes they don't need to understand. Most people would have no idea what tools to buy to even approach the problem. I have no doubt that with the right documentation and a little handholding the average Joe could figure out a fix for both small plumbing leaks or trivial bugs in software, but it would take much more experience to design the plumbing system in a large building or to architect a new complicated software application.
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.
Sorry, I should have italicized any in my post. As in I don't think the average user can solve any plumbing problem or fix any software bugs without additional resources: documentation and/or assistance.
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 still think you're still off by two or three orders of magnitude of difficulty.
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.
In my experience, most people are too afraid to enter the initial `?` in the command line for fear of breaking something. I imagine many would be afraid to do anything with the rench for the same reason.
Also, people new to programming and command lines are seemingly incapable of reading error messages.
I agree. Plumbing is physical and real - you can touch it and easily observe it. There is no abstraction to it, there are only a few driving concepts (like gravity.) The fact that plumbing has been around for 4700 years and 'computing' less than a century speaks to their inherent complexities.
With respect to their normal, day-to-day experience, a random person - at least from my generation - would be as likely to be able to fix an equivalent small software problem, because they have experience with e.g. reinstalling software, installing missing drivers, etc. A missing runtime package on Linux is definitely not in daily experience of anyone non-technical. For regular people, try with Windows, or maybe macOS.
Parent was comparing software development with plumbing, not general computer maintenance.
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.
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.