TL;DR - It's always been about the ends, not the means.

< Tangent >

Programming has gone through a weird path of effort/reward. Initially, you had to invest time and a lot of money to build your own computer from a kit, debug any errors, and get to the point of having your own, personal computer. At that point, any working results were amazing, as there was a fair chance you were the first person to solve the given problem.

This lasted an amazingly long time. In the matter of less than a decade, the same amount of money, minus the time and effort of building and constructing, got you a computer, could be skipped. For the same amount of money, you got a computer with a display, floppy disks, and it just worked out of the box.

DOS, BASIC, Turbo Pascal, Sidekick, PKzip, and so many tools game flooding in to make those computers even more easier to program, and productive.

It was at THAT POINT, where I started really making money as a programmer.

A decade passes, Windows 95 / Macintosh come along, and we get Visual Basic / Delphi / Hypercard. WOW... the amount of effort goes up just a tiny bit, but you can do amazing things, and that code will run reliably for most of your users without much tweaking on the programmers part.

Then networking, the internet, SQL as a layer, Email, Microsoft Office, etc. all boost productivity for the users. The table stakes remain remarkably stable.

Then the iPhone comes along, and with a lot of effort, and the approval of Apple, you can build a program that people can carry around in their pockets. Apple decides to limit the retail price of apps, and bottleneck things through the App store. Programming gets harder, and more specialized. Ugh

Meanwhile, the web has grown popular, and the idea that a program should just work anywhere shatters the simplicity of a program running on a single computer, directly talking to the OS that controls the display, and takes input. Again, programming gets harder, and more specialized.

Now we're at the point, where you're expected to make a program, sell it for less than a few dollars, support that program on any random phone, and hope that the two app stores don't arbitrarily change the rules and cut you off. The incentives go way up with audience size, and down with the giant filter of the app store.

OR

To route around the damage of the App store, you are expected to make your program available on a server on the web, deal with hackers, man in the middle attacks, wildly varying desktop and mobile web browsers, bandwidth and legal restrictions, to deliver results to a user that might be at a desktop with multiple 4K screens on a gigabit internet... all the way to a person using an phone with no keyboard, who pays for data transfer, and might lose connection at any moment, might rotate the screen, and wants to interact with video, multiple cameras, gps, and any number of other sources of input or output.

After all of that discourse to set perspective. Yes, I find it amazing that it can be done at all. I'm saddened that Delphi on Windows XP was probably the most productive GUI build environment I'll ever experience as a programmer.

It's hard not to see the table stakes now as a huge barrier. For my own personal programs, it brings me joy every time something works. Every time I overcome a series of challenges, and my will becomes a tool... it amazes and overjoys me. I love programming. It's frustrating as hell, but I love it. I fail to see how anyone could stick with it if they didn't, at some level.