Something went wrong. Try again later

fobwashed

This user has not updated recently.

2818 388 76 606
Forum Posts Wiki Points Following Followers

So you want to learn to program?

What the hell is this huge block of text about?

On rare occasion, I'm asked about programming and how I learned what I've learned and if I have any suggestions or whatnot so for anyone interested, here it is. This is pretty much, the process I went through, and my recommendations for anyone thinking about doing the same. I am by no means a reliable source of information, and I take no responsibility for anything resulting from this. Unless it's awesomeness, in which case, I'll take as much credit as you'll give me.

If you have absolutely no programming experience

then you're just like me when I started. I came into this knowing pretty much zilch about programming and/or any languages. The closest thing I'd ever done to coding was about 15+ years back when I "programmed" snake into my TI-86 graphic calculator by copying lines of code into it from a printed out sheet. I think that anyone can become proficient at anything as long as they invest the time. Some things will be harder for some than others but with the right commitment, short of an actual disability or physical inability, I feel anyone can do anything. Maybe not exceptionally well, but at least competently. Under this line of thinking, I took it upon myself to create a game and if you want to, you can as well. I think.

Where to begin?

There are probably as many ways to learn as there are reasons for wanting to. Also, depending on your current situation, (work, life, whatevs) your options will vary drastically. For myself, I have a full time job and can't afford to just quit and go take classes at some school. I think schools that are actually focused on teaching the art of making games are awesome, and I'd love to go, but I realistically can't. The route I took is self teaching. Once I decided that I was going to go with using the XNA framework and learn C#, it was pretty easy to find tons of tutorials and sources for learning on the internet. If you're a complete noob like myself, I'd recommend downloading Microsoft Visual Studio Express (it's free and awesome) and then running through a few basic tutorials on youtube. You'll literally start with extremely rudimentary things like getting a program to start, then saying "Hello World".

Syntax is King

Once you've tried a few tutorials and building the most basic of programs, I highly suggest actually learning the language. If you've ever tried learning a foreign language in school, learning C# is sort of like that. . . except about a hundred times easier. I know how to write, speak and understand 3 languages. 2 very well, and a third on about the level of an 8 year old -_-;; I'd say the hardest part of learning a new language is memorizing the alphabet (if it's not the same as English), followed closely by learning the grammar and syntax of the language. Finally after tackling those, it's expanding your vocabulary so that you can actually use the previous two things to USE the language. That's oversimplifying, but you get the idea. Learning C# was a piece of cake. For starters, you already know the letters and alphabet. The hardest part then becomes learning the rules of the language and how to construct sentences that make sense. Now, initially, this is pretty daunting. Everything seems like goddamn gibberish and nonsensical but as you begin to learn what's going on, you'll begin to realize it's all very clear and makes perfect sense. Everything has it's place and everything always does exactly what it's supposed to do. The entire thing breaks down into simple math, and logic. Hell, you look at any C# book, and you'll know the core of the way the language works within the first two to three chapters. After that, it's all about expanding your vocabulary.

Suggested Reading

Aside from the amazing amount of free information available on the internet, I suggest the following books. For starters, Microsoft Visual C# 2010 Step by Step by John Sharp. This book was written for people who have zero programming experience and are learning for the first time. If you can get a good grasp on the first few chapters here, you're more than half way there. A very nice side book to have that is specifically for C# is the C# Pocket Reference by Joseph Albahari. It's a pocket bible sized little book that gives the most concise and to the point description and examples of everything C#. It's basically cliff notes and I reference it a lot when I just need to remember one little thing and don't want to go searching through a huge book to find it. Also, I can carry it around and browse through it frequently so it's mighty convenient. Once you've gotten your feet wet in C# and want to start diving into making games on XNA, I suggest XNA 4.0 from O'Reilly by Aaron Reed and XNA Game Studio 4.0 Programming by Tom Miller. Both these books will sort of assume you're new to programming but won't cover C# as in depth as the previous books. They will however, get you up to speed on XNA which is pretty much, more vocabulary/words for you to use to help you build your game.

What I mean by Vocabulary

