Besides what others have mentioned with respect to helping people discover an otherwise undiscovered talent for engineering, coding, if only at a more basic level, has a tremendous impact on average office workers' productivity.

Consider a company I am intimately familiar with, which is a typical manufacturing company. There are accountants, customer service, salespeople, production schedulers, marketers, inventory managers, production foreman, maintenance technicians, material buyers, human resource staffers, and so on. A typical set of functions that could have been picked from any number of hundreds of small or medium sized manufacturing companies. Due to the company's size there are no dedicated programmers as might be found in a larger company's IS or IT department.

But in nearly all work areas, a person's productivity is greatly leveraged to their familiarity and comfort with technology, including the ability to develop a set of instructions to assist in automating tasks within the computer. And because their productivity is leveraged to technology, those who are more capable with that automation are typically also paid more.

It is surprising how many opportunities there are for at least basic levels of programming in many different areas. Consider the following examples:

- A material buyer needs to know anticipated raw material needs by product, based on order backlogs. She develops a little VB script to tell her how much to order of each type of raw material, based on types of products in the order backlog. She then enhances it to consider price discounts, shipping quantity breaks, supplier lead times, and additional factors, to maximize material inventory turns while minimizing the material outages.

- An accountant develops a basic script to assist in forecasting cash flow to the business, to help manage the company's operating line of credit, lowering the business's interest costs and identifying potential cash flow issues well ahead of time.

- A maintenance tech develops a database to track issues with machines, replacing paper tracking. After six months, he uses database queries to begin identifying patterns among the hundreds of maintenance issues, to help create a set of preventative maintenance procedures to minimize expensive downtime.

Are any of these using Ruby on Rails? Are they using algorithms that one would learn in a Computer Science curriculum? Likely not. Many of these tasks are on the wrong side of what the audience here would even consider "coding": it is just creating a simple database, or using some simple VBS, or maybe even nothing more than some more complex than usual formulas in Excel. And yet they are skills that are woefully absent from the vast majority of the population, and yet which would greatly enhance their productivity and earnings.

Would the majority of workers benefit from formal training of computer science theory? That is debatable. If done the way many CS 101 classes are done, it could even hurt, by creating fear of the topic at an early age.

But there is a basic level of competence that would enhance the productivity of a great many number of workers, that is absent today. That basic level of competence would include the introduction of how a database works, basic office automation scripts, perhaps mixed in with some fundamentals of simple data analysis with computers.

A typical office or production candidate demonstrating even these simple skills is highly attractive in an interview, and I believe that any country's industry would be far more competitive with a population with these skills than without.