The writing analogy is off anyways: not everyone can write very well. People would upvote -and buy- a children's story by, say, neil gaiman. This is not the equivalent of a throwaway story made up on the spot.
The writing analogy is off anyways: not everyone can write very well. People would upvote -and buy- a children's story by, say, neil gaiman. This is not the equivalent of a throwaway story made up on the spot.
But I will try to answer the question about foisting software literacy, since you seem to be questioning the larger trend. The question to ask here is, what do you think the skills economy will look like in 15 years? Looking casually at the trends, it's difficult to avoid the conclusion that software is eating the world. My friends in scientific research have either learned to code or are hobbled by their inability to do so. Financial institutions are increasingly just software companies with some domain expertise; I know finance people who can't get jobs because--to simplify a bit--they don't know SQL. Many non-technical office workers I know interact with a computer on some sort of programmatic level (e.g. Excel macros) and almost all of them would benefit enormously from programming literacy to help them in that. And all of that is trending upwards quickly; that's why programmers are in such high demand.
Cooking is great and an important personal skill, but it's only an essential skill for chefs, whereas if you can't code, you might become the equivalent of the guy who can't use email in today's office environment. So to me, it's a question of what the world's going to look like in the future, not a question of what's most practical around the house. Forecasting the future is hard and it's an interesting debate--there are all sorts of reasons software might be less important than we might guess, and of course software people are predisposed to think software will be super valuable. But I think it's the right way to frame the discussion: if software runs the world, you really need to know it. If it doesn't, you don't.
I'm not accusing you of this because I don't know you at all and your comment doesn't suggest it, but I hear a little bit of insider entitlement in a lot of programmers' arguments against increased software literacy. "I don't want all those other people jumping in and pretending they're software engineers too. The future belongs to the select few, which happens to include me. Leave software to the pros!" It's seems absurd to me that programmers don't want more people to understand the ins-and-outs of their profession...unless they feel threatened by such a thing. There's something very fishy about telling people who don't code, "Oh, yeah, don't do what I do. Learn to cook instead." Are you sure we're not just trying to keep all the marbles?
From the 'software is eating the world' perspective, I see increased use of software, but not increased production in unconventional areas. If you look at the progression of home computers, we've gone from booting directly into BASIC, to an iPad, where you really can't do any development. The slow march to 'appification', and the trend of taking away customization and development tools from consumer-grade products makes me think that while software is becoming more important, average people need (and want) to code less and less.
It's definitely a programmer's perspective to say that any knowledge industry (like finance) is just software + domain knowledge. Someone in that industry would approach it from the other end, and say that they can write a req and get some commodity software to solve their problem from some developer half-way around the world. This is where I think the industry is going: not universal programming literacy, but a more stratified culture where 'commodity' development is it's own discipline.
Consider the ease with which any consultant can knock together a CRUD Rails app with some business logic the client specifies. We've removed a ton of overhead and boilerplate, and lowered the barrier to entry tremendously. As time goes on, and development technology advances, I see software development/engineering and computer science diverging more and more. At some point, development might be an apprenticeship or more 'hands-on' education, to learn the existing patterns and practices.
In short, development will become a commodity, but via an emerging class of commodity developers who can handle 95% of client requests. There will still be people who do hard things, and hack in their spare time, and they'll make things better for everyone. But they'll stay in the minority, and development will stay out of reach for people who aren't explicitly 'developers'.
I agree that's how they'd like it to work. But in reality, their in-house teams have become more and more technology-oriented, and programming literacy has become a higher priority in hiring. An "analyst" used to be a clever kid with a finance degree; now they have a finance degree and are comfortable in VBA, SQL, and an analytics package. Badass programmer? No. Software literate? Yes.
> We've removed a ton of overhead and boilerplate, and lowered the barrier to entry tremendously.
Agreed (I'd caveat that by noting that we've also hugely increased our expectations for software functionality, but the point still stands). But note that all of these consultants who can knock out a CRUD Rails app still have to read and write code. What the lower barrier to entry means is that a bunch of people who previously couldn't do it now can, including potentially the business analyst who defined the requirements, assuming they have some basic software literacy.
That's going to quickly translate--is already translating--into the expectation that the analyst can actually write the code. Being able to actually code your solution to a problem makes you more productive, because your employer doesn't have to pay a consultant to accomplish that work, and because there isn't an extra layer of communication overhead. So businesses will begin demanding software literacy as they become more reliant on basic software development (or, depending on prevailing labor conditions, simply paying more for it), because it makes them more efficient. This is similar to how productivity technology (voicemail, email, software calendars) hasn't made secretaries' jobs easier, or turned them into a turnkey commodity; it has largely eliminated secretaries and replaced them with the expectation that you do that work yourself. Same with travel agents. Same with tax accountants. As the tools allow for more productivity, people are forced up the productivity ladder. Progress.
Being literate in software is different than being an expert software engineer, and fortunately for expert engineers, we can simply solve higher-level, or at least harder, problems, so this development is actually good for us. My view is consistent with your idea that there will be a bifurcation between hardcore developers building frameworks and a bunch people who know the basics and can use the tools. The only difference in our views, as far as I can tell, is that in mine, this army of "commodity" programmers fielding client requests will be the clients themselves, and not an outsourced stable of kinda-engineers. Those kinda-engineers will be employed at firms as business analysts, product managers, etc, because their computer literacy will be really valuable there.
I don't really care which way you phrase it, whether you see the programming as incidental or the job function as incidental is just a matter of perspective. The fact is, programming (or at least "soft" programming skills such as VB and SQL) are becoming increasingly essential for many of the top tier jobs in today's economy. Don't want to learn programming? No problem - I'll find a few million Indians who do.
This idea totally failed at Microsoft in the eighties, why would it work any better now? I prefer thinking up ideas for articles than actually writing them - I can even go to textbroker and get some commodity writer to actually do the words - and guess what - it's rubbish.
Code is the design - if you are not writing the code you are not designing the systems. You might be doing nice artists impressions but its not design.
But this is exactly my point. I am sure I can pull Hansard from 1870 and find exactly the same words used to justify why we should not waste money teaching all those poor people to read and write.
Similarly, "learning to code" is not to be taken as "be a programmer." Rather, learning to code is a means to developing skills in analyzing problems, establishing goals, breaking down big tasks into small tasks, understanding cause and effect, etc -- skills that are useful far beyond software. Learning to code isn't the only way to learn these skills, but it's a fun, easy, and accessible way to do all of them at the same time.
I will never ever work in finance. WTF do I need financial planning for?
Oh, I need to write because it is a common form of communication, whether or not I'm a writer.
Oh, I need to understand how to my money, even if I pay a guy to do my taxes, and help me plan my retirement, because I need to have basic abilities in budgeting, understanding consequences of my spending and so on.
So, why do we think people need basic code literacy? Well, because the more people that exist who aren't afraid of the computer, and who understand the basics of programming, the more people will be able to effectively use the tools that are available to them...
You know how we thought computers were pretty ubiquitous a few years ago, until everyone bought a smart phone and suddenly they are in even more places? And how that isn't the first time "ubiquitous computers" were in fact not even close? Yeah, since more people have computers than have hammers and cooking gear, perhaps we should promote a higher level of understanding of them than we have been.
That higher level of understanding really comes in the form of "advanced usage" or "basic coding skills" (because at some point they really start to blend). Why not cover computer programming at a basic level in childhood education. Shit, I bet that will be more useful than the sewing unit most kids still have to take.
How much programming knowledge is required to use a smartphone? This is the thing nobody in the software literacy camp seems to acknowledge: tightly integrated devices with walled-garden software ecosystems are the industry trend. Yes, some people in maths-heavy fields will need computing more and more: financial analysts, engineers. These people are already taking intro computing classes at the undergrad level (engineering computation is a prereq for mech eng where I study). But the average person with an iPhone isn't going to put up a hundred extra dollars to write an iPhone app to fix their own problems.
I think the longer you've been out of high school, especially if you're working or studying in an insular environment, you forget just how broad 'everybody' is. I know lots of people from my school who are now bricklayers, or auto mechanics, or grocery store clerks. Understanding a while loop has not substantially improved their quality of life, even though we had a kickass comp sci teacher. It's just not as relevant in daily life as we want to believe.
Because under all that complication, there is a big secret, and that secret is that anything you can describe to another human being, you can describe to a computer. So what if, instead of not just learning to balance the books, teenagers are required to write a small accounting package to do it? Shouldn't competent literacy include the most significant literal tool the human race has ever created, the computer and the skills of its application, if after all, we've gotten as far as teaching kids to read and write, as well?
Teach all that stuff too, it is not mutually exclusive.
Because what 'we' do is the most important thing in the whole world goddammit, and if only everybody else was more like 'us', how much better would the world be! Imagine if only everybody else was exactly like us, that'd be true utopia!