Once you know the syntax, you have the core of it. You can build out anything you want from what you have but it'll be damn difficult. That third language I know, I can survive with it, but I'd have a hard time telling a story. I'm limited by my vocabulary -_-;; It's sort of the same way with C#. The words you learn in C#, are all things built using the same tools you already have, and have code behind them that you can look at, but really, it's just giving you the result without you having to put all that work into it. Say for example, I were to tell you about this thing, that is alive, and it has a warm body temperature, and it breathes air, and has live babies. . . or I could just say mammal. It's the same thing with C#, instead of writing out something like "(int i = 0; i < list.Length; i++)", you can just write "foreach()". That's sort of a bad example but there are things that would take you lines of lines of code, that can be condensed into a single word. In fact, once you get further into it, you'll be making words of your own called objects. If there is a set of lines of code, that you'll be using more than once, you can group those lines yourself into your own word, that you can call at any time whenever you need it. All XNA is, is a book filled with words you can use that have been made to make life easier for you. That's pretty much all any framework is. C# has an extensive amount of vocabulary and even now, a year+ in, I'm still learning new words that are built into C# itself that make my life easier. A lot of times, when I learn something new, I realize I could have done something better so I'll go back and fix it and use it in the future. You never stop expanding your vocabulary either because you're learning existing words, or creating your own. It's when you start creating your own that things get really exciting =)

Making Games

With all that, you're pretty much ready to make whatever it is you want. I've already blogged about how you can do anything in programming and I still think it's true. At this point, or before you reached this point, it'd be a good idea to peruse the XNA forums and also download and dissect the starter kits they have available. One of the biggest things that helped me throughout learning the language was actually using it as I was learning. If you go back to my earliest videos, you can see that I was coding as soon as I could. Start creating as soon as you can, and just keep at it while learning at the same time. You forget words you don't use -_-;; In addition, I recommend going through the forums at the XNA site for questions other people have. The community there is great and a lot of times, reading other people's questions, and the answers they receive will help you out in the longrun. Sometimes, it may not seem even remotely related to what you're currently doing, but the mechanics of it are all the same so you may figure out something else that seems to have nothing to do with the question being asked. . . that sentence doesn't make sense. Anyway, that's it.

27 Comments

27 Comments

Avatar image for fobwashed
fobwashed

2818

Forum Posts

388

Wiki Points

0

Followers

Reviews: 15

User Lists: 16

Edited By fobwashed

What the hell is this huge block of text about?

On rare occasion, I'm asked about programming and how I learned what I've learned and if I have any suggestions or whatnot so for anyone interested, here it is. This is pretty much, the process I went through, and my recommendations for anyone thinking about doing the same. I am by no means a reliable source of information, and I take no responsibility for anything resulting from this. Unless it's awesomeness, in which case, I'll take as much credit as you'll give me.

If you have absolutely no programming experience

then you're just like me when I started. I came into this knowing pretty much zilch about programming and/or any languages. The closest thing I'd ever done to coding was about 15+ years back when I "programmed" snake into my TI-86 graphic calculator by copying lines of code into it from a printed out sheet. I think that anyone can become proficient at anything as long as they invest the time. Some things will be harder for some than others but with the right commitment, short of an actual disability or physical inability, I feel anyone can do anything. Maybe not exceptionally well, but at least competently. Under this line of thinking, I took it upon myself to create a game and if you want to, you can as well. I think.

Where to begin?

There are probably as many ways to learn as there are reasons for wanting to. Also, depending on your current situation, (work, life, whatevs) your options will vary drastically. For myself, I have a full time job and can't afford to just quit and go take classes at some school. I think schools that are actually focused on teaching the art of making games are awesome, and I'd love to go, but I realistically can't. The route I took is self teaching. Once I decided that I was going to go with using the XNA framework and learn C#, it was pretty easy to find tons of tutorials and sources for learning on the internet. If you're a complete noob like myself, I'd recommend downloading Microsoft Visual Studio Express (it's free and awesome) and then running through a few basic tutorials on youtube. You'll literally start with extremely rudimentary things like getting a program to start, then saying "Hello World".

Syntax is King

