How to get experience in the programming world?

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • How to get experience in the programming world?

      So, i know some programming. I know C++, the standard library, design patterns, Graphics programming and a lot of other stuff. I have read a lot of books, tutorials and texts online describing many things: from "Hello world" to the development of Memory managers, but still, i dont feel i am good enough, i dont feel i know enough. If i grab an open source project, and look at the code, i feel completely lost. I have no freaking clue what all that means. So, how can i get enough experience, so that i can get into open source projects or even create my own project. How did you do it?
    • RE: How to get experience in the programming world?

      Open source projects are notoriously terrible for learning programming. The architecture and coding standards are often very amateurish. I wouldn't bother.

      I started by making my own games. The first real program I ever wrote was a game called Farmer Bill's Almond Farm. It was about 5500 lines of code (C++ & some assembly) and was the worst architecture you could imagine. I think I had like six classes in the entire thing.

      The absolute best way to learn is by doing. If you want to be a game programmer, you need to make games. Start simple: make a tetris clone. This may seem like a simple project but it will help solidify the foundations of game programming. All the core elements that exist in every game are in Tetris. You'll have to manage things like loading & rendering textures, playing sounds, having a main menu, saving the top scores to a file, handling level transitions, getting user input, dealing with calculating lines, etc.

      Reading books can be good, but they won't teach you how to make games. Not really. I tell my students that for every 3 hour lecture I give, they need to spend 10+ hours outside of class applying that knowledge. Most end up spending closer to 20 hours. You may have read all about graphics programming, but have you actually built programs that render stuff to the screen? If so, great! Now build a program that can load and render tetris blocks and you're part of the way there.

      It's all about repetition.

      -Rez
    • Something else I would like to add, in most game projects there are quite a few developers that are all contributing to the same code base and it is difficult to try to grasp the big picture, most devs end up working on one area of the code, trying to jump in to a code base (especially a open source code base which usually lacks a decent review process and poor architecture) can be quite daunting. Like Rez said, start with something really small, and even better something with the design of the game laid out for you already, add your own twist to the game and polish it up really nicely.
      PC - Custom Built
      CPU: 3rd Gen. Intel i7 3770 3.4Ghz
      GPU: ATI Radeon HD 7959 3GB
      RAM: 16GB

      Laptop - Alienware M17x
      CPU: 3rd Gen. Intel i7 - Ivy Bridge
      GPU: NVIDIA GeForce GTX 660M - 2GB GDDR5
      RAM: 8GB Dual Channel DDR3 @ 1600mhz

      The post was edited 2 times, last by mholley519 ().

    • I see! Well, i think i am on the right path then! Just so we are touching this subject, how hard is it to get in the industry being a completely self-taught programmer? I actually study pure mathematics, but i would like to know if there would be a possibility of entering the programming industry without a cs course. I see that this is becoming more and more common.
    • I won't lie, getting into the game industry is hard, but so long as you work hard and take the right steps (and unfortunately live in the right location or are willing to move) you can get a job in the indsutry, some things I would say.

      - Self taught programmers are all through the industry, I learned programming starting with a high school C++ course, than online tutorials and books, than eventually applied that to games with a college course specifically for making games. You do not need a CS course and honestly, from the amount of people I know who have taken a CS course, I don't see them as any better off than myself when it comes to any specific knowledge. I may be wrong but I think Rez is in the same boat as far as education goes. At my work we have people who are high school drop-outs, and people who have university degrees and specialities in; Physics, AI, Graphics.

      - Having made games is much more showing of your talent than whether you can answer that extremely hard calc. equation on your entry test. There are a lot of programmers out there, but not all of them have the ability to make games, it requires quite a different skill set that doesn't always apply to other programming industries, showing that you have made games before (that are polished up nicely) shows that your not just a programmer, but that you are a game programmer. Make a nice portfolio with as many games as possible and is easy to navigate, once you make some games professionally you will add those games to it as well. Content is truly king in this case (but quality), my website is down for maintenance however take a look at Rez's , it's a very simple website, has all of his projects easily discoverable right at the main page, and talks about each game, what he learned, and especially he offers links to download what he can. Just make sure all of your links work :D.

      - Targeting recruiters is a really good way to get a job (this is what I did), look for jobs on their website, but also connect with them on linked in. You can usually do this by simply searching the company name on linked in, and most recruiters are publicly accessible, and will accept your link request. This gives you a direct way to say "Hello, this is who I am, this is what I do, and this is why I'd like to work at <their company>", once they receive your resume and portfolio through their web application interface they will be able to put 2 and 2 together to realize that you have made contact with them on linked in, and are no longer just a resume to them.

      - Living in a popular dev area is important however it's not impossible to get a game dev job elsewhere. There are guys on this forum who have had more trouble however because of their location though, so if you live somewhere remote you may need to consider moving to the job. Some examples I know of good areas are; San Fransico (Bay Area?) seems to have a ton of studios (including the main EA studio?), Toronto is really booming now, with companies like EA and Ubisoft opening up shop but also mobile companies like Gameloft (where I work), Uken, Zynga, Vancouver and Montreal are also really big however I don't know a lot aside from EA sports being in vancouver and EA mobile being in Quebec.

      Hope that helps.
      PC - Custom Built
      CPU: 3rd Gen. Intel i7 3770 3.4Ghz
      GPU: ATI Radeon HD 7959 3GB
      RAM: 16GB

      Laptop - Alienware M17x
      CPU: 3rd Gen. Intel i7 - Ivy Bridge
      GPU: NVIDIA GeForce GTX 660M - 2GB GDDR5
      RAM: 8GB Dual Channel DDR3 @ 1600mhz
    • Originally posted by mholley519
      I may be wrong but I think Rez is in the same boat as far as education goes. At my work we have people who are high school drop-outs, and people who have university degrees and specialities in; Physics, AI, Graphics.

      Yup. I left high school early and got my GED. I have an AA degree in electronics & computer technology, which has nothing to do with programming. I learned programming from a handful of books and just jumped in. My real problem was that I didn't have a rounded knowledge of core CS concepts, like data structures and algorithms. I forced myself to learn a bunch of that stuff by re-implementing the core of the STL. That helped quite a bit. Most people I meet are surprised I don't have a CS degree.


      however take a look at Rez's , it's a very simple website, has all of his projects easily discoverable right at the main page, and talks about each game, what he learned, and especially he offers links to download what he can. Just make sure all of your links work :D.

      I agree that the minimalist approach is best. Amusingly, mine is very much not up to date. Of course, I've been at EA for over four years so there hasn't been much need.


      San Fransico (Bay Area?) seems to have a ton of studios (including the main EA studio?), Toronto is really booming now, with companies like EA and Ubisoft opening up shop but also mobile companies like Gameloft (where I work), Uken, Zynga, Vancouver and Montreal are also really big however I don't know a lot aside from EA sports being in vancouver and EA mobile being in Quebec.

      In the US, the main areas for development are the San Francisco Bay Area (yes, EA's HQ is here), LA, Austin, Seattle (though not as much lately), and a few scattered places on the east coast. That's about it. If you have no experience, you absolutely have to move to where the jobs are. Why would I hire you if I could just hire one of the other several hundred people with similar resumes who are local?

      Like any creative person, you live & die by your portfolio. Prove to me that you can make games and I'm more likely to give you a chance. The first game job you get will be the hardest job you ever find. Once you're in the games industry and have proven yourself, it gets much easier.

      -Rez