Something went wrong. Try again later
Giant Bomb is under new ownership. Log in now to accept new terms and conditions and transfer your account to the new owner!

soralapio

This user has not updated recently.

293 19 46 51
Forum Posts Wiki Points Following Followers

So you want to be a programmer? Well I can help with that.

I was listening to the Tested Oktoberkast again, and ran across Will and the others discussing programming, and how they'd tried it in college but ended up getting frustrated and quitting. They lamented the fact that you had to know so much math and other difficult stuff, and it bummed me out. Then it made me a bit angry. Not because they were wrong (they were), but because I remember thinking the same way three years ago, as I was applying to a university to study computer science. I thought to myself I could never really do it, because I've always sucked at math and you had to know a lot of math and other difficult shit, right? WRONG!

Three years later my indie games development team and I have released six games, five of which were coded in part or fully by me. I've coded up several tools to help me in my daily tasks, both on my desktop computer and mobile devices. I'm fluent in Javascript, Python, Java, C# and a bunch of other languages. Sounds impressive and difficult, right? Well it's not difficult! First off, let's bust some programming myths.

MYTH 1: You have to be REALLY good at math.

Bullshit. True, if you want to be the next John Carmack and code up 3D engines, you have to be fucking awesome at math. If not, it's really not that important. You have to understand the concepts, especially if you want to get into games development, but here's the fun thing: you don't have to do the actual math. That's what we have computers for! True, you have to understand what vectors and quaternions are, but you don't have to know those things NOW. You'll look them up when you need them, and surprisingly you'll be able to learn the concepts really quickly, because you have an immediate and fun application for those skills.

MYTH 2: Learning to program is really hard

Bullshit. Learning to program is easy as piss. The difficult part is learning to THINK like a programmer. This is called algorithmic thinking, and it's a fancy way of saying "you need to know how to break down abstract concepts into simple logical steps a computer can follow". And to be perfectly honest, this is not something everyone can do. I've seen people who just can't bend their brains to this kind of thinking, and it will always trip them up. But if you can do it -- and chances are you can -- the next step is surprisingly simple.

I know programming seems really hard on the surface. Code isn't always easily readable, there's lots of strange terms and words everywhere and the syntax seems crazy. But it's not as bad as all that. Most modern programming languages follow the same general rules, so once you learn one object-oriented language, you can learn the syntax for others pretty quickly. And remembering the thousands of different commands? Don't worry about it: you're not meant to know it all by heart. That's why we have big libraries full of API references. The idea is that you look up precisely how what you need works, and then after a couple of uses, you'll remember it. It's like learning any other language: nobody knows all the words at first without using a dictionary!

MYTH 3: Even if I learn to program, I can't make games

Bullshit. Making games has NEVER been as easy as it is now. Freely distributed tools like Unity and XNA take the tough part -- the engine -- out of your hands and leave you with the fun stuff: coding up your actual game. XNA only supports my favourite language, C#, but you can code games in Unity with a variety of languages, including Javascript, which is the coding equivalent of a kiddie bike with training wheels on, riding a rail.

Of course someone will have to make the 3D models or paint the sprites your game will use, but that's not your problem: you're the coder. And trust me, because many people believe that coding is something only geniuses or madmen can do, people will be tearing your underwear off trying to get you to join their teams.

Here's how to do it:

So now that we know coding is actually something you could realistically probably do, how do you actually go about it? Well, here's how I did it: I went to university. Imagine sad trombones here going "womp womp", right? Don't be too hasty. About 90% of what I've learned is stuff you don't have to worry about unless you actually want to code shit for a living, and possibly not even then. You can learn the important stuff yourself, and really easily.

The Internet is full of guides, manuals, courses, exercises and other tools which will help you learn the actual art of programming. The big tip is not getting discouraged too easily. It will seem daunting at first, but if you pace yourself, you'll get it in no time. If I had to do it all over again, here's how I'd do it:

1. Learn a simple language, like Javascript or Python. They are both extremely easy as far as syntax goes but still allow you to do all kinds of fun stuff. The idea is to use these languages to get used to thinking like a programmer. Taking a task, breaking it down to logical steps and then executing these steps. The net is full of fun guides you can use to learn what methods, arguments, return values and other such things are.

The additional benefit is that both languages are VERY useful. Python is a widely used scripting language, Javascript is used in literally hundreds of thousands of websites AND is one of the languages Unity uses! So you can take what you learn here and start making games!