Once you've tried a few tutorials and building the most basic of programs, I highly suggest actually learning the language. If you've ever tried learning a foreign language in school, learning C# is sort of like that. . . except about a hundred times easier. I know how to write, speak and understand 3 languages. 2 very well, and a third on about the level of an 8 year old -_-;; I'd say the hardest part of learning a new language is memorizing the alphabet (if it's not the same as English), followed closely by learning the grammar and syntax of the language. Finally after tackling those, it's expanding your vocabulary so that you can actually use the previous two things to USE the language. That's oversimplifying, but you get the idea. Learning C# was a piece of cake. For starters, you already know the letters and alphabet. The hardest part then becomes learning the rules of the language and how to construct sentences that make sense. Now, initially, this is pretty daunting. Everything seems like goddamn gibberish and nonsensical but as you begin to learn what's going on, you'll begin to realize it's all very clear and makes perfect sense. Everything has it's place and everything always does exactly what it's supposed to do. The entire thing breaks down into simple math, and logic. Hell, you look at any C# book, and you'll know the core of the way the language works within the first two to three chapters. After that, it's all about expanding your vocabulary.

Suggested Reading

Aside from the amazing amount of free information available on the internet, I suggest the following books. For starters, Microsoft Visual C# 2010 Step by Step by John Sharp. This book was written for people who have zero programming experience and are learning for the first time. If you can get a good grasp on the first few chapters here, you're more than half way there. A very nice side book to have that is specifically for C# is the C# Pocket Reference by Joseph Albahari. It's a pocket bible sized little book that gives the most concise and to the point description and examples of everything C#. It's basically cliff notes and I reference it a lot when I just need to remember one little thing and don't want to go searching through a huge book to find it. Also, I can carry it around and browse through it frequently so it's mighty convenient. Once you've gotten your feet wet in C# and want to start diving into making games on XNA, I suggest XNA 4.0 from O'Reilly by Aaron Reed and XNA Game Studio 4.0 Programming by Tom Miller. Both these books will sort of assume you're new to programming but won't cover C# as in depth as the previous books. They will however, get you up to speed on XNA which is pretty much, more vocabulary/words for you to use to help you build your game.

What I mean by Vocabulary

Once you know the syntax, you have the core of it. You can build out anything you want from what you have but it'll be damn difficult. That third language I know, I can survive with it, but I'd have a hard time telling a story. I'm limited by my vocabulary -_-;; It's sort of the same way with C#. The words you learn in C#, are all things built using the same tools you already have, and have code behind them that you can look at, but really, it's just giving you the result without you having to put all that work into it. Say for example, I were to tell you about this thing, that is alive, and it has a warm body temperature, and it breathes air, and has live babies. . . or I could just say mammal. It's the same thing with C#, instead of writing out something like "(int i = 0; i < list.Length; i++)", you can just write "foreach()". That's sort of a bad example but there are things that would take you lines of lines of code, that can be condensed into a single word. In fact, once you get further into it, you'll be making words of your own called objects. If there is a set of lines of code, that you'll be using more than once, you can group those lines yourself into your own word, that you can call at any time whenever you need it. All XNA is, is a book filled with words you can use that have been made to make life easier for you. That's pretty much all any framework is. C# has an extensive amount of vocabulary and even now, a year+ in, I'm still learning new words that are built into C# itself that make my life easier. A lot of times, when I learn something new, I realize I could have done something better so I'll go back and fix it and use it in the future. You never stop expanding your vocabulary either because you're learning existing words, or creating your own. It's when you start creating your own that things get really exciting =)

Making Games

With all that, you're pretty much ready to make whatever it is you want. I've already blogged about how you can do anything in programming and I still think it's true. At this point, or before you reached this point, it'd be a good idea to peruse the XNA forums and also download and dissect the starter kits they have available. One of the biggest things that helped me throughout learning the language was actually using it as I was learning. If you go back to my earliest videos, you can see that I was coding as soon as I could. Start creating as soon as you can, and just keep at it while learning at the same time. You forget words you don't use -_-;; In addition, I recommend going through the forums at the XNA site for questions other people have. The community there is great and a lot of times, reading other people's questions, and the answers they receive will help you out in the longrun. Sometimes, it may not seem even remotely related to what you're currently doing, but the mechanics of it are all the same so you may figure out something else that seems to have nothing to do with the question being asked. . . that sentence doesn't make sense. Anyway, that's it.

Avatar image for giantstalker
Giantstalker

2401

Forum Posts

