good to read you again. I was a little afraid you took the sideways 8 hallway and didn't find your way back :-)
Well, programming imho is a kind of magic, ranging from colorful to black ... Programs come in stages of life:
0. A one-line hack which will work only now, only here, and only because I happen to know, what I do. None of this might be true in 10 minutes from now.
1. A script/program, which will work for me repeatedly. It requires detailed knowledge of how and where to run it, what assumptions are coded in, the order of options or arguments might be following some hidden logic. There is no documentation, because the code is.
2. A script/program, which works for me any time. It still harbors assumptions, but "--help" will spit out enough documentation, that I can forget about the details.
3. A script/program, which works for others. It still harbors assumptions, but it will go to some length to check all those things: are the other programs this script relies on installed? Are all the things that this script expects actually existing and of the correct type? Does the content of whatever needs to be used, make any sense? No? Bail out on the slightest error. Actually printing out a /useful/ error message is another art, which cannot be mastered fully, imho. Documentation actually is written, and I have tried to explain it to the novice (and probably failed, because I cannot temporarily un-know my knowledge).
Stage 2 might be useful for my colleagues. Stage 3 might be useful to more people.
Now there are options:
4a. Make the program work 24x7 --- another whole universe of funny, delicate, hidden, subtle details will show up at my desk. Some of them are invisible. Some of them will speak a language unknown. Most of them will speak in confusing riddles.
4b. Make the program really fast, so you can serve like 1000s of request in a few seconds. The funny mix of details will change.
4c. Make the program work on tiny machines.
4d. Other. Like add a GUI, or add translations to other languages, scripts, direction of writing/reading ...
So, depending on which stage the program is that you happen to try, your experience will range from awful to surprisingly pleasant. The thing is, neither you nor the author knows exactly the state of the program.
I could give you my gem2html shell script, it's in stage 2[a]. You probably don't want this. By the way, I have written only one program up to stage 3 and shared it in public. I'm not aware that anyone else is using it, although I do use it daily.
Well. Never mind. ~fish-fingerer says the same in less words, it seems.