2. Once you feel comfortable, stretch your wings a bit. Look into a more structured, strongly typed language like Java or C#. The fun thing here is that both are EXTREMELY similar as far as syntax so once you know one, you can learn the other in literally a day. These languages are hugely powerful and extremely useful: Android phones use Java natively, Windows Phone 7 (and anything Windows related, and Unity) uses C#, so you'll have a whole new world ahead of you. C# also gives you a good launching off point to learning Objective-C, which is what Apple devices use, and C++, which is what the gaming world uses.

I wouldn't recommend starting off with either of these languages, as they are a lot more formal than Python or Javascript. Mastering them is essential later on, but if you try to jump into them immediately, chances are you'll get frustrated and walk away.

3. Always do something fun. Programming is a skill like any other. You won't learn it unless you use it, so always be coding. You'll learn the basics really quickly, and after that only your imagination is the limit. Try to think of fun applications you could use yourself. Not only will you constantly learn new things, but you'll keep yourself interested, because what you're doing is fun.

I coded up my first game, a simple text-based hockey manager game, in Java after a couple of months of learning, and I could've done it earlier if I'd believed in myself more. The secret to programming is that you're not supposed to know everything ahead of time. When you come across something you don't know, look it up and learn. Don't get bummed about what you don't know, get excited because you're about to learn something new!

This blog post is long as shit, and I applaud you if you made it all the way to the bottom. I could've condensed this all down to this: if someone tells you that programming is too hard for you, call them a lying piece of shit, because that's what they are. It's a skill you can learn if you apply yourself, and it's a skill you absolutely SHOULD learn. Even if you don't make a profession out of it, you'll find no end of uses for your new skills. If you think playing games is fun, you should try making them. And I really mean that: you really, really should.

On the off chance that someone actually read all the way to the bottom, if you have any questions at all, I'll be happy to answer them. I'm not John Carmack, but I am a guy who learned to program after thinking for most of his life that he couldn't.

64 Comments

70 Comments

Avatar image for radixnegative2
RadixNegative2

547

Forum Posts

60

Wiki Points

0

Followers

Reviews: 0

User Lists: 3

Edited By RadixNegative2
Avatar image for franstone
Franstone

1534

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

Edited By Franstone

Are there any tutorials that the Giant Bomb crew could use to enable me to favorite this post in Internet Exlporer since I don't care to use the "crash every 5 seconds" Firefox?

Basically commenting on this thread is the only way I'll be able to find it again without opening Firefox or Chrome.

; )

Avatar image for CastroCasper
CastroCasper

1589

Forum Posts

164

Wiki Points

0

Followers

Reviews: 0

User Lists: 7

Edited By CastroCasper

Interesting, I always really wanted to try and learn some coding. Is there a good, free program to like test the codes? It is no fun learning all this stuff but not being able to see right away what exactly you are doing.

Avatar image for awe_stuck
awe_stuck

820

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 2

Edited By awe_stuck

@ChrisTaran said:

Sure, you don't have to be really good at math, but for me Algebra is complete and utter incomprehensible gibberish. So that kind of instantly disqualifies me.

I have to take a medium level and then advanced math class for my college curriculum. I expect those 2 classes to be my first failing grades (or grade under an 'A') of my entire college career.

Math is quite possibly the most evil and complex thing I have ever encountered in my life. I have no problem with complex logic, but math is all memorization. Can't memorize that formula for the test? Doesn't matter how well you are at logic, you're failing that test.

(Sorry, but math and people who fail to use their turn signals are about the only 2 things on the planet that can send my blood pressure skyrocketing...)

math has nothing to do with memorization. ask your teacher if you can have a sheet with the formulas. if he says no, take it up with your principle. i used to almost get perfect marks when i didnt have to memorize formula. math is all about manipulating numbers using logic and creativity

Avatar image for soralapio
soralapio

293

Forum Posts

19

Wiki Points

0

Followers

Reviews: 0

User Lists: 5

Edited By soralapio

@Kurtdyoung said:

Interesting, I always really wanted to try and learn some coding. Is there a good, free program to like test the codes? It is no fun learning all this stuff but not being able to see right away what exactly you are doing.

Sure, pretty much all of it is free. You can write code in Notepad if you want, then use the programming language's compiler to turn the code into something executable (and get any potential error messages about your code), but the two big game development environments are also free, XNA and Unity.

http://unity3d.com/

http://msdn.microsoft.com/en-us/aa937791

