I know asking how to improve yourself as a programmer has been asked before, but a lot of the answers I see are read books or join open source projects. While I'm sure these are great methods, it seems that the books I read give me a knowledge of the language itself, and not how to apply that knowledge. I figure that must be why it's important to look at open source projects, to see code structure and common problem solving methods, but all of the open source projects I've found are too advanced for me, and I can't tell what's going on.
Does anyone know any good resources for me to fix this problem? Maybe an open source project more geared towards a beginner-intermediate skill level? Maybe there are books I could read to help solve ths problem?
Improving as a Programmer: Beginner to Intermediate Jump
Moderator: Coders of Rage
-
- Chaos Rift Newbie
- Posts: 1
- Joined: Mon Jan 20, 2014 9:43 pm
- ph0sph0ruz
- Chaos Rift Newbie
- Posts: 32
- Joined: Sat Mar 22, 2014 3:52 am
- Favorite Gaming Platforms: PC,Xbox,Dreamcast
- Programming Language of Choice: C,C++
- Contact:
Re: Improving as a Programmer: Beginner to Intermediate Jump
If I'm learning a new language or architecture I typically look for tutorials (I guess this is similar to books). These explain portions of code but you can ask the author questions if you don't understand it. Also http://www.codeproject.com/ has a ton of articles with source code. Another way to learn is to get source code for a particular technique and step through it trying to understand exactly what is going on during the process.
There's no silver bullet for learning, some folks can learn through books but others need instructor-led classes. I've always been a book learner myself but that doesn't always give you everything because there can be nuances that the book doesn't show and sometimes just talking to other programmers can help you understand concepts better. Youtube is a good resource for some of this but posing questions to forums will also help. There are many folks out there willing to help.
There's no silver bullet for learning, some folks can learn through books but others need instructor-led classes. I've always been a book learner myself but that doesn't always give you everything because there can be nuances that the book doesn't show and sometimes just talking to other programmers can help you understand concepts better. Youtube is a good resource for some of this but posing questions to forums will also help. There are many folks out there willing to help.
- dandymcgee
- ES Beta Backer
- Posts: 4709
- Joined: Tue Apr 29, 2008 3:24 pm
- Current Project: https://github.com/dbechrd/RicoTech
- Favorite Gaming Platforms: NES, Sega Genesis, PS2, PC
- Programming Language of Choice: C
- Location: San Francisco
- Contact:
Re: Improving as a Programmer: Beginner to Intermediate Jump
You can't just read a book and expect to understand programming. You need to find a book (or article, or video tutorial, etc.) that builds a small project step-by-step and you need to open your IDE and build that same project step-by-step. It doesn't matter if you copy/paste code, but you need to take a few minutes to FULLY comprehend what the code does and why it's written the way it is before you do.
Even more importantly, you need to tweak the code, play with it, improve it, learn what happens if you change "velocity = 0.5f" to "velocity = 1.5f" or if you change "if (collision)" to "if (!collision)". Once you understand it, define a new goal (e.g. if you're modifying a pong project, add bumpers to the top and bottom of the screen for a 4-player experience, if you're modifying guess-the-number try turning it into hangman) and try to reach that goal.
Even more importantly, you need to tweak the code, play with it, improve it, learn what happens if you change "velocity = 0.5f" to "velocity = 1.5f" or if you change "if (collision)" to "if (!collision)". Once you understand it, define a new goal (e.g. if you're modifying a pong project, add bumpers to the top and bottom of the screen for a 4-player experience, if you're modifying guess-the-number try turning it into hangman) and try to reach that goal.
Falco Girgis wrote:It is imperative that I can broadcast my narcissistic commit strings to the Twitter! Tweet Tweet, bitches!
-
- ES Beta Backer
- Posts: 23
- Joined: Mon Dec 23, 2013 7:56 pm
- Current Project: Canadian Simulator 2017
- Favorite Gaming Platforms: GBA, DC, iOS, SNES, WS, 360, N64
- Programming Language of Choice: C++, Lua
- Location: Your VCR.
Re: Improving as a Programmer: Beginner to Intermediate Jump
A teacher once told me that the best way to learn or practice something is to do that something. So if you want to become a better programmer, you should program. Books teach you how to program and there are some programming books specific to game programming, which is a very good way to apply what you know about programming. Of course you're not going to be able to program something as vast and complicated like Minecraft or Final Fantasy. That's why you should start small with something like a Space Invaders clone. In my experience, clones of simple games are your friend when you start out game programming. Then you could maybe make a Super Mario clone, and then maybe a Tetris clone.
A problem with practicing program is that there is a good way to practice and a bad one. When I started out with C++, it seemed like all I needed was an API, classes, loops, if statements, and variables, but C++ has so much more to it than that. There's pointers and polymorphism. To some games, all you need is an API, classes, loops, if statements, and variables. You can program a Space Invaders many ways. Some will be more efficient and nice to your computer than others. This is why it's pretty important to make and study several flowcharts for your programs so you can find what is simplest and easiest to understand to you.
Luckily, you have an account on a programming forum. This is great because you have access to people who know way more about applicable programming than a textbook and you can ask them questions that may seem really dumb. This resource is the greatest.
A problem with practicing program is that there is a good way to practice and a bad one. When I started out with C++, it seemed like all I needed was an API, classes, loops, if statements, and variables, but C++ has so much more to it than that. There's pointers and polymorphism. To some games, all you need is an API, classes, loops, if statements, and variables. You can program a Space Invaders many ways. Some will be more efficient and nice to your computer than others. This is why it's pretty important to make and study several flowcharts for your programs so you can find what is simplest and easiest to understand to you.
Luckily, you have an account on a programming forum. This is great because you have access to people who know way more about applicable programming than a textbook and you can ask them questions that may seem really dumb. This resource is the greatest.
What do you call a cow with no legs?
Ground beef.
Ground beef.
- dandymcgee
- ES Beta Backer
- Posts: 4709
- Joined: Tue Apr 29, 2008 3:24 pm
- Current Project: https://github.com/dbechrd/RicoTech
- Favorite Gaming Platforms: NES, Sega Genesis, PS2, PC
- Programming Language of Choice: C
- Location: San Francisco
- Contact:
Re: Improving as a Programmer: Beginner to Intermediate Jump
Sound advice overall, but I LOL'd at this. I would argue that programming Super Mario Bros. would be much more difficult than a simplified Minecraft clone (especially if you're targeting the NES.)corey__cakes wrote: Of course you're not going to be able to program something as vast and complicated like Minecraft or Final Fantasy.
Falco Girgis wrote:It is imperative that I can broadcast my narcissistic commit strings to the Twitter! Tweet Tweet, bitches!