Game Development Stack Exchange is a question and answer site for professional and independent game developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am trying to expand my knowledge on gaming and programming and I was wondering what underlying skills people think they one should learn to be a great programmer, or developer. What are some important patterns or practices that you use frequently?


share|improve this question

closed as primarily opinion-based by Noctrine Nov 5 '13 at 19:51

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

To get an answer of this question, first you need to tell us about yourself. What is your skill level, what have you done so far, what is your goal, is there any specific part that you want to improve on etc etc. And read it, GameDevloment faq – iamcreasy Jul 15 '11 at 14:21
I am a student in computer science, I would say beginner to intermediate level. I've created some games using Flash as3 on my own, and done standard course material in java. Im mainly interested in creating software for entertainment or things like apps. I'm in a state of "You don't know what you don't know". And I know that. And I want to get out of that state by finding out what I really am uneducated on. – Lebowski156 Jul 15 '11 at 14:33
Here's what not to do -- write unmaintainable code -- and here's how (this article is excellent, and very educational): – Randolf Richardson Jul 15 '11 at 19:08
up vote 3 down vote accepted

Make games

I can't stress it enough. Make anything. It could be Tetris, it could be SuperMario. Then add feature to it. Try to implement different algorithms(pathfinding, al etc etc) into your game. Find out how things are turning out. Which is the bad part of your code. Then refactor it. You will face some problems. Then look for solution. You will find things like design patterns. Learn it. Then make another game. Use the experience that you have learnt from your past game. When you have some experience you can even start working with some open source game development teams(like 0 AD). If you feel its too hard for you, then go for modding. Don't stand still, do anything related to game development. It could be modeling, texturing, rigging, animation, programming. You don't have to be a jack of all trades. Just have a basic understand on every aspect.

The bottom line is try to have a reasonable amount of experience on different aspects on game development. At the end of the day a people pick one from many that suits himself. But, you need to know them first.

share|improve this answer
Cool. Ya i've fiddled around with Maya for 3d modelling and textures. And some 3D animation. 2D in flash. I find it hard to specialize. I kind of get discouraged because I get the feeling that there are so many people out there that are experts at such a young age. Or it seems that way anyways. – Lebowski156 Jul 15 '11 at 14:47
All the experts were someone like you one day.And don't worry about having experience on things that are not-so-well known.In game development everything counts. You 2d flash development is going to help you indirectly on some aspect in the future. Just do something.Try to come up with an idea.Make a prototype as fast you can. Spread the words. Receive feedback, then modify it. Or come up with another idea.its a recursive process. No body becomes a great developer overnight.Its a matter of love, devotion and patience. The longer you stick to it, the better you will get at it. – iamcreasy Jul 15 '11 at 14:54
Thanks for the encouragement and advice. – Lebowski156 Jul 15 '11 at 14:58

Of course it depends on the particular position you are aiming for, there is no general answer, but here is my list about most important skills for programmers as I see it (I should mention my area is Console & Performance):

  1. Debugging - analyzing crash dumps and learn the language of your CPU and how it communicates with other components of the system

  2. Profiling - not much to say here, here you really learn about your code and that there are so many wrong assumtions about code that can become critical

  3. Shipping Mentality - think in "Shipping Solutions" rather than "Great and perfect Designs"

All those sound simple and ovbious, but really mastering them is an art and pretty rare.

share|improve this answer
By shipping solutions, are you talking about in the business sense, like shipping releases for software? – Lebowski156 Jul 15 '11 at 14:42
Yes @Lebowski156, the ability to finalize a game and to follow a schedule, with realistic goals – Maik Semder Jul 15 '11 at 14:47
I've been trying to think in that mind set lately to get more done. I feel like it will be easier after I finish a few more games. Right now Its kind of like walking into a fog without really knowing how far along I am and how much further I need to go befopre I finish the developing the game. Are general checkpoints or steps to follow? (ex. develop game idea, do pseudo code for classes, do artwork, do sounds, implement, polish it off) – Lebowski156 Jul 15 '11 at 14:52
+1 for debugging and profiling. Some of the most important skills to be a good developer! – Ray Dey Jul 15 '11 at 14:57

Problem solving is probably one of the most important skills to programmer, as is the ability think and reason critically. Both of these are skills that apply to all levels of developer and can almost always be improved upon.

The ability to work through and understand the root cause of a particular bug or other issue, and the ability to understand and reason about the implications of potential changes to the program in order to fix the bug is a key aspect of a good programmer's job.

share|improve this answer
Thanks. I've been working through a sidescrolling platformer lately and I've had a lot of this. Sometimes I just sit and think for like 5 minutes about what exactly is happening and why its not working. Doyou have any specific projects youve worked on that youd recommend trying? – Lebowski156 Jul 15 '11 at 14:44

There is no generic answer, as today, a developper usually is specialised on one or other field, may it be AI, low level optimisation, rendering engine, physic engine, shaders, ... So basically, everything depends on what you know already, and what your specialty is (are?).

After that, there are lots of best practices depending on which language / game engine you're working with, and each company will also have there own standards in terms of skills and / or methods.

To improve your skills, I suggest working with multiple fields mentionned above, and work with open source game engines to see how they are made.

share|improve this answer
Thanks thats good advice I'll take a look at some open source engine for sure. – Lebowski156 Jul 15 '11 at 14:40

As a web developer forming a game development group I have found that one of the biggest aspects which set the field apart from normal programming is how game development is not just coding. In the development process you need to work with coders, projects managers, writers, musicians, animation experts, and the like, all throughout the process to get your thing out.

That said, for what I'm doing now, typically I'll focus exclusively on coding specific parts of the game that I'm familiar with (such as an interface) while another developer will handle the physics -- because since game development is so complex, it's more of a team effort where it's best to stick to something that interests you rather than being a jack of all trades.

share|improve this answer

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