Art of Programming: Learned or natural talent?

Pages: 123
One thing that makes for a terrible programmer is all these books that claim they teach you C++ and then cover basics and throw you in to figure out the rest on your own. I read several books and they all basically covered functions, classes, arrays, pointers, references, and then touched on inheritance and composition. Then they would end with ask around. I just picked up C++ Primer because I've grown tired of the terrible books that have been written. I see now why so many told me to get CS books and the book wrote by Bjarne (which I still need to get).
In my opinion, its a bit of both. While hard work and dedication certainly works, but you ought to have a certain *spark*. I've long thought that the *spark* has to do with one's passion and love for programming, but now I am beginning to think that it can't be *installed* in you. It has to be *pre-installed*.

I first started programming while I was on 7th standard. Programming wasn't in our syllables. I had to self-study. But I grasped most of concepts easily. I first started with QBASIC and then eventually moved to Visual Basic and now C/C++. Programming has always been somehow natural to me. Most of my friends have a hard time understanding the basics of the programming and as a result, they are not quite comfortable. But some of them are natural. I am extremely puzzled by this difference. Not only programming. Some are good in physics while others are not. Some are good in mathematics, some in arts.

It seems that, natural talent is something. But that doesn't mean that hard work is fruitless. Without effort, talent is just a word.
From my personal experience I seriously consider there is a gene which make people more likely to be skilled in programming(and more generaly in logical thinking) as well there is a gene which predispose in artistic creation, social skills...
I helped some people in programming and some of them simply can't understand, I remember trying to prepare someone for a programming exam and no matter how i tried to explain it would not work.
I don't belive in the 0-6 year learning theory because of myself: I didn't had contact with computers(or very few) until the age of 12 and yet I am a fairly skilled programmer.
Last edited on
above link wrote:
irregardless

This word is so annoying! Yet apparently even academics use it... :|

[edit]
Having said that, the article is very interesting.
Last edited on
One thing that makes for a terrible programmer is all these books that claim they teach you C++ and then cover basics and throw you in to figure out the rest on your own


This is the way I learned to program (covering those basics in a few days, then teaching myself everything else, including "ask around" in this forum). I am not sure that I am a good programmer by the criteria of all posters on this forum, but I still wouldn't change this way of learning C++ for anything.
Last edited on
I would have thought being forced to think for yourself was a good thing provided the book gave you sufficient background knowledge to do so.
You need 3 things - talent, hard work and interest. You can do with just 2 if one of them is interest. At least that's what one of my profs used to say, though I guess he was quoting someone else. Sounds plausible to me. Hard work can compensate for lack of talent, and talent can compensate for lack of hard work, but you can't do without genuine interest in the subject.
This is the way I learned to program (covering those basics in a few days, then teaching myself everything else, including "ask around" in this forum). I am not sure that I am a good programmer by the criteria of all posters on this forum, but I still wouldn't change this way of learning C++ for anything.


No, books is a good way to learn and I'm not saying to change that. I'm saying they need to stop pumping out books that just cover the basics and then drop you off in the programming desert leaving you to find your way to the next outpost without a map. I think if a person is going to learn from a book they should look at a few tutorials so they aren't completely lost then purchase a book like C++ Primer, The C++ Programming Language (maybe a little more advanced then needed, but a great reference), or talk to a college CS professor and find a list of CS programming books as they cover basics and advanced so you aren't completely lost on what the language can do and what features it has.

As you pointed out you learned the basics from books then asked here. That is great. My point is that if you only know basics, now you have to rely on others to give you an answer to your problem and hope they aren't misleading you. I've read C++ for DUMMIES, the whole Teach Yourself C++ series, and then started asking question at Allegro.cc where I was met with "Learn Perl, Ruby, Python, Assembly, C, C#, Java, etc to see how other languages do things then go back to C++." 12 years of this out of my 14 years of doing this (its no wonder I never became better than a beginner). Due to being there I began to doubt myself, started lurking and stopped asking questions. Only recently, after joining Cplusplus.com, did I finally start feeling like I could ask questions without ridicule for my not understanding something.

Just recently a guy told me it was worthwhile to learn assembly. A few posts later I told him I was going to re-learn assembly with Emu8086 that I bought while I was doing assembly things in my Computer Architecture course at DeVry (please try not to laugh too hard). Then his next post was basically it is fine to learn it for fun but the question is why? They contradict themselves all the time, I don't see how anyone could learn anything at that site. I've got to the point where I purposely troll the site knowing it makes them mad. They think I don't do anything when in fact I started reading C++ Primer to solidify the basics and learn advanced topics. A.CC (as they have come to call it over the years) keep pushing the idea that knowing the language isn't important, just make the game and worry about the language when you hit a roadblock.

