Only a few decades ago, to operate a motor vehicle (at the time the most complex device known to the general public) you had to know quite a lot about the workings and operation of your vehicle to operate it safely and keep it running. Cleaning your carburettor, setting your plug gap, changing the oil were routine tasks that required some 'education' to accomplish.

Not so today. And in a few short years even driving skills will be needless as fully automated cars deliver us quickly and safely without our input.

In cases you haven't noticed, today's smartphones and tablets are routinely being operated by 3 year olds.

We don't need more or smarter programmers. We just need tools that allow a business manager or analyst - or game developer - to meet their needs without getting their hands dirty with code. (Such tools exist, I've used one successfully for 20 years.) Once there was a performance penalty to pay but these days resources are cheap and almost limitless.

After all the SQL language was an early example of such a tool! Its purpose was to allow non-programmers to manage and report data, something that was virtually impossible for them until then.

These days the jokes about people not understanding how to program a timer on a DVR are fading quickly

I read this and although I can program most household devices, the photocopier is another matter, that thing has so many buttons, switches and options on than I can't even begin to guess at their function. As I say when I have to ask for help setting it up, "I only program computers, I'm not that clever!"

Programming (at least coding) seems to require a skillset that *IS NOT* common, in fact it's extremely rare. Spreadsheets are no more programming than they are databases, they are spreadsheets. Database administration is (for the most part) not programming either.

Scripting begins to approach programming but your point about being able to break down a problem into its component parts and solve them logically is at the heart of why there will always be a programming profession. Because that isn't a natural fit for most humans.

Most people literally can't think that way. They seem to think holistically, seeing the whole instead of the individual components. They can't "chunk". And there must be a reason for that, no doubt in our ancient past analyzers didn't react fast enough when charged by a saber-toothed tiger or something. :)

Sure, teach kids programming along with all the other bits. It will be just one more thing most people forget, along with algebra and history and English writing skills... (laughing).

Which brings up my final point. Programming is not a science, it is a craft. Yes, there are scientific principles you need to know, but technique will only take you so far. It's like writing. Good communication skills are vital, but as always specialists are required. A magnificent novelist couldn't write a decent tech manual to save their lives. The most talented tech writer can't create a world-class novel.

Nor can a doctor or lawyer create their own pro-level software. Sure, lots of folks dabble, but that's why IT is such a mess...

Whilst it is true that there are dabblers, and that devices are getting easier to use, knowledge of basic programming techniques would be a great advantage.

My phone/camera software downloads photos into a great big heap in my Pictures folder, to organise them in to folders by date I either have to move a lot of files manually, or I can write a script to organise them how I want. What I use to do this is a matter of personal choice, but probably Python if at home and VBScript or Powershell if at work.

If this is something I am having to do, and I can quickly whip up a script to do this, then it is also a problem for a lot of people who don't have this skill and will get very frustrated when they have to spend hours sorting out their photo collection.

Programming may be a specialist skill set, but the pattern required to move files based on a couple of loops can't be that difficult to learn, can it?

The whole mess of programming "between" different apps and data requires scripting or macro languages which are usually syntactically very ugly and kludgy. I generally end up doing a bulk insert of text into @tables in sql and slicing and diceing until I come up with text to save as a batch file and run through a cmd shell. I can only do this because of 30 years of experience. Last week I used sql to generate a batch file to rename 3000 files...saving me a day of work.

I use sqlserver to bulk insert vb database solution and project files to automate quality checks and disk file verifications. I also use it to process folder and filenames.

I learned Python for a week only to realize it can't access the clipboard - a real deal breaker for me since that is how I do most macro functions in other programs. I used Winbatch years ago but I think it is overpriced. I liked autokey but it is cryptic. I now use QuickMacros and love it for it's virtually unlimited power but it too takes hours to write a few lines.

I see ScriptCS is in the works as a C# scripter. I'll check it out after it matures a few more months.

I also have vedit which is probably the most powerful text manipulation macro language on the planet. The product may be suffering from underfunding and lack of evolution into object oriented-ness though.

I also use notepad++ almost exclusively for its ability to search/replace across files using regex pattern matching.

Even with all these tools I still get irritated at the difficulty of implementing the patterns in my mind into these disparate languages and paradigms.

Anyone have any powerful, readable tools that serve as transforming and glueing swiss army knives?

I recall having a very similar thought when I finished my Accounting 101 class.

Knowing my debits from my credits and my assets from my liabilities (and most importantly, my equity) seemed like something EVERYONE should know. After all - it doesn't matter how you make money, you should know what your balance sheet looks like, right?

Alex Gay (7/10/2013)Whilst it is true that there are dabblers, and that devices are getting easier to use, knowledge of basic programming techniques would be a great advantage.

My phone/camera software downloads photos into a great big heap in my Pictures folder, to organise them in to folders by date I either have to move a lot of files manually, or I can write a script to organise them how I want. What I use to do this is a matter of personal choice, but probably Python if at home and VBScript or Powershell if at work.

If this is something I am having to do, and I can quickly whip up a script to do this, then it is also a problem for a lot of people who don't have this skill and will get very frustrated when they have to spend hours sorting out their photo collection.

Programming may be a specialist skill set, but the pattern required to move files based on a couple of loops can't be that difficult to learn, can it?

You expect people to learn a scripting language? Even Python, as elegant and simple as it is, is far too complex for the kind of task you're talking about.

I've tried to teach non-programmers how to program, and it's next to impossible. They can do "recipes" and that's about it. Loops, conditionals, etc, provoke a response of TL;DR. :)

And that's not going to change, any more than introducing children to algebra makes them mathematicians. Or historians. Or geologists. The problem is not only is there an enormous amount to remember, syntax wise, there's a lot of grammer rules as well--it's very much like learning a foreign language. People can do it--but only if they REALLY need to.

Even casual coding at the level you're talking about isn't something people want to devote the brain power to. Because it's alien, and not necessary for them to. That's what *pizza* and having a "computer friend" are all about.