If you want immediate feedback, I recommend getting an IDE, or an integrated development environment. Which one to get depends on the language you will be using. For instance, for C# Microsoft make a free version of their excellent Visual Studio, where you write the code and it immediately highlights any syntax problems, offers auto completion, context sensitive help etc.

Personally I'd get started with Python. They offer a kind of real time programming environment called Idle (get it, Eric Idle as in Monty PYTHON? Eh, eh? It's programming humor!) where you can type in lines of code and get immediate results.

http://www.python.org/

Also, if you have iTunes, various universities offer video of their programming lectures. I used Stanford's excellent iOS programming series to learn Objective-C and I can wholeheartedly recommend their stuff.

Avatar image for soralapio
soralapio

293

Forum Posts

19

Wiki Points

0

Followers

Reviews: 0

User Lists: 5

Edited By soralapio

@awe_stuck said:

math has nothing to do with memorization. ask your teacher if you can have a sheet with the formulas. if he says no, take it up with your principle. i used to almost get perfect marks when i didnt have to memorize formula. math is all about manipulating numbers using logic and creativity

Yep, the point of math isn't and never was rote learning formulas. The idea is application, and doubly so in programming where usually the computer does the math. You just have to know what you want to do at any given time.

Avatar image for galiant
galiant

2239

Forum Posts

117

Wiki Points

0

Followers

Reviews: -1

User Lists: 0

Edited By galiant

Nice read. I'm actually studying programming at the local university myself, third year, but what I find difficult is anything that has anything to do with networks, for some reason those concepts are more difficult for me to grasp than anything else.

Oh, and I suck at math.

Avatar image for blackmoore
Blackmoore

258

Forum Posts

396

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

Edited By Blackmoore

Programming is just a collection of tools - the difficulty lies in not using the tools, but the problem to solve and choosing which tool to use.

Avatar image for soralapio
soralapio

293

Forum Posts

19

Wiki Points

0

Followers

Reviews: 0

User Lists: 5

Edited By soralapio

@Galiant said:

Nice read. I'm actually studying programming at the local university myself, third year, but what I find difficult is anything that has anything to do with networks, for some reason those concepts are more difficult for me to grasp than anything else.

Oh, and I suck at math.

Yeah, once you start getting into it, networking is a nightmare. I was put off by our introduction to networking and security course which consisted of a dude reading through powerpoint after powerpoint of tiny diagrams and pictures depicting TCP/IP stacks and shit. Not for me!

Avatar image for awe_stuck
awe_stuck

820

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 2

Edited By awe_stuck

@Franstone said:

Are there any tutorials that the Giant Bomb crew could use to enable me to favorite this post in Internet Exlporer since I don't care to use the "crash every 5 seconds" Firefox?

Basically commenting on this thread is the only way I'll be able to find it again without opening Firefox or Chrome.

; )

khan academy and google code university has tutuorials on Python. havent dived in yet, but im pretty close

they have written, as well as hands on video, and yep LECTURES (google mmm)

Avatar image for trevion
Trevion

21

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

Edited By Trevion

I'm a PL grad student, and I mostly approve of this post.  I think programming well is half algorithmic thinking, and half abstraction.  While you can go a while without creating your own abstractions, at some point you're going to reach the limit of your own ability to keep everything in mind at once.
 
This is why I'm confused by saying that you don't need to be good at math to be good at programming.  You probably don't need to know a whole bunch of math (I couldn't tell you squat about quaternions, for instance), but I think you need to be fairly comfortable with understanding and manipulating abstract systems.  In my experience, that's what most math is about.  It's more obvious if you look at something like algebra, but even when you're dealing with much more concrete subjects (like number theory or probability) what you're really doing is learning how to avoid doing everything from the ground up for each problem.
 
The whole language question is kind of silly.  Pick a tool you find interesting (Processing, Unity, Unreal, idTech, whatever) and use whatever language it uses.  Just remember that a language provides a particular viewpoint on a particular set of problems; just like anything else, the more viewpoints you have, the more understanding of the underlying problem you'll gain.  If you really want to understand game engines, you probably want to learn more than one; similarly, if you really want to understand programming, you probably want more experience than just your off-the-shelf "OO" languages.

Avatar image for razorzxz
razorzxz

218

Forum Posts

85

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

Edited By razorzxz