I've want to be a game programmer, when I started stressing I wanted to get better at my C++ programming I got this as a reply: "There's something I don't understand, do you want to make a game? or do you want to become a better programmer? " The point of that part of the rant is that you have to be careful where you chose to seek your help because some help is mostly idiots thinking they know everything and once you show a sign of stumbling they deem you unworthy to program and ridicule you.

I've read numerous reviews that Cplusplus.com is THE site and to avoid Cprogramming.com when it relates to C++ so I'm glad that there is one community that actually is helpful and doesn't focus on the negative all the time. Okay, I'll stop ranting aimlessly now.
@BHXSpecter,

I agree that this site is probably the best on the web for what it does. I've yet to find a better community (I'd say we even beat stackoverflow community wise, not content though).

On the book topic, that's the way to go IMO. I took a C++ course in high school, then again my first year of college. I learned next to nothing from it. But I read through the rest of the book I had to get for the college class (We only made it to like chapter 6 out 17) and made leaps and bounds by going at my own pace. After that I picked up a game programming book for C++ because that what I was interested in. The book seemed great and I enjoyed reading what I read, but I quickly realized that it was beyond me at the time. This was probably 2 years ago now, and I haven't picked the book up again. I haven't really had the time. But, I did get C++ Primer and it's probably the best I've seen yet. I've learned a TON from it. And it definitely helped solidify some of the basics.

So what I'm getting at is you can learn to program in many different ways. I personally have not learned much programming wise from college yet. I think I probably will in the higher level classes, but so far it's all just refresher for me. But there are people in my classes that have also learned a ton, and others who haven't learned anything and don't know anything.
@ResidentBiscuit, I agree completely. Books are a way to go. My argument is that they need to have better quality books for beginners to get their hands on. The books I've read are just way too simplified and drop out key points here and there. That is why I think they should have CS quality books for learning from so they don't miss key things. Like most beginner books don't cover __FILE__ __LINE__ __TIME__ __DATE__ etc, nor do they cover #define, #ifdef, #ifndef, etc. The ones I've read also don't tell you about the defines to do for headers to protect from getting multiple calls to the same file.

1
2
3
4
#ifndef HEADER_H
#define HEADER_H
//header content
#endif 
some people probably have an easier time with learning it, but i do think that everyone that want to become any good have to work hard.
You can apply this concept to absolutely any subject and for the most part it's not worth debating about (though I have seen some good points in this thread being made).

My $0.02 is that as an employer I would rather have the one guy that worked hard for his CS degree rather than the one that was just born with his talent for CS, this way I could guarantee a good work ethic as well as skill.

Problem is that just having a CS degree doesn't guarantee either of those. Some have ulterior motives for working hard other than just because they want it. Some do it just to please their family, others do it just to get a good paying job, others just do it to prove the can do it with no interest in actually working hard after receiving it. I have heard time and time again that people working with CS grads can't stand half of them because they can't code worth a darn or have terribly hideous code.
That's another issue, and is kind of a debate. There is an argument going around about whether CS degrees should teach programming at all, or just go pure theory. I think unless you plan on going into research, you should opt for a program that actually has some programming classes. Program I'm in for example has a pretty healthy mix of practical programming and CS theory
BHXSpecter wrote:
I have heard time and time again that people working with CS grads other people can't stand half of them because they can't code worth a darn or have terribly hideous code

Fixed that for you, Specter.
Yeah the DeVry Game and Simulation Programming degree campus class I hear had tons of hands on. The online courses proved to be lame (gave you the code for everything) or if it was a lab for you to code something it was just simply basics (make a class that inherits from another class, show class composition, make a simple class, etc). Everything that was advanced was copy this code, paste it at line #, compile, run, take screenshot, submit pic pasted to a word doc format for grade. I got royally screwed for falling for the learn to make games. Thought I would learn to be a decent programmer and learn to make games (my passion) but all I got was debt (back tuition, two student loans..all with interest building). I played with C++ and did basics so much that I have it burned into my brain, figured I would have learned advanced things in the degree (but somehow the course decided the advanced part was all about classes for the whole 8 weeks).

The course did declaring classes in week 1. Public/private in week 2. Class functions in week 3. Can't recall week 4 or 5 without digging out the lecture papers but week 6 was inheritance and week 7 was class composition. Week 8 was nothing (final exams for the classes). I seem to be picking the wrong path for learning to program by the looks of it.
I seem to be picking the wrong path for learning to program by the looks of it.
I think you might be understating your situation a little. I'd prefer "you got royally screwed".
Problem is that everyone says there is no path to get to learn programming so I'm kind of in limbo at this point.
Kinda' off-topic but still some what relevant to the discussion.

http://xkcd.com/844/
Pages: 123