For example, let's say I want to build a game, and I have a limited knowledge of programming(some but definitely not enough). Should my first move be to design the game and then learn how to implement each separate part? Or should you learn a language really well before you design a game?
closed as not constructive by GrandmasterB, user40980, gnat, Doc Brown, Kilian Foth Jun 11 '13 at 6:08
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance. If this question can be reworded to fit the rules in the help center, please edit the question.
Learning from experience is probably the most effective way to learn. And having a goal to focus your learning is likely also beneficial to your learning. Combining multiple styles of learning is even more effective, so this is not an 'either or' question.
If your goal is to learn; do both. Pick a goal (developing a game) and go for it. Along the way, you will need to improve your understanding of your tools and the language (using online or printed resources) to become more effective.
In my experience, learning along with a project has both pros and cons: The good things is that you are motivated to do something, you are learning and receiving some money for your job. The bad thing is that, at the beginning, you are going to feel some pressure because you are not proficient enough to do a good job and It is very easy to get stuck in a technology that you don't know or you don't understand.
My suggestions are:
- try to allocate some time to learn the technology that you are going to use. It is totally understandable.
- then try to start learning the technology before the project starts if possible
- Don't use a technology poorly documented.
- Always understand the theory behind the technology. This one is important because learning the theory will help you a lot to understand how you can get the most benefit of the technology and also you will understand when it is good to use it and it is not.
- Have fun and learn from your mistakes.
Learning can be effective only when we apply (or at least know where to apply) what we learn. So, it will be a very intimidating and slow process to learn just to know more about any programming language.
But, it will be fun and fast if you learn while applying what you learn at the same time. If you wait until you learn a lot, you surely are wasting your time. Only when you do a project/application you will know its requirements and can do the programming counterpart to meet those requirements.
In your case, if you want to build a game application, first you need to decide which language and tool you are going to use in order to do that. Then get started with learning some basics like how to create a window, move an image, etc. and code alongside you learn. This i the most effective way of learning.
The usual advice is to start with simple games and then slowly add complexity. For example Pong then breakout or Space Invaders then Galaga. You don't have to do straight clones but mimicking a classic helps provide a clear recognisable target.
If you already know how to program (any language) then the next step is to build something. You will encounter problems and they will be hard but you will learn a lot by solving them and no textbook or class can teach how to make the games you want to make anyway.
One other tip I will give is not to become too attached to any one language or environment. The tools you use to make your first games will not be the ones you use later, but most of the skills will transfer.