5787

Wiki Points

0

Followers

Reviews: 15

User Lists: 2

Edited By Giantstalker

Programmers have one of the hardest jobs on the planet; I took an introductory course in programming and failed every assignment from start to finish. Got a ton of respect for anyone who can code, it's faaar trickier than anything I could ever do.

... and I look for IEDs for a living

Avatar image for mageman
Mageman

387

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

Edited By Mageman

I took some programming classes in HS (C, PHP) it was really not that hard. And the people I know who study CS generally say that programming is the easiest part about it. It's just logical problem solving. Learn the syntax and practice, that is about it, no brain straining abstractions and leet mathematical skill needed. There was a thread made by some user on a similar subject not so long ago.

edit: Also there was this dude at my HS who had to repeat 1 class and had poor grades all around but was pretty much a ''master'' at programming, he programmed his own drivers and shit like that and obviously only got As in programming classes.

Avatar image for collegeguymike
CollegeGuyMike

402

Forum Posts

12

Wiki Points

0

Followers

Reviews: 0

User Lists: -1

Edited By CollegeGuyMike

I found this really informative, and I think I'll look up some of these books you've mentioned. I want to get into programming, and making games and everything. I've actually just started college and am working towards that, but currently I don't really have a jumping off point to teach myself. This should be really helpful for me!

-edit-: I think I really enjoy programming. Making that basic Calculator work from some of the Visual Express tutorials made me all giddy.

Avatar image for example1013
Example1013

4854

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

Edited By Example1013

I've found programming to be fairly easy, but have no desire to invest the time it'd take to learn how to program.

Avatar image for still_i_cry
Still_I_Cry

2521

Forum Posts

109

Wiki Points

0

Followers

Reviews: 1

User Lists: 1

Edited By Still_I_Cry

Seems like the information is useful for those who genuinely want to program.

Personally, I took a programming logic class and found it wasn't my thing.

I was good at it but I don't find it enjoyable.

Avatar image for redbliss
redbliss

669

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

Edited By redbliss

So what should I download if I want to begin? Should I get Visual studio 2008 or 2010, and should I get Visual Studio C++ 2010 Express or something else?

Avatar image for butano
butano

2001

Forum Posts

60

Wiki Points

0

Followers

Reviews: 1

User Lists: 7

Edited By butano

@redbliss: If you're a student, Microsoft has a program called Dreamspark that basically gives you their entire Visual Studios setup for free. Personally, I would go with 2010, as newer versions mean newer updates in the header libraries.

Avatar image for csl316
csl316

17005

Forum Posts

765

Wiki Points

0

Followers

Reviews: 0

User Lists: 10

Edited By csl316

Cool stuff.  Despite not knowing a thing  about programming, I'm always curious how people pick up different hobbies or skills.  Did a lot of self-teaching on the guitar, mostly before there were many Internet resources available.  Now there's so much online, I'm wondering how it'll affect the next generations of programmers/musicians/whatevers.

Avatar image for hungrymatango
HungryMatango

38

Forum Posts

1183

Wiki Points

0

Followers

Reviews: 0

User Lists: 16

Edited By HungryMatango

Inspirational post! Thanks for the helpful tips. It seems like most people I know programming have been doing it since age seven or eight, and they often have a hard time describing how to get into it. I appreciate your suggestions for those of us who didn't get started so early.

Avatar image for trylks
trylks

995

Forum Posts

144

Wiki Points

0

Followers

Reviews: 0

User Lists: 8

Edited By trylks

I'm a software engineer, a master in computational logic and intelligent computation (AKA artificial intelligence) and I'm studying a PhD on artificial intelligence.

Any suggestion about how could I enter the games industry? If it was to work on IA that would be great, but even if that's not the case I think there are some people making insane salaries in it, am I right? that's my main motivation to be interested on that industry, seriously, in the current situation a well paid job would be the best for me, research can wait.

Avatar image for mr_skeleton
Mr_Skeleton

5195

Forum Posts

7918

Wiki Points

0

Followers

Reviews: 0

User Lists: 15

Edited By Mr_Skeleton

Here is a tip from me, always document your functions.

Avatar image for fobwashed
fobwashed

2818

Forum Posts

388

Wiki Points

0

