Why programming isn't a commodity skill? Or will become such commodity soon?
Programming is like a house builder. Yes there are better and more experienced builders, but most of them can build a house top to bottom with no problem.
Programming is not like building houses. The computers on which the software runs are the "house builders"-- the parts of the system doing the repetitive work. Programmers are the architects and civil engineers who are tasked with inventing new types of houses every time.
To add on to your point - you can program anything with little to no startup costs anymore, whereas you can't build anything architecture wise without large amounts of money.
For certain values of "problem" as defined by the builder? Sure.
For what a buyer defines as a "problem"? Highly debatable.
Even in house construction, an activity that has been performed for literally THOUSANDS OF YEARS, there is no commoditization. If nothing else accounts for this, the bewildering array of local building codes assures that commodity construction as presented by a builder (like a national prefab builder) is really a business-level API that presents a uniform interface to buyers that hides a team that handles all the local idiosyncrasies underneath.
And if you expand it beyond just house construction to all construction, which is probably a better comparison, it's even less of a commodity. Cost and time overruns are common in multi-million dollar building projects, just like they are in multi-million dollar software projects.
Sorry, but that analogy is completely wrong. I would recommend reading Fred Brook's "The Mythical Man-Month" (among many other books on software estimation) to understand why.
He argues that unlike activities involving physical mediums like house building, computer programming creates with an intractable medium. You would be surprised, in the field of programming, that many so-called "programmers" cannot even build a simple house that is stable on its own foundations.
Unless you're building a 20x20 cm shack, which is about what most intro into programming courses aim at, and the level where some people simply stay. Or in the words of hacker school "completely useless and destined for dev/null".
If houses were vaguely specified, constantly changing, enormously complex designs for invisible things that had to interface with an entire ecosystem full of other "houses" then yes, programming is like house building.
Programmers are, in essence, creative problem-solvers. That skill set is difficult, if not impossible, to commoditize. Building a house well may require some creative problem-solving, but it is not as frequent or as important when compared to programming.
I would say programmers are like skilled laborers in this simile. Some are plumbers, some are electricians, some are woodworkers, some are handymen. I wouldn't hire a plumber to wire a house, nor an electrician to plumb it. Either might be able to do the job, or might not. A handyman probably can, but most likely not with the same quality, or knowledge about how to fix more specific or harder problems.
I don't expect a programmer that's been steeped in the world of UNIX daemons to write a good customer facing website on their first attempt, and I wouldn't expect a front-end Javascript programmer to know how to deal with multiprocess programming in C/C++. Asking them to do so may not result in something "with no problem". At least not in an acceptable time frame.
If only. Aside from very, very standard patterns, software development is like building a totally different house each time, and builders tend to have a bear of a time when things deviate from accepted patterns. There is an immense range of productivity and quality among developers, and you can't make up for having less skilled developers by hiring more of them.
Well, see, that's the difference between a house builder and a programmer. Not just anyone can write a program with "no problem". Sure, sure, anyone can learn to write one off hacks (much like building couch forts), but building something that doesn't fall down when the first woodpecker comes along takes a lot more experience, training, thought, effort and time.