Can Anyone Become a Programmer? 767
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?"
There is nothing special about programming (Score:1, Interesting)
There might have been something about it when computers were so new and ancient that programming efficiently actually mattered. That was the age of John Romano and highly efficient code actually produced neat things. Now computers have developed into so powerful that such things just aren't required anymore.
What is the programmers job in reality? To put out code as fast as possible. It's often very boring, too. 99% of programming is just putting together function calls and libraries others have already coded. There hardly is any "challenge" as so many programmers on Slashdot like to put it. In reality it's boring as hell.
And you know what? Every programmer will get to the point where they don't want to programmers anymore. They start to see how monkey-like programming as a profession is. Then they want to be designers, those who actually need to think of the bigger picture than just putting together basic pieces of code in Visual Studio.
Programming itself doesn't require anything special. Designing does.
so true! (Score:5, Interesting)
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.
Re:There is nothing special about programming (Score:4, Interesting)
You must have a very interesting job. I think I've designed an actual algorithm once a year, on average.
The rest is mindless factory work.
The question (Score:4, Interesting)
Implicit in the question is the idea the programing is programing is programing.
I don't think this is case. I would say just about anyone, baring those individuals with some moderate to severe mental impairment can do some programing. Integration programing is usually nothing more than outlining the corrected steps and gluing that outline onto the required boiler plate. Application programing might get a bit more complex but even that should be attainable for anyone able to read and follow documentation.
Oh sure it can get very complicated when you get into ETL on big data sets and such certainly may require a specialist who makes it business to do it well but I do think its something *anyone* could learn. In the same way anyone can learn to be an accountant or an attorney. Getting past some of the hurdles can be tough but with enough time and resources most normally abled people should be able to get there.
When you get into lower level stuff its a different game. I am not so sure just anyone could be taught compiler design for example at least with the outcome they will be proficient and successful working in the field. As you move from programing for high level applications into programing for 'Computer Science', 'Computer Engineering' or 'Systems Programing' than there is a certain group that is able to follow the math, and think about problems with and without abstractions at the same time and other things not everyone has a facility for.
Re:There is nothing special about programming (Score:5, Interesting)
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 [mdx.ac.uk].
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.
Re:There is nothing special about programming (Score:4, Interesting)
Programming well takes skill and experience. It is not an easy craft to learn, the devil is often in the myriad details and idiosyncrasies of the platform, the libraries, or the specification. What helps immensely is having access to senior programmers who can make sure you're not reinventing the wheel a thousand times over. Bad news there: because programming is "the lowest of the low of IT" and every programmer wants to get out, there are hardly any senior coders left. Most of them are to be found in the hobby or OSS arena; I find very, very few of them in the corporate world. By the way: I know a fair few people who would like to stay involved with coding (and they continue to do it in their free time), but they do not become our senior coders because that position has been eliminated in pretty much every company I've worked for.
What type of programmer? (Score:5, Interesting)
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&
Re:There is nothing special about programming (Score:4, Interesting)
I know a fair few people who would like to stay involved with coding (and they continue to do it in their free time), but they do not become our senior coders because that position has been eliminated in pretty much every company I've worked for.
In most engineering fields, engineers don't stay engineers all that long. If they're any good they become managers and stop doing working at the lathe, so to speak. Also, large design exercises are a speciality in some fields and are handled by a department that does only that. In the field, an engineer may be both a manager and a technical problem-solver, but for anything *really* hard specialists are called in. And, tue or not, employers think new graduates will have all this up-to-date fancy shite in their heads, while at the same time, they want managers to have had experience on the shop floor, so they promote upwards from there and replace with cannon fodder CS grads.
BTW, Google prefers to hire maths grads as programmers. Google say that the problem-solving skills of maths grads are better than those of CS grads, and anyone with a maths background will certainly have done some programming during their education and can cope with learning new languages and technologies.
Re:Absolutely not. (Score:4, Interesting)
In my experience, anyone can become a programmer. I've seen enough of them do it. Also, in my experience, most people can't become good programmers. It requires a certain obsessive interest that most people either don't have to begin with or lose once they start thinking about girls, children, hobbies and the like. Plus it requires a somewhat high midiclorian count.
I don't have any data to back it up, but I'd guess that if companies knew how to filter on good programmers in the interview process, only about 10% of programmers working today would be working as programmers. And the average salary of a programmer would probably be upwards of one million dollars. Fortunately we can kind of limp by on the mediocre programming and design put out by everyone else, and it's usually at least a bit of a productivity boost for the company.
Some programming simple, some hard (Score:2, Interesting)
On the other hand I have seen CS grads with perfectly formatted code with all the comments, variable names, OOP, etc perfectly to school standards that was all crap in actual use. I could edge case them to death. A simple way to break their code was to do something radical like use a foréign character. Often the difference between a bad programmer and a great programmer is the size of their code. A bad programmer will use 6 classes and 900 lines of code, a pretend good programmer will half that while making it more complicated, and a great programmer will use zero classes and 20 lines of code; and those 20 lines of code will be simplicity incarnate and if they ever need any maintenance any fool could do it.
I have found the great programmers usually stick out early. It is not often something that comes after years of programming they just become more great with time. Although the better programmers weed out their bad practices and add new good ones the worst programmers are often very reluctant to change, "Unit testing will just slow us down."
What makes me laugh though is when the worst programmers do finally adopt something new and good they usually adopt it in the worst way. So they will adopt test driven development during a prototyping or R&D phase when everything is in massive flux and just needs to be proof of concept not flawless.
So I would say anyone can become a bad programmer and with the correct mentoring most can become an adequate programmers but that only those with the right intelligence and mindset can become great programmers.
Yes. (Score:5, Interesting)
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.
Re:Anyone... (Score:3, Interesting)
I've found everyone is arguing one of the two and most of the contentions between people come from when they don't realize they are arguing two very different questions.
Now I'll try to take a stab at the two questions. As "Can anyone learn to program?" is a requisite for "Can anyone be a good programmer?" I'll start with that question first.
Can anyone learn to program? : I don't know and I'm willing to venture a guess that no one on this forum really know either, regardless of how sure they may think they are. I venture to say, though, that I do think the vast majority of people can learn/be taught to program given the right instruction, motivation, and time. I'd recommend the following post on Ars [arstechnica.com]. I think it provides a good example that the right instruction is crucial.
Obviously, some people are going to find programming more natural than others. For me, learning programming came very easy. Writing did/does not. Other people are the exact opposite. Does this mean that I can never learn to be an ok writer. I tend not to think so and I believe the reverse is true for people who are not naturally gifted for programming. What it does mean, at least to me, is that they have to learn to think in a new way (admittedly not easy, but it is possible). The real question then is how much effort will it take, does the person have the motivation to do it, and is it a worthwhile venture. I'll leave these to somebody else to answer.
Next, can anyone be a good programmer? This is really more of an extreme version of the other question. I'll hold to what I said with the previous question that most people could. However, the issue of whether it is worthwhile to spend the amount of time to develop the skills to become proficient is even valid. I suspect the answer is no. While I'm a believer in developing a range of talents, I also believe that being productive in society means that one needs to hone their skills in an area to become as good as they could possibly be. It seems natural then that the area in which one attempts to excel in is in an area that they are naturally gifted in to begin with. The person could then progress much further and the initial learning curve and potentially the later learning curve is much less steep for them. Lastly, one additional question: can anyone become an amazing programmer? To this I would have to say almost always no. This is akin to saying, "Can anyone become a DaVinci, a chess grandmaster, or an elite athlete?" Reaching the pinnacle of an area requires both dedication and natural ability. Even most programmers will never reach such a level that they can see any problem and quickly come up with an elegant solution for it. This is at the far end of the ability scale and for someone who isn't naturally adept at programming, and asking them to figuratively carve David.
Just my 3 cents.
Re:There is nothing special about programming (Score:4, Interesting)
Entire industries have been built upon the adage, "one man can do what another can do". Willpower and motivation are more important than raw intelligence, I've lost count of the number of tortoises that have outpaced hares in my experience.
The divide between designers and developers appears to be another example of this. Yes it helps to be so inclined, but 99% perspiration and all that. Its a skill, like any other, just as sales or electrical engineering are skills. Sure the Picassos are a rare breed, but that doesn't mean someone can't pick it up and become a damn good example of an artist if they really wanted to.
Re:Absolutely not. (Score:5, Interesting)
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
Re:Not really (Score:3, Interesting)
Umm... apparently if you mix your ingredients in the wrong order, you won't get a souffle. I didn't even know that until I watched a Nova documentary on Netflix about evolution. Apparently, cooking can be very technical, unless your definition of cooking is along the same lines as the women I work with: throw a bunch of meat, cheese, and maybe something green in a crock pot, wait four hours, and eat. Delicious, but not a souffle.
It sounds like you're engaging in the anthropomorphising fallacy I offered up to Greyfox a few minutes ago. It's a form of magical thinking. In order of the oven to emit a cryptic message because the spatula has been misplaced, it would require that either the oven, drawer, and spatula be somehow linked and programmed (maybe via RFID) or that there's something magical happening that's enabling the oven to care about where the spatula is.
Why is the computer so mean? Why can't it just tell me what's wrong instead of playing a game with me?
The real reason that women do not tend to become successful at programming, I think , is because they're told from day one that women are more social and more socially-oriented, and they're discouraged from developing logical thinking skills, often by older women (elementary teachers, daycare providers, even their own mothers). They watch sci-fi where computer interaction is social, and they watch computers deliver English words to them as though the computer understands English, and they conclude that programming must be a social problem. Pedantic, logical geeks can successfully communicate with computers, so maybe it just takes a certain kind of person to socially engage a computer and talk it into playing nice. So, a computer becomes something like their autistic son rather than a machine.
I'm not saying that women can't program. I have a female-model brain (whether I like it or not) and because I was encouraged to value logical problem solving at a young age over being social (because my ex-parents figured that there must have been some fundamentally male "stuff" about me because of my male reproductive system), I am now able to successfully get computers to do all kinds of things.
Let's face it. Women are more religious and more prone to social reasoning and magical thinking. It's just how older women brainwash girls to be. There's no other reason it has to be that way. When I tell a co-worker that "no, I can't make the computer do that because the program is closed-source" they hear "I'm in a bad mood today, and I don't like you, so I'm not going to cooperate." The logical and critical listening and thinking stills aren't there.
I don't know what to make of it, and it's become rather vexing to me as I get closer to gender transition. How can I possibly be a woman if women can't program, if it's even women who are the ones telling me that programming is a matter of body parts, that being a boy is the main quality I possess, rather than years of experience, education, and tinkering, that enables me to program? Furthermore, not to go off on too big of a rant, if I did have a female reproductive system, why would I have even bothered with all that "hard" stuff like math if, as a question of my personal survival and role in life, I could just have found a successful guy, got married, and had kids? Yet, as a man, how can I suggest to women who tell me they're baby machines and social enablers by virtue of their reproductive systems that they're wrong?
Who knows... anyway. I digress.
Re:Absolutely not. (Score:5, Interesting)
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.
Re:Answer (Score:4, Interesting)
Re:Absolutely not. (Score:4, Interesting)
I think that almost anyone can become a programmer. What they lack is the ability to put-up with the mind-numbing boredom that programming represents, just as many people lack the ability to listen to a teacher drone in a classroom about math or science or english verb tenses. Many people would rather be doing something else. (Just like right now I'd rather be watching a movie instead of coding..... oh wait, that is what I'm doing. Well technically I'm doing both.)
I would like to propose 3 categories, based on personal observations, including the dropout rates I've seen in programming classes:
1. People who'd rather have their internal organs gouged out with dull spoons rather than program. I cannot say definitively that some members of this group simply cannot program at all, but I'm willing to entertain that idea, based on the proverbial VCRs with flashing "12s".
2. People who can program but consider it "mind-numbing boredom". In other words, it's just a job. If it's mind-numbing enough, you get to move to group #1.
3. People who are freaking insane and would rather program than have sex (not that they're proverbially given a choice). Who consider "mind numbing" and "programming" to be mutually exclusive.
For practical purposes you can really only hire programmers from groups 2 and 3. Ideally, they'd all be 3's, but there aren't enough 3's to go around, even if they weren't stereotypically social nightmares.