• Forum
  • Lounge
  • How to Know if You Have Real Programming

 
How to Know if You Have Real Programming Potential?

I would appreciate experienced programmers’ advice concerning how to know if I’m a good candidate for further studies in programming. This semester I’m taking my first programming (with C++) class.

I’m above average in the maths and sciences and regular languages. However, little of that seems to be translating into skill with computer programming. I struggle in class with the simplest things. Other classmates will ask questions, have it explained one time, and get their a-ha moment. I, on the other hand, struggle with basic syntax learning.

I do well on the IPO charts and flowcharts parts of the assignments. But then when it comes time to enter my simple beginner’s programs into the compiler, things get more difficult for me.

What’s a good way to gauge whether or not I should consider further studies in programming? Is it typical to have very many frustrating experiences from the outset? How many classes, and what classes, should I try before deciding? Right now I’m feeling very defeated.

closed account (zb0S216C)
Everybody has the potential to aspire in any skill, regardless of their race, gender and mental capacity. Some mental illnesses, such as dyslexia, may hinder progression but not stop it.

Pay attention in class and you'll do fine.

Wazzak
I’m above average in the maths and sciences and regular languages. However, little of that seems to be translating into skill with computer programming.
Not really. There's, a high I think, some correlation between general math and language skills and programming skills. When programming, you use the part of your brain that deals with consistency (you give the same meaning to '=' when it's used in the same context) and symbolic manipulation (you know that "x+y" and "y+z" are essentially the same expression).

What’s a good way to gauge whether or not I should consider further studies in programming?
You sure? The truth is somewhat depressing. If you still want to know, read on:



It's been known for some time that some people simply can't be taught to program well. This is exhibited in the grade distribution in introductory programming courses as, rather than a bell curve, a double hump curve.
What this means is that if you still can't program at all after going through the entire course, you'll probably never become proficient.
Pseudocode is easier because by its very nature it's very lenient about inconsistent usage of symbols and semantics. A real programming language has no such permissiveness.
Don't worry, though. You may just be a slow learner. Some people just have to get over a cognitive hill of sorts, after which it's a metaphorical smooth ride. The difference between the lower hump and the upper hump is that the people in the former can never get over that hill.

Here's an interesting paper on the subject: http://www.cs.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf
And some comments on it: http://www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html
You can also Google "programming double hump" for more on the subject.
Last edited on
I find it very hard to believe that you could be incapable of learning to program. When I started out at university I certainly didn't take to it naturally, it took a LOT of work to get up to standard that most other people were at but when you do something often enough you change the way that you think, your brain makes new connections. A few years later I'm about to start my first job as a programmer and I adapt quickly to unfamiliar topics.

Velcro, if you put enough time and effort into programming (or anything else for that matter) you can succeed.
I'm willing to believe it, and wouldn't be surprised if it where true. It's a pretty well known fact that there are some things some people are incapable of fully grasping, and I think it has to do with the neurological structure of the person (lateralization of brain function).
Even if it had been proven to be true, which it hasn't, we should try to encourage budding programmers not scare them off.
This isn't about scaring anyone off. He asked for information and I provided the best I had, with a proper warning even. It's up to him what to do with it.
Should I have lied instead? No, I don't think so.

It's very nice to have such politically correct ideas, but the fact is that the data and the expert opinion just point in the opposite direction. If you want to argue against that, you have to do better than "because I say so".
"Because I say so"? I'm not trying to prove anyone wrong take it easy. If you're looking for a debate you'll have to go elsewhere.
No, but you are trying to shrug off the work of other people on the subject.
There's no debate to be had here because neither one of us is qualified to have it.
I'm sure what helios has said is true enough, but if your completely new to programming then I doubt you would be able to tell right from the off if it's not for you or not. It's probably just attention to detail that your lacking if your understanding the theory OK but just struggle to make things compile. Be really careful with capital letters, make sure you have ; where they should be, watch out for = and ==. print out a copy of the dreamincode cheat sheet, and have a look at it every time you make a loop of some sort.

(it really isn't that great, but handy to have when your completely new to it.)
http://www.dreamincode.net/forums/topic/12694-c-quick-reference-sheet-cheat-sheet/

And just keep with it. Do projects outside of what your class requires you to do. Look over the tutorial on this website and make sure you know everything that it talks about.http://www.cplusplus.com/doc/tutorial/
I'm going to reread replies (and read any new ones after this) and read up on some articles cited, before I respond further. But so far thanks for all the advice and, especially, help from personal experiences.
I've witnessed several introductory courses to programming. I think everyone can, theoretically, be taught to program. Realistically, I think most people can be taught in a reasonable amount of time and effort. I find math 'skills' are a good tool to predict this [but math scores don't always properly reflect a person's understanding of math, as our school system is based on learning by heart...].

During my time at the university (my degree has a good amount of math, so every student has the intelligence to learn to program), I only saw two reasons for failing an programming 101 class:
1) Not enough effort: Programming is something you have to practice. If you don't make your exercises until the day before the exam, you will probably fail. Even if your friends can do it without making their exercises, that doesn't mean you can. Everybody's different, but anyone who does his exercises will in all likeliness pass.

2) Failure to abstract programming 'syntax' from 'vocabulary'. Some students get overwhelmed when they see a bunch of keywords they don't understand, because they don't know how to interpret a statement. You (velcro) said you don't have any difficulty with pseudocode. Well, that's most of the battle won already, because the pseudocode is the syntax, or logic, of your code. The rest is basically translating to your language of choice, which can be done by means of the internet or a book [generally, introductory courses are open-book anyway].

You say you're above average in math and can do the pseudocode pretty well. All the rest is practice.

Thanks, everybody, for the insight. I'm still reading up on some of the articles.

Basically I'm realizing that I'm not as "natural" about programming as I am in other disciplines that correlate with a knack for programming. I have to be more motivated and put in more time than a lot of my classmates do.

I think everyone in here can benefit from reading a book called "Outliers" by Malcom Gladwell. Here's a link to the wiki:

http://en.wikipedia.org/wiki/Outliers_(book)

If the synopsis sounds interesting then I highly recommend picking up the book from your local bookstore.

All I have to say is that only you can determine how good of a programmer you can be. Gladwell are many factors that contribute to being extremely successful (relative to everyone else, or a statistical outlier), such as the opportunities that are available to you as a result of where, when, who and what you are born as, social class, discrimination, etc. Whereas these factors are out of our control, the one factor that you personally control is the time you put into something. Bill Gates and Bill Joy had opportunities that no one else had which led to their success, but what is common among them as well as sport stars, businessmen or businesswomen, lawyers, etc across all successful people is the tried and true tactic of getting out what you put in. You don't need to be a math whiz (although it helps), you don't need a high IQ (although being a genius helps), but what you do need is to have the right attitude and persevere through focused and consistent practice.

Although practice alone won't help you become the next Gates, Joy or Jobs, you can surely increase your likelihood for success by applying yourself. Even though Gladwell's argument (I think) is more concerned with showing how no one makes it alone, it still doesn't deny the role that personal preparation plays.

Keep your head up, bro, and keep putting in that work!
Last edited on
Topic archived. No new replies allowed.