Followers

Reviews: 15

User Lists: 16

Edited By fobwashed

@Trylks: I'd suggest you check out www.gamasutra.com for job listings and send in applications. That's the best I can tell you as I'm actually doing this as a hobby and have no idea how to break into the actual industry as a paid employee -_-;;

@Mr_Skeleton: I agree with you there 100%. Most of my functions are named in a way where it's obvious what they do, but in any case where it uses anything that is even remotely misinterpret-able, I write out exactly what they're there for. My current project alone has generated upwards 200+ structs, classes and enumerations. If I were actually working with other people on this, clearly describing what everything is would be of the upmost importance so that anyone else that looks at my code would be able to easily figure out what's going on. Even working alone, I sometimes run into code I've written months to a year back and luckily I started with the habit of clearly labeling because some of my old stuff is pretty shoddy. I do fix and clean up as much of my code as I can whenever I learn something new but it's getting to a point where I can't go through everything all at once anymore. Lately, if I learn something, I'll just improve or fix things as I come across old code while I'm updating something else.

Avatar image for nick
Nick

1153

Forum Posts

13

Wiki Points

0

Followers

Reviews: 0

User Lists: 3

Edited By Nick

@redbliss: Forget that stuff, install Linux, write your code in a notepad and compile from the terminal. Start with c++, figure out how to write a "hello world" program, write a program with some loops, then write a recursive program, make sure you understand what functions and classes are, figure out how pointers work, and if you allocate any memory don't forget to free it so you don't have any memory leaks.

Avatar image for cursormonkey
cursormonkey

29

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

Edited By cursormonkey

I learned some coding in C++ college about 12 and I'd like to get back to it at some point when I can spare the time.

Interestingly, although I've not done a whole lot with it, I find I can read through a programs code and follow it relatively well.

Avatar image for coonce
coonce

1610

Forum Posts

5047

Wiki Points

104811

Followers

Reviews: 8

User Lists: 12

Edited By coonce

This is awesome. More please.

Avatar image for jammyman
JammyMan

22

Forum Posts

2

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

Edited By JammyMan

@redbliss, @nick, I'm not sure its all as simple as that. Coding from the ground up with makefiles and vim can be a great way to do it if you are experienced in that setting, but if your not so comfortable then its a pain in the ass to get everything just right. Visual studio is a great tool in windows because it takes a lot of the build structure away from you and does it all, but it abstracts away a bunch of stuff that should really be in the foreground too! It can be incredibly difficult to link against static or built libraries if you don't know where its looking! Or to find that one optimiser setting that's throwing your code out of whack. This is a great little article that @fobwashed has written but I think I would suggest that people who don't have experience with code start somewhere a bit simpler than C#/XNA or C++. There are much easier entry points to see if you enjoy this sort of thing, which are much less likely to scare you off! Off the top of my head if you want to get into little games then http://love2d.org/ is a fantastic little 2d lua programming engine, which will very quickly allow you to get things happening on screen. Using the tutorials and examples there, you could quite quickly build up the basic conceptual knowledge you need to move on to more complex compiled languages. I'm a researcher at university in the UK and we start the undergrads off in Matlab (a very simple scripting language) before moving on to C, and it seems to work quite well (of course this is no excuse to not learn about the more complex underlying structures at some point). Anyway, apologies for the rather long post.

Avatar image for fobwashed
fobwashed

2818

Forum Posts

388

Wiki Points

0

Followers

Reviews: 15

User Lists: 16

Edited By fobwashed

@JammyMan: I agree with the bulk of what you're saying. I actually took what @Nick said as a joke reply. I mean, he's talking about memory allocation and disposing of resources which isn't something you'd really be worried about if you were writing something on notebook.

The reason I started with C# instead of something simpler like scripting on flash or a program made to assist in the making of games is that I wanted to jump right into the thick of it and get to really making games and learning how to program. Emphasis on learning how to program rather than learning something that can only be used within an already existing program and being limited to what that program allows. Which is the wall I hit during Warioware DIY =P I can't really see there being too much a simpler way to do it than C# without sort of missing out on the meat and potatoes since it seems pretty easy but my experience is limited to just C# so you'd prolly have a better idea than I do on the subject. No worries about long posts as long as they've got content and yours fits that bill exceptionally =D

