Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm currently learning C++ from Stroustrup.

At the same time I'm practicing C++ by doing some little projects (Project Euler, a bit of SDL with Tetris, etc).

But I have a tough time balancing. What should be a good balance, fifty-fifty? A bit more theory, a bit less practice?

share|improve this question

2 Answers 2

up vote 9 down vote accepted

Start with the fact that knowledge and understanding are different things. You want to understand what Stroustrup is teaching, not merely recite facts from him. To that end, focus your practice around the concepts that you are learning at the moment. When you are learning about polymorphism, apply it in a small project or two until the little light bulb goes off in your head and you "get it".

The idea here is to target your practice around the theory you are learning. When you are pulling your practice from other sources, you might not be practicing the right thing. There are two levels of understanding any theory, and both are quite important:

  • Understanding how to apply the theory. You need to know what it looks like in code, and what it does for you.
  • Understanding when to apply the theory. You need to know when the theory doesn't match the problem at hand (sometimes more important than knowing when it does). You need to know what other issues can arise when you apply the theory. Not every bit of theory needs to be applied with every bit of code.

My personal approach is to do the following:

  • Learn about the theory.
  • Create some code that uses the theory until I understand what it can do for me.
  • Force the theory in places I normally wouldn't so I can understand the limitations of where and when to apply that theory.
  • Repeat cycle until I get enough related theory working together. At this point I take what I've learned and put the pieces together in a way that makes the most sense.
share|improve this answer

A "tough time balancing" is expected and normal. If you didn't have a "tough time balancing" then you would not be learning.

You will eventually learn all the theory and then apply all the theory in all of the things which you practice.

"Balance" doesn't actually matter since you have to do both anyway. Just keep going forward. Worry less. Code more.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.