Reaching your skill boundaries?

I know C++ in quite a lot of detail and have written some quite complex programs, including some 2d games, but some things just confuse the hell out of me. In general I am an intelligent person, I know this, but some things in C++ (or programming in general?) just go over my head. It is really frustrating. Templates for example, I understand how to make a template function but making a template class which is implemented by many other classes has been explained to me many times and I just do not understand.

Do you think that it is possible to just reach your skill boundaries and not be physically able to learn any more? I hope that i can get a job as a programmer some day but I am concerned that I am just not good enough.

Thankyou.
Some things just won't click for a while, it just depends on the person. I suggest that you play around code that you don't understand to try and learn how it works. Once you think you have it down, try to write your own. Also, you don't need to learn every feature of C++ to the most complex level possible :)
Some things just won't click for a while, it just depends on the person.


Yeah, I did not understand how templates worked for a while, but then I actually tried learning them and was like "wow...it's pretty easy."
Templates can look VERY intimidating, especially the HUGE ones in the standard libs. But, at their simplest level, they are actually quite simple.

1
2
3
4
5
6
7
template <typename T>
void func(T var); //you can pass ANY data typ, T will then be replaced by that type

//for example
int var;
func(var);
//now, everywhere inside of the func() declaration and definition, 'T' is replaced by 'int' 
closed account (S6k9GNh0)
There is something you don't understand within the concept(s) of templates. Learn what that is and then learn templates, it should simplify things.

Sometimes it's much easier to learn the underlying components of how a concept works before understanding the concept itself.

EDIT: xander337 below was talking about my first post where I mentioned I had difficulty with pointers.
Last edited on
I'd have to agree with that, computerquip, pointers where by far the most difficult for me to figure out. The basics of their use were easy enough, but it took me a disturbingly long time to figure out how and when I should use references. Not to mention I still have trouble with pointer arithmetic. Not that that one is difficult, I just never bothered to put much effort into learning, and hence have not used.
learn a small bit at a time

for topics such as pointers or templates, learn their basic uses

over time, learn their more advanced uses

I think templates are at least a magnitude of difficulty harder than pointers (templates may look easy in the beginning "like a macro", but their uses can get quite complex)

the advanced uses of templates can take many years of practice to understand - for example, I am still trying to pick up the implications of mixing dynamic OOP with templates and how to mix them under what situations (there are techniques like layered mixins that are non-trivial)

so don't get frustrated - work on small bits at a time
closed account (iw0XoG1T)
yaarg wrote:
Do you think that it is possible to just reach your skill boundaries and not be physically able to learn any more?


The answer is yes--but that probably not your problem. Everyone has their limits and as you get older your ability to learn new and complicated concepts diminishes. I see it at my place of employment all the time--the young kids (under 30) pickup everything quite quickly while employees over 50 can't .
Nobody likes to admit this, particularly those people who were smart in their youth but it is really true. You can get good work out of the old because of their experience but their minds are not flexible, new concepts take quite long, and it is really better to use the young.

Regarding your question keep trying particularly if you are young because someday you are going to reach your limit.
Last edited on
I have to somewhat disagree. I picked up computer programming effortlessly and at the same time I could never fully grasp electricity and magnetism (in college). Having said that, yes, over time the speed at which you learn will decrease, but it should not ever become zero.

You have to keep at it. Think about how you learn best, then try to learn templates that way.

When I'm trying to figure out how a piece of code works (say a smallish app), I like to write down class diagrams, hierarchies, relationship diagrams, etc. But that is because I am a very visual person.

How do you learn best?

closed account (3hM2Nwbp)
I've always found that trying to learn from other people's examples was harder than actually building your own examples from scratch. I've also found that using more meaningful names for template parameters helps in keeping track of what each argument represents.

1
2
3
4
5
6
7
8
template<typename T, typename U>
//Great...but what do T and U and represent?
class X { };

// versus

template<typename Data_Type, typename Allocator_Type>
class X { };


I learned templates by building my own examples (trial and error, mostly), building in complexity as the understanding grew.
closed account (zb0S216C)
yaarg wrote:
Templates for example, I understand how to make a template function but making a template class which is implemented by many other classes has been explained to me many times and I just do not understand.

Perhaps you've encountered some sort of mental block? Maybe taking a break from all types of programming, and do something relaxing. That helps, normally.

Your situation is somewhat similar to when I was playing on COD: MW2. I was really bad at the game at one point, then I decided to take about 2 days break away from the Xbox. 2 days later, I was back on COD: MW2, and absolutely owning the opposite team.

Wazzak
Last edited on
Framework wrote:
Your situation is somewhat similar to when I was playing on COD: MW2. I was really bad at the game at one point, then I decided to take about 2 days break away from the Xbox. 2 days later, I was back on COD: MW2, and absolutely owning the opposite team.


I LOVE your example! :) I find that taking a break helps too, its just hard to do sometimes (cod for example)
Learning how to program is really a cycle:
1) You attempt to learn something that you barley understand (lets say arrays)
2) You try using it in a program
3) You fail horribly
4) You post for help on the Forums
5) Somebody makes you feel stupid but you understand it a bit more
6) You try making the basic example, and succeed
7) Later you make a complex program that uses the arrays a lot and you finally understand through use

At least, this is how it was for me with arrays, pointers, structs, classes, etc.
Topic archived. No new replies allowed.