Can Anyone Become a Programmer?
another random user writes "A Q&A on Ars Technica asks about an old adage that many programmers stick to: 'It takes a certain type of mind to learn programming, and not everyone can do it.' Users at Stack Exchange are wading in with their answers, but what do Slashdot users think?"
Being into computers since 1990, I had thought coding may be a career. In 1999, my first shot at college, and coding, I came to see it was not for me.
I aced the C Programming course, but it wasn't the technicalities of the language that repelled me... it was the environment.
I realized a day's work of coding meant sitting in one spot, staring at chars/text, thinking, and then more of the same. Even the 2-3 hours of coding "lab" was absurd, to me. I was NOT ok with this style of work.
I realized the CS path was clearly for someone else and moved on.
I don't know about sour grapes, since it is a reasonable a priori position, but it is wrong as far as I can tell from the literature.
Abstract. A test was designed that apparently examined a student’s knowledge of assignment
and sequence before a first course in programming but in fact was designed to capture their rea-
soning strategies. An experiment found two distinct populations of students: one could build and
consistently apply a mental model of program execution; the other appeared either unable to build
a model or to apply one consistently. The first group performed very much better in their end-of-
course examination than the second in terms of success or failure. The test does not very accurately
predict levels of performance, but by combining the result of six replications of the experiment,
five in UK and one in Australia. we show that consistency does have a strong effect on success in
early learning to program but background programming experience, on the other hand, has little
or no effect.
I like to think I'm a more-than-competent SQL programmer, and I don't hurt myself too badly at Web and Windows Forms programming.
I work with somebody who does some great stuff in C# who can't warp his head 'round set theory and therefore has real problems with SQL.
I know somebody else who's a real monster with Cisco stuff (a Cisco employee with certifications coming out his ears), and I'd argue that creating networking and firewall rulesets is every bit a form of programming as anything I do...but he'd need some serious handholding just to do a "Hello World" program in Visual Studio.
I know another guy who can make COBOL sing and is not bad at SQL (though he prefers to write his SQL with more procedural code and less set theory than is good), but he wouldn't have much luck doing more than tweaking a Web form.
We're all programmers, all of us good at what we do, some of us great at what we do...and, yet, making any one of us look like rank amateurs at huge swaths of basic programming tasks wouldn't be hard at all.
Could we become good programmers outside our areas of expertise? Probably. But it took me quite a while to figure out how to truly think in set theory, and I'm not sure I'm capable of more than a handful such masteries in any given field in my lifetime.
Cheers,
b&
All but God can prove this sentence true.
I believe everyone can code, but obviously some people are going to be intrinsically better at it.
A few weeks ago, in less than half an hour, I taught about 20 2nd grade kids (generally 7-8 years old) how to count in binary as well as add any length of binary number.
Wondering whether I could beat that, I repeated the feat last week by teaching about 20 1st grade kids (6-7 years old) exactly the same thing. The 1st graders had more trouble keeping their attention than the 2nd graders, but they were all the more enthusiastic to learn.
In case you're wondering how to teach kids of an arbitrarily young age how to learn binary, here was how I did it in three rounds of kids raising their hands to answer my questions:
1. Raise your hand if you like to play video games.
2. How many of you would like to make a video game?
3. Who would like to know the three secrets to making a great video game?
By the third question, I think I could have staged a coup with the eager little mobs.
I've got my eyes on a local pre-school next.
That came out wrong.
PS. Teaching kids how to count and do math in binary is way, way easier than teaching them how to do it in decimal. It should come first IMHO.
Actually, programming is more like writing a cookbook. Lots of people who cook can't write a cookbook. For example, illiterate ones. Similarly, it helps to be literate in a computer language in order to be able to program, which in turn requires an above average ability to deal with a peculiar kind of metaphor and an above average understanding of tools far more demanding than a source of heat, a knife, and some ingredients. The thing that prevents old women or old men or old monkeys or old dogs from moving from food to programming is a mix of intelligence, interest, and motivation.
It is, for example, fairly common belief that programmers make an income that is well above average. It's a common belief because it is true. Yet you don't see teen-age fry cooks piling in to programming to multiply their minimum wage income by close to an order of magnitude. Why not? Because programming is difficult, and you have to be both smart enough to do it and inclined to WANT to do it, regardless of the obvious rewards of working in an air conditioned environment sitting on your ass while making $60K/year or more with benefits compared to slinging greasy burgers at possibly armed and dangerous clients in a Burger King late at night for $200 a week on a good week -- ooo, and then there are those pesky social security deductions and a manager that laughs hysterically if you mention the word "benefits" right before he fires you.
rgb
Even when the experts all agree, they may well be mistaken. --- Bertrand Russell.
I believe that the parent confused "cooking", with "Gastronomy".
Being a good cook, has several potential paths: 1) you are REALLY good at following directions, 2) You can consistently reproduce the results of others from directions, and 3) you can spot when an error has been made.
Being good at gastronomy is different. You can look at a recipe, and see glaring problems. You can look at a recipe, and make arbitrary modifications to improve some characteristic of the finished product. (Fluffier muffins, tangier sauces, whatever.) You can find novel ways to combine foods for novel arrangements of flavors and textures.
The former requires you to follow directions, to produce something that other people consider tasty. The latter requires you to know what your ingredients actually taste LIKE, and imagine how they will taste together, and how they will behave together.
Programming is not like cooking, unless you are doing the most boring of code-grinding tasks. Programming is more like the latter. You can spot areas that clearly could be improved, and suggest ways to improve them, without throwing off the finished product. You can understand the finished product sufficiently to know what you need to get there, and how different parts of that product work with each other sufficiently to know how to change or improve those components without bringing the whole thing down. (An example, would be knowing and understanding how the ingredients in puff pastry interact, and why you have to use the proscribed method, and if it needs to be modified, that deep understanding allows you to make successful modifications, and not sugary glueballs.)
A person who creates brand new foods, and modifies existing ones in new and novel ways is a gastronomist. A person with a book of cookery and is good at following directions is a cook.
For clarity, I *can* program, but I am not a programmer, and do not claim to be. I could possibly become a decent programmer if I had the incentive to code for more than personal pleasure and one-off problem resolution, but I dont. Not like I have drive for cookery. :D I can look at a recipie for cake, and suggest a laundry list of modifications for different textures and flavors without ruining the base, and it is easy and fun for me. Not everyone can do that, nor should they. The same is true for programming, and I can clearly see that.
I can program, but I am not a programmer.