Avatar image for cnlmullen
cnlmullen

910

Forum Posts

3

Wiki Points

0

Followers

Reviews: 0

User Lists: 1

Edited By cnlmullen

Nice job. I'm sure there's someone out there who will find this guide really useful.

Avatar image for funexplosions
FunExplosions

5534

Forum Posts

-1

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

Edited By FunExplosions
@dudeglove said:

Good points. I'd love to add that it's not enough to simply study a language, you have to do something in the language in order to become truly fluent - which is what you're doing. Sitting around reading tomes about code and using said code to come up with some sort of snake clone in about half an hour are two different things.

Whatchu know bout code, Dudeglove?
Avatar image for evilsmevil
Evilsmevil

7

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

Edited By Evilsmevil

I work in the industry and I agree with almost everything you've said. The only things i would add are. 1. Don't be afraid to copy and paste other people's stuff, it's one of the fastest and best ways of learning new tricks (and remembering old ones!). 2. Once you have the basics down don't jump into coding that open world online rpg that you've always dreamed of. You will never get anywhere close to getting anything you can show anyone. Try and think of something really simple that you think might be fun to play or get working, then make it even simpler. Then make it even simpler again. You will find as you go that even that super simple concept has a bunch of subtleties that are harder to get working than you thought! The first game I made was a game where you had to jump fences that came at you faster and faster. Took about 10 times longer than I thought it would... Also look into game engines that already exist such as unity and udk. They often have a much lower barrier to entry than things like xna and they let you get to the interesting stuff faster (personally I prefer unity as it allows you to learn c# at the same time and had a very friendly and helpful community) Also, try and find a friend or two to make a game with, it's much more fun working as a team and you can keep each other motivated when the going gets tough!

Avatar image for fobwashed
fobwashed

2818

Forum Posts

388

Wiki Points

0

Followers

Reviews: 15

User Lists: 16

Edited By fobwashed

@Evilsmevil: First off, I'm honored that your first post on GB is a reply to one of mine =P

You make some seriously good points that I would have been able to have used when I started. Looking at other people's code (in my case tutorials) really helped me understand a lot about how things work. More importantly, it often revealed methods of doing things I hadn't previously thought about. Though, apart from the bare bones starter kit type stuff, I don't really have access to the types of code I'd want to look at. I could prolly find it if I tried, but I've got so much to do already that dissecting other people's work is sorta low on my list of things to do.

A part of me does wish that I had started by making something really simple. Just to have a finished thing. While, another part of me is happy that I didn't go that route and immediately began making what I'm working on now. (Though it's definitely not an MMO or something of that kind of magnitude) In general, I think starting with small projects is very sound advice. The only way I could suggest someone do what I did, is if they're certain that they'll stick it out to the end. . . And that's not something you can really be sure of when you start so. . . I dunno. Yea, start small because Evil is 100% correct in saying that things always end up taking more time and effort than you originally anticipated.

As for that last bit about working with a friend, yes. That'd be the ideal situation and quite often I do wish that I had someone I was actually working with. I have friends and people I bounce my ideas off but pretty much this thing is a solo project. I'm extra proud of what I've accomplished, but at the same time, having anyone else working with me would have helped things move along much more quickly. The flipside of working with others, especially on smaller indie type stuff though, is that there's always the chance that they may drop out. If you're working on all sections of your game yourself, it wouldn't be too big a deal, but I've heard of a few cases where a team either lost their programmer, or artist and bam. That's the end of that until the position can be filled. I've had people offer to help on and off throughout the period I've been doing this and in every case, once the idea of "I'm making a game!" loses it's shine and they realize it's actually a whole lotta work. . . that's the end of that. When anyone offers a hand with this or that, I'll always take it, but I'll never set myself up to depend on them for anything critical. Which is also why I don't give my code to anyone, or let anyone work on my code. It's not worth the risk and I have enough trouble cleaning up my own mess let alone someone else's. Though, it might be different if the person was actually really experienced or something in which case, I'd love to learn.

One final thing I'd like to add is once again, how paramount it is to be organized. You need to label things clearly, and have a system. This goes for anything that ends up being a larger project built up from smaller pieces but it's especially true in programming. I've been pretty meticulous and anal about how clean and organized everything is and it's helped me from going insane.

Avatar image for evilsmevil
Evilsmevil

7

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

Edited By Evilsmevil

@Fobwashed: Haha well you had something interesting to say so I thought I would chip in!

I think that jumping right into the deep end and succeeding like you seem to be is an incredible achievement! Most people would probably get overwhelmed and it might put them off so I would still suggest starting small and working your way up (you will always learn something that will make your next project go more smoothly) but what you're doing seems to be working for you and I wish you all the best!

You're right about people joining and then leaving projects after a short amount of time. Especially in the indie scene it's common for people to bail when the going gets tough (to be fair most of the time people aren't getting paid so I don't blame them) but even if they only contribute a small amount it's still something you can use in some way or at the very least learn something about. I absolutely agree with your point about being organised, people think they will remember everything that they wrote without documentation and clear commenting but coming back to a piece of undocumented code after only a couple of days will still leave me scratching my head if it's not well structured/meticulously commented. Also a great tip I learned about commenting - Your comment should say why it's doing something not what it's doing. it's usually pretty self evident what a particular call is doing but when you come back to it in a month you might not remember why you did something that way (I often put a reason I took a particular approach, esp if it's to work around a bug or quirk in the design) - I also keep a google document with a list of features and tasks (both things I've yet to do and things I've recently completed) that helps me remember what the hell I was doing if I don't get any work done on a project for a few weeks.

Also as for the copy and paste stuff. If you find a snippet that works but you don't understand it, don't worry about it. you can figure out whats going on later (or ask someone else to explain it to you on the xna message boards or something). Learning to pick suitable code to re-use is an incredibly good skill as it teaches how to find the key functional elements in a program and extract them (this can be alot harder than it sounds with large code-bases)

Avatar image for fobwashed
fobwashed

2818

Forum Posts

388

Wiki Points

0

Followers

Reviews: 15

User Lists: 16

Edited By fobwashed

@Evilsmevil said:

@Fobwashed: Also a great tip I learned about commenting - Your comment should say why it's doing something not what it's doing. it's usually pretty self evident what a particular call is doing but when you come back to it in a month you might not remember why you did something that way (I often put a reason I took a particular approach, esp if it's to work around a bug or quirk in the design) - I also keep a google document with a list of features and tasks (both things I've yet to do and things I've recently completed) that helps me remember what the hell I was doing if I don't get any work done on a project for a few weeks.

That is an excellent tip! Without thinking about it, the majority of my comments are written starting with "used to/for" with just the briefest of descriptions. I can think of numerous situations where if I had just added another sentence explaining (to myself) the purpose of the code, it would have saved me a good amount of time =P

Currently, I'm not really documenting what I'm working on aside from my blog posts and videos. I do frequently create backups of my entire game whenever I decide to make large changes and label them appropriately with a date, and the large thing I'm about to change. I also keep my data on two separate computers, on an external hard drive and in the cloud online -_-;; I've put over a year of work into this and hell if I'm going to lose it due to some kind of freak, two location fire or multiple hard drive crashes! It'd prolly be a really good idea to keep an actual document to really know exactly what's going on like you do.

Also, thanks for the kind words but I don't really see myself as having achieved anything yet and the only way that jumping into the deep end won't have been a terrible idea is once I actually finish =P While I'll always have the experience and have learned plenty from this, unless I have a finished game, I'll consider this entire thing an abject failure -_-;;

Can you speak at all on what you do or what you've worked on? You've definitely piqued my curiosity and for as long as I've been doing this, I have yet to speak with someone who actually programs aside from random questions and posts on various forums. Designers on the other hand. Well, like the news article on GB a lil while back "EVERYONE is a designer" =P

Avatar image for mad_jihad
MAD_JIHAD

201

Forum Posts

272

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

Edited By MAD_JIHAD

LOL Visual Studio? Ohhhh my...

Avatar image for jonano
jonano

417

Forum Posts

23

Wiki Points

0

Followers

Reviews: 0

User Lists: 1

Edited By jonano

programming is something I'd love to get into .I'm really fasinated by how things work and how do they do that? I think i'll give it ago. since you started knowing nothing about programming and now are competent at it maybe I can do it too.