Thanks for the great read. Also question. I am fifteen years of age, what sort of career path should I go if I want to do programming. This particular post really made me re-think my choice, I used to think I would really need math to advance anywhere (and to be fair I'm shit at math) but now I think I could really broaden my horizons. Anyway hopefully you will get back to me on my question.

Avatar image for grumbel
Grumbel

1010

Forum Posts

12

Wiki Points

0

Followers

Reviews: 99

User Lists: 2

Edited By Grumbel
@Trevion said: 

You probably don't need to know a whole bunch of math (I couldn't tell you squat about quaternions, for instance), but I think you need to be fairly comfortable with understanding and manipulating abstract systems. 

It doesn't hurt to be able to handle abstract systems, but most programming isn't all that abstract really, as you can simply run it to see what happens. Essentially knowing some addition, multiplication and some boolean algebra is all you need for regular day to day programming. Game programming needs some linear algebra in addition, but even there you don't really need the underlying math, just the knowledge how to apply it. The number of times that your average random programmer had to write a formal proof of some algorithm for example is probably pretty close to zero.

That's not to say that math isn't needed for some higher stuff, but a hell of a lot of programming is really just slapping components together to do something interesting, so that knowledge of how a given API works often becomes much more important in day to day work then actual knowledge of the theoretical underpinnings of computation.
Avatar image for iam3green
iam3green

14368

Forum Posts

350

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

Edited By iam3green

well thanks, it kind of gives me some information. 
 
only thing i know is a  little bit of actionscripted 2.0. i don't really like coding from learning that.

Avatar image for trevion
Trevion

21

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

Edited By Trevion
@Grumbel: I guess as long as your goal is doing things somebody else already figured out, sure, you can just slap existing components together.  I sure as hell wouldn't set out on a career with that as my only goal, though, and I don't think you'd get much respect in the field.  I mean, even in the Rails community, which is about as "slap some components together" as you can get, the people who are respected are the people like DHH and _why who did more than that.
Avatar image for nickydubz
NickyDubz

380

Forum Posts

8

Wiki Points

0

Followers

Reviews: 0

User Lists: 5

Edited By NickyDubz

This is a great post...not to say programming is a walk in the park but in reality its a very easy skill to learn on your own time

Avatar image for lockwoodx
lockwoodx

2531

Forum Posts

6

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

Edited By lockwoodx

Java pissed me off to the point I knew I never wanted to go into any kind of field that required programming.
 
also: fuck math

Avatar image for jay444111
Jay444111

2638

Forum Posts

1

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

Edited By Jay444111

@soralapio: Is there any books I could buy to help teach me... most internet vids online about programming are convoluted and don't explain crap while anything written down online already acts like you have been programming for ten years... I would like something so beginner that it is almost insulting... yeah... I need something to explain stuff to me that bad.

Any sugguestions man? I have always wanted to make video games and stuff and would love to know where exactly I can freaking start.

Avatar image for soralapio
soralapio

293

Forum Posts

19

Wiki Points

0

Followers

Reviews: 0

User Lists: 5

Edited By soralapio

@razorzxz said:

Thanks for the great read. Also question. I am fifteen years of age, what sort of career path should I go if I want to do programming. This particular post really made me re-think my choice, I used to think I would really need math to advance anywhere (and to be fair I'm shit at math) but now I think I could really broaden my horizons. Anyway hopefully you will get back to me on my question.

Start programming. The more you do it, the better you get at it. Even if you go to a university later on to learn the formal side of programming, it doesn't hurt to already be familiar with the practical side. Without knowing where you're from it's hard to say what kind of education might best benefit you, but basically the gist of it is that universities teach the higher level stuff and train you to design whole systems, while technical schools will probably teach you more about the practical side.

Avatar image for soralapio
soralapio

293

Forum Posts

19

Wiki Points

0

Followers

Reviews: 0

User Lists: 5

Edited By soralapio

@Jay444111 said:

@soralapio: Is there any books I could buy to help teach me... most internet vids online about programming are convoluted and don't explain crap while anything written down online already acts like you have been programming for ten years... I would like something so beginner that it is almost insulting... yeah... I need something to explain stuff to me that bad.

Well, when I say Internet videos, I don't mean xXxTokeDawg420xXx's Programming Dawghouz, I mean video of actual school lectures. You could do a lot worse than looking at Stanford's "Introduction to Computer Programming" videos. The lecturer is a fun guy and covers a wide array of topics and it's intended for incoming students so it starts at a basic level.

http://academicearth.org/lectures/programming-methodology-intro

Looks like these videos will explain all the core concepts you need to know to learn programming. Most books on the subject are far duller than this :)