If this happens, then APIs and libraries that make development easy and intuitive for end-users could easily become as in-demand as well-designed websites and mobile apps are today.
If this happens, then APIs and libraries that make development easy and intuitive for end-users could easily become as in-demand as well-designed websites and mobile apps are today.
I don't mind this mindset, and would enjoy teaching such a course.
I look at it this way though, we theoretically teach every single American student how to write, has that caused an increase in high quality literature being produced? Theoretically, every high schooler can read, I'm curious what percentage of adults actually read literature for fun?
Most long form writing (which I'd consider to be analogous in complexity to large scale programming) is not very common. The average adult's writing is quick and "dirty". I'd expect to see an increase in programming similar in size, scope, and usefulness to email, text, lists, and meeting notes. It would be personal, private, and not meant to last. Tents, not marble palaces.
I think a much more valuable tool would be to teach everyone git (or something easier but still with good branching). For quick and dirty, excel is fine, and some improvement on it likely will come in our lifetimes. What I think is far more valuable is a way to version all text a person produces, with branching and history.
Maybe, who knows? How many American authors would have been illiterate if we didn't cast a wide net?
More to the point, you don't have to contribute a great piece of literature in order to get some value (and give society some value) from basic reading and writing skills. Basically everyone does some reading in their everyday life which is crucial to their level of productivity (and personal enjoyment).
> I'd expect to see an increase in programming similar in size, scope, and usefulness to email, text, lists, and meeting notes. It would be personal, private, and not meant to last. Tents, not marble palaces.
Very much agreed. I don't mean to suggest that software engineers would be displaced in any meaningful proportion, just that we could increase the productivity of everyone by a little bit :-)
I recognize that we are building a cathedral meant to last, and he was building a tent that was error-prone and easy to break. The thing that gets me is how fast he was able to turn data into the answers he needed. Why don't my tools let me put something that fast together?
I've become lately interested in the idea of a "better excel" that could solve the issues excel has: easy to "forget" a new row or cell, hard to version, hard to share, stuck behind a complex gui, hard to add bigger data, etc. I think such a tool could greatly increase the "general programming" of the world far better than just teaching high schoolers to program. Most people who would program either do so for someone else (trying to automate something) or for work because they need to get an answer out of some data. I think excel IS a programming language, it just has a gui instead of text. I think if that was improved upon, it would meet a big need.
I know very few people who don't create something. Most people do so at their jobs, and those who don't usually have a hobby or two (sewing/knitting, hobby construction projects around the home, gourmet cooking, etc.)
Someone I think you're using the term to mean something else.
Rote learning is a process of memorization that maps from an exact context to a specific answer ( 3 * 3 = 9).
Writing a program very rarely has the exact same context by which a rote learner can map a solution to. There may be aspects of a program that can be mapped to a specific solution but I really feel this will never be the case for an individual coming up with a complete solution to a unique, never solved before, problem.
Critical thinking is required to come up with a solution to a unique, never solved before, problem.
1. Perhaps I'm being slightly too liberal with my use of the word rote. But by "rote programming", I mean the sort that requires no understanding of anything beyond CS1 concepts, the domain and your toolset. The programs are very simple and sometimes hacky, but get the job done (e.g. "Move all those files over there and then watermark them using this snippet I found on SO and then add them to the database so they show up on the website").
2. Even for many professional software engineers, often times most of the critical thinking is probably about the domain as opposed to the programming. Most people aren't (or shouldn't be) coming up with truly unique algorithms/approaches; rather, they are mapping new problems to tried-and-true techniques usually already implemented as libraries.
So it's possible to solve new problems (in the sense of your domain) with rote programming (of the sort described above), if all the critical thinking is about modeling the domain as opposed to the software.
Of course, every once in while, the "tried and true" technique is a piece of CS that only an educated engineer has heard about/knows how to correctly use. But my point was that there are lots of problems you can solve without getting to this level.
Rote approaches to solving problems are great when the problem is very well defined and repeatable (need to fill an order for a coke and two fries). However, as soon as the mapping changes even slightly, Rote learning[1] and, in my opinion, Rote programming don't work so well.
Even if every tool ever required to implement a software solution (algorithms/approaches/etc.) was available we still need to map a given problem to one or more solutions. This is why I wrote "Writing a program very rarely has the exact same context by which a rote learner can map a solution to."
When I lectured, students could "get" what tools were available to them. If I asked them to describe a sorted list, they could in great detail. However, when given a generic problem, it was a lot harder for them to select from the tools available to them ("Oh, so to speed up this programing, I could use a sorted list"). That is the critical thinking part.
[1] "Umm, I've already told the register that you are giving me 10 dollars so you will need to give me that instead of $10.50". - This happened to me and is a big signal that the person had done rote learning their whole life.
Also, there's no reason to base it on an arbitrary threshold like high school graduation. The amount of rote programming I have to do (as a professional working in the field of 10 years) is drastically decreasing.