Your post doesn't make sense to me and I think it's because you misunderstand what programming actually is. Programming, at it's core, is just the act of giving the computer commands to execute in a certain way. There is no way to automate a process using a computer without using programming. So what you suggest, is only possible in two ways. Build an artificial intelligence that programs for us and decides what we want or somehow code a piece of software that can solve any problem and automate any task. Neither of which are currently possible or really desirable (imagine the bloat of the software).
Everyone should learn to program, even at the highest level of abstraction (python, visual basic, SCRATCH), just so they understand what the tool (computer) they have in their hands is capable of.
People go through their everyday lives not even considering automating certain tasks because they haven't been exposed to what programming can do. People go through their days not understanding when they are being ripped off or blatantly stolen from. They don't know what is secure and what isn't. Learning to program solves these problems.
To quote Ben Franklin
"Those who give up their liberty for more security neither deserve liberty nor security."
Disclaimer: I am slightly biased. I don't agree with what Steve Jobs stood for. I don't believe people should become mindless content consuming drones nor do I believe in walled gardens. If I buy 3 acres of property I don't want to be locked in .5 acres because of a damn hedge.
I agree with him when he says computers should be smarter, more intelligent. I am working on a project that explores this idea. You would probably put it as programming a computer by communicating with it. Balancing preemption with annoyance.
On the other hand, I also still think everyone should learn to program as it is good for your brain, aids in learning/exploring extremely abstract mathematical concepts and is practical. Somewhere between the usefulness of basic math skills and either advanced grammar skills or elementary physics.
My definition of programming is just a definition that is capable of describing every programming language I've seen. If programming is not giving commands to a computer then what is it?
Microsoft Word is a domain specific language for formatting documents. Just because you can't create an OS with it doesn't mean you aren't telling a computer what to do using gestures and keystrokes that you had to learn first.
Every day user tasks are just very high level programming, with limited power compared to general purpose languages.
Great post. The HN community is totally biased because most folks here are very comfortable programming. What this biases is the ability for this community to imagine that it's a lot harder for a lot of other people to program than it is for them. If it weren't, you wouldn't be in such high demand at such terrific salaries.
Programming is hard, especially for minds that are not well accustomed to breaking things into linear series of events. I have a visual mind, for example, but have a lot of trouble turning multi-dimensional concepts into linear programming treatment.
Just as we would not suggest everyone would be capable of calculus, we can't expect everyone to program. Now we can expect everyone to have some exposure to calculus, and I think many folks just would like to see the masses have some exposure to programming. And that's great.
But please do recognize that programming is not intuitive for everyone!
"Programming is hard, especially for minds that are not well accustomed to breaking things into linear series of events."
Or maybe many people are just lazy? As for the linear events, can you cook? Can you give directions to the main station? I think most people serialize things all the time. Like, do you ever create a ToDo list for your day?
I can't imagine that it takes months to learn how to load some images into Excel. Unless you have to learn how to read first. And Excel could be one of the hardest things to program...
"But please do recognize that programming is not intuitive for everyone!"
That's just the thing. Programming is hard even for programmers (hard not as in impossible, but hard as in "lifting 100 pounds of the ground" or whatever - it is work). But they are diligent enough to solve the problems.
It really irks me when (for example) business types say they are not made for programming. In fact I don't really enjoy programming either. I enjoy making things, and programming is just the necessary evil I have to put up with.
This logic of "xyz is not intuitive for me" is just an excuse to never even try to cope with maths or whatever.
>Just as we would not suggest everyone would be capable of calculus
Programming is a broad spectrum. There are parts that are of comparative difficulty to calculus* and there are parts of similar difficulty to prealgebra. No one is saying that everyone should learn Vector calculus but everyone should at least be acquainted with the basic things like ratios and intervals.
*Calculus is actually extremely easy. In fact, programming can make it even more intuitive if the learner has played with streams before, the objects of calculus are kin. Besides, knowing calculus does not make you a mathematician any more than knowing how to write IF X < 10 THEN PRINT makes you a programmer.
This sums it up. Similar assumptions about the human mind are what have led to the current poor state of the US education system. Teaching and learning are not one size fits all.
The problem isn't that women aren't interested, it's that our shitty remarks drive them away. The ones that stay wind up experiencing a death by a thousand pricks. I'm "desperate" to see our field grow up, not conduct some sort of gender-specific marketing campaign.
We don't need more women programmers for the sake of demographics. We need to stop driving away awesome programmers that happen to be women.
That's kind of a distraction from the real problem, isn't it? We know we are doing this badly. It doesn't matter if other professions are worse; if they are, that just means they have their own problems to improve on.
To paraphrase the rifleman's creed, there are many industries with this problem, but this one is mine.
What's your rationale behind your reasoning? I'd say we need people in this field who can actually take some heat, no matter shether they are male or female. There are certainly also plenty of guys who get driven away. Just have a look at how quickly some people get shot down on SO for submitting not-that-great answers.
Further, there are surely quite a few women around who are only around because they are women. In other words: their work is sub-par but they keep their job due to their gender. Just like we lower requirements for women in the military, we lower them for women in tech. Yet, there aren't many women signing up for the military. Maybe it's because they just aren't interested in the first place?
I agree that showing maturity as a field will drive fewer people away of both genders. But you've seen the recent scandals: sexism is obviously a problem in our field and that is a problem that should be solved along with the other.
If you want to establish that women are being treated with kid gloves in our industry, the burden of proof is on you. If you want me to dig up the four or five high-profile examples of sexism in technology from the last couple months I can certainly supply that, but your ugly claims are the ones which require proof, not mine.
Are you a man or a woman? Further, do you work in tech or don't you? There is certainly something fishy about you and your style of argumentation. Your rhetoric also reminds me of women. Sure, cold hard facts are "ugly". What's next, calling me "mean"?
BTW, isn't it funny how fashions change? Two years ago you read comments like, "(...) another researcher concludes that only "boys" are stupid enough to go into a field that's globally-fungible, where entry-level salaries are declining, and it's common to think that staying up all night for a company-paid pizza is a good deal.'"": http://tech.slashdot.org/story/09/12/17/2043254/Not-Enough-W...
Since IT is hot again, and the economy otherwise depressed, suddenly the feminists fire up their PR machine and want to get some of their sisters into cushy (so they think) office jobs. But why aren't there any initiatives to get more women into, say, plumbing, firefighting, or the military?
"If the computer is a bicycle for the mind, what kind of bicycle requires you to speak Chinese to pedal faster?"
I'm sorry? What sort of bicycle magically allows you to ride it without putting in any learning effort? You're forgetting that everybody has to learn to ride a bicycle and nobody is any good at it at first.
Not really. Most people put forth a minimal effort into learning how to ride. Most people can ride a bike, but far fewer are able to regularly put five miles on a bike. That requires a much higher level of training and conditioning that most people are just not willing to undertake.
Most people can use a computer. My 70 year old grandmother has no problem using her Mac to write documents, send email and browse the internet. Far fewer are willing to undertake the training and mental conditioning required to program.
Fundamentally, programming is about problem modelling. While I agree that the interface to programming can be improved, I disagree that computers and the tools surrounding programming are the main reason people are not willing to invest the time to learn to program. At any level beyond the most trivial programming is hard.
In the 80's Apple had HyperCard, a tool designed to make programming easy for novices.
«... HyperCard is an echo of a different world. One where the distinction between the “use” and “programming” of a computer has been weakened and awaits near-total erasure. A world where the personal computer is a mind-amplifier, and not merely an expensive video telephone. A world in which Apple’s walled garden aesthetic has no place.» http://www.loper-os.org/?p=568
Maybe the author is confusing computers with consumer devices... I subscribe to the notion that the iPad is a consumer device (i.e. family of the Walkman), not a computer.
Exactly my first thought when reading the first paragraph.
I find it almost laughable to cite Apple as an example of "making a computer
smarter". Apple has done the exact opposite: dumbing it down to fit the lowest common
denominator, then putting it into shiny aluminum cases to sell to the unwashed
masses.
A smart computer is one that empowers the user, that teaches them, and expands
their knowledge. Not lock them into a walled garden with some highly limited
tools which give them the dangerous illusion of empowerment. This is fundamentally
incompatible with how Apple makes their products. In the perfect world of Apple,
users are idiots who unquestioningly buy the newest iWhatever, and never do anything
remotely clever with their devices.
Depends on how you define smarter. Apple has made the computer smarter because you no longer need to be smart to use one. By "dumbing down the computer" from our point of view, the computer itself is actually smarter. The operating system and the programs that apple has written don't necessarily anticipate the user, but they handle some things in the background so the user doesn't have to. Or at least that's the idea behind it anyways.
This misses the point. The beauty of learning programming is that you stop depending on others to make something simple to use, and can instead do it for yourself.
It's funny you should ask that because it touches on an analogy posed by Jeff Atwood just the other day. And a lot of people rebelled against it.
Do I call the plumber when I have a serious leak?
Yes.
But I don't call one when I the toilet is running or when I have a leaky faucet. No one is suggesting everyone needs to be able to write a full-fledged production program, but who can deny that having some knowledge of the inner workings of a system you depend on is not going to make you a better user?
I’m not saying there’s anything wrong with learning to program.
Learning the basics of any skill can help you, but it’s up to an individual whether he wants to spend his time picking up plumbing, car repair, programming, etc., or just focus on moving further in whatever his own field is.
Of course. And that's why no one is saying people must learn to program - only that they should. And it makes sense if you spend ~8 hours a day using something that you have some idea of how it works.
And yet we still have people learn basic math, to read and write, etc. Like doing math with roman numerals, there are many ways the programming can be improved. We do need better notation, but that doesn't mean there is no part of the process that doesn't require the effort of the human.
Programming is about describing how to solve problems. Maybe we call a plumber, but we don't call a math professor to figure out how many plates we need on the table when people are coming to dinner.
By you logic, people don't need to be able to read because we have street signs. The ipad is easy to use because it's designed to be tightly constrained. You can only do things that people prepared for you. But solving tightly constrained problems is what computers are good for; if you can't do anymore than that, why are you needed?
Throughout history, it was believed that most people didn't need to read and write, or know math, etc. But the core of that argument is anti-humanist.
And no, "computer literacy" isn't the answer, (and is a ridiculous term anyway; literacy requires that you be able to express yourself), anymore than "calculator literacy" is the answer to solving math problems. Knowing how to use a tool isn't enough, you have to understand something about what you're trying to accomplish. A calculator isn't going to help you if you don't know what basic math is, and how it applies to the problem you're trying to solve.
When you need to read or write something, do you call somebody else to do it for you?
My point is that programming in the broader sense (giving instructions to computers, which they can repeat many times with accuracy later) is a far more general and usefull ability, than for example the ability to do plumbing.
That's the beauty for those of us that enjoy programming and enjoy being able to use the computer the way that we want to. I would argue that the majority of people don't mind depending on people to write programs for them because they assume it isn't their skill set. To pull the plumber metaphor again, I don't have to know how my toilet works in order to flush the handle, but the guy who makes it better understand what's going on in there.
I agree that computers should have intuitive interfaces and should bend to people rather than the other way around. I also think that most computers should and will be more like iPads and iPhones, essentially smart appliances.
However, just because we can see a future where computers bend to the whims of users, ignorance is not bliss.
Computers are becoming an ever increasingly important part of most peoples lives. Saying that you shouldn't have a fundamental understanding of how they work only leaves you open to being hurt by those machines that you interact with every day.
Take phishing scams, and drive by downloads. In large part these occur due to ignorance of the user on a fundamental level. Of course, computers need to be much smarter and prevent these types of attacks all-together. But in a world where some people understand computers on a fundamental level, and others do not, you'll always see those with knowledge taking advantage of those without.
Ultimately people shouldn't learn to programming because it makes bending computers to their will easier (though it does). Instead people should learn basic programming to better understand that which they fundamentally rely on.
"Apple understand that the responsibility lies with their software to adapt to humans, not with humans to learn the ins and outs of unintuitive software."
This isn't how Apple does things.
Apple computers do not adapt to users. They do things in the "Apple Way". Users must learn that way or suffer.
The good thing about this complete refusal to adapt to users is that everyone has exactly the same Apple experience. You don't have to ask Apple users what shell or window manager they're using. This makes finding help easier and, in theory at least, should make it easier to eliminate bugs (Lion is actually very buggy). Arguably, small bugs and inconsistent behavior do more to confuse neophyte users than large interface flaws.
Apple's motto, "think different", should really be, "think like us". Is that good for the computer illiterate? Perhaps. Still, I'm a bit amazed that some power users put up with the rigidity of OSX and apparently seem to like it. I've used it off and on a few times over the last decade (I most recently used Lion for about a year) and it's always a relief to go back to an OS that is designed to adapt.
I like the thought behind this, but not sure it makes sense to me. How do you expect computers will get to be as smart as you want them to be if people don't learn to speak their language? Are you assuming that only the select group of people who are already programmers are capable of making computers smarter? I disagree with that.
Even if the above were true, it would still take time to make computers "smarter". I don't think it's necessarily about technology, it's about changing the infrastructure and the paradigm. That takes time. What is the rest of the population to do in this latency?
As a side, your post also suggests that there will come a time when computers will computer themselves and people will never have to do anything. That doesn't make sense logically.
I don't think he's arguing that more people in other fields should not learn to program, rather that the primary goal of general computer use is to make easier/enhance the lives of its users. This goal is of course ultimately derived from the hard work of the programming community, of which should always be accepting of more participants. We just have to keep in mind that computers should always serve their primary goal, and those that choose to work with computers on a deeper level (programming) should always keep that goal in mind, you don't create a program for the general user that requires them to know programing in order to use it
The last paragraph bugs me. It gives the lie to the assertion that computers need to be smarter. What he is really suggesting is two classes of people: The knowledge Haves and knowledge Have Nots.
It is a reasonable and useful principle for a business to focus on being more user friendly. But it is a scary ideology to suggest that most people should not bother to act with agency or become more empowered to handle it themselves. The logical outcome of such an ideology is a world filled with sheep and run by the handful who have de facto power and who serve as both wolf in the fold and guardian sheepdog at the same time.
I completely agree and I think this is a much better attitude than the increasingly popular ideology of making the application just do the right thing INSTEAD of exposing options. Obviously the default should be to do the right thing but without options users feel like they are being controlled by machines which is simply not what we want. I know lots of luddites with this perspective and it ultimately stems from laziness on the part of programmers.
"The reality is that the most basic automation is a task impossible for someone who hasn’t spent months learning to program. Automation is what computers were supposed to help humans with in the first place."
When one wants to express a complex operation (say, automation) one almost resorts to language. Law, mathematics, chemistry, physics, they all use language to help them express complex ideas.
How would you even express simple automation without a language. Macros? Sure, up to a point. Visual tools? Sure, up to a point. Both lead to diminishing returns for their ease use. The benefit of learning the domain language is you have fewer limitations.
Computers are the future, and are the most important piece of technology that currently exists. You either learn how to use them, most effectively, or the future is not for you.
Nicely put, but too utopian for right now. There is still a place for coding skills in many fields where it may have not mattered before, with the ubiquity of computers in workplaces of all types. That being said, I think the 'teach ALL the people how to code' theme lately is overkill.
Too utopian in general, not just right now. The best argument in my opinion for "normal people" learning to program is not so that they can and will instruct their machines, but so that they know how it is done, whether they're the ones to do it or not. It's to instill understanding, so people will have reasonable expectations about their technology, be able to make intelligent decisions regarding it, and not relate to it as magic.
Even if HCI becomes so good that anything can be automated just by asking for it with no human effort involved, it will still be a good idea for people to know why and how it works. And frankly, things will never get that good (people can't even communicate among themselves without misunderstanding, let alone with machines), which makes it important for people to understand what kinds of things their computers can realistically do for them, what they can't, and why that is.
Everyone should learn to program, even at the highest level of abstraction (python, visual basic, SCRATCH), just so they understand what the tool (computer) they have in their hands is capable of.
People go through their everyday lives not even considering automating certain tasks because they haven't been exposed to what programming can do. People go through their days not understanding when they are being ripped off or blatantly stolen from. They don't know what is secure and what isn't. Learning to program solves these problems.
To quote Ben Franklin "Those who give up their liberty for more security neither deserve liberty nor security."
Disclaimer: I am slightly biased. I don't agree with what Steve Jobs stood for. I don't believe people should become mindless content consuming drones nor do I believe in walled gardens. If I buy 3 acres of property I don't want to be locked in .5 acres because of a damn hedge.