Something went wrong. Try again later

soralapio

This user has not updated recently.

293 19 46 52
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 ssully
SSully

5753

Forum Posts

315

Wiki Points

0

Followers

Reviews: 0

User Lists: 3

Edited By SSully

I approve of this message as well. While I am not nearly as good as I want to be, I am getting there. I hated math my whole life, and when I decided I wanted to study computer science in college I was terrified. I kept hearing how you needed to be a math whiz and all this shit, and I decided to ignore those comments and try. Well I am acing all of my programming classes and understand everything that is thrown at me. I still have to take math classes though, which are a complete struggle for me. But I am making it through!

Avatar image for tourgen
tourgen

4568

Forum Posts

645

Wiki Points

0

Followers

Reviews: 4

User Lists: 11

Edited By tourgen

you could just pick up a copy of http://en.wikipedia.org/wiki/The_C_Programming_Language and one of the free C compilers and bam, there you go.  Work thru the book.  It's short.  Then add SDL or Alegro to start moving some sprites around in a window.
 
Not a fan of Python personally.  Kind of a mess of a syntax.
 
But if the goal is to someday make awesome games please listen:  forget programming.  Learn to draw, paint or even model 3D objects.  Learn some music theory.  Learn what makes a great written story and how to pace a story.  Story boarding, board game systems, game theory.  Games are about the art.  with toolkits like Unity or a modding kit the programming is really secondary to what makes an awesome game.

Avatar image for ethanml
EthanML

486

Forum Posts

233

Wiki Points

0

Followers

Reviews: 0

User Lists: 3

Edited By EthanML

I'm a second year CS student and I love programming but I'm always afraid I won't be able to get in to it as a career because of issues such as the maths one, so posts like this are always great to read and inspirational for me. Thank you sir, and well written. I'mma follow you now so keep up the interesting programming blogs ;)

Avatar image for groin
groin

870

Forum Posts

34

Wiki Points

0

Followers

Reviews: 0

User Lists: 4

Edited By groin

@BlameGamer said:

Java is for old programmers working on their retirement. Cool kids use C# or Ruby. MVC3 and Rails is where it's at baby. None of this jBoss horseshit! :D

That might be true for app/web development but the coolest dudes work on system level stuff with C/C++.

Avatar image for blamegamer
BlameGamer

99

Forum Posts

253

Wiki Points

0

Followers

Reviews: 1

User Lists: 0

Edited By BlameGamer

Java is for old programmers working on their retirement. Cool kids use C# or Ruby. MVC3 and Rails is where it's at baby. None of this jBoss horseshit! :D

Avatar image for fluxwavez
FluxWaveZ

19845

Forum Posts

19798

Wiki Points

0

Followers

Reviews: 0

User Lists: 6

Edited By FluxWaveZ
@timlump: @soralapio: That actually makes me feel better about it. I think I was too stuck on the concept of trying to learn from attending classes, although I've not been learning much there.
Avatar image for soralapio
soralapio

293

Forum Posts

19

Wiki Points

0

Followers

Reviews: 0

User Lists: 5

Edited By soralapio

@timlump said:

@FluxWaveZ: It is very rare to get a good teacher. The assignments are how you learn. Work on them and you will be fine, don't expect your teacher to (ironically) teach you anything.

Precisely. I skipped 95% of my programming lectures, because they consisted of a dude coding at his computer or taking an hour and a half to explain what it means when a method returns something. I did the assignments, I did a bunch of extra work, I learned programming.

In this way I'd say programming is a lot like maths: you don't learn it in the classroom, you learn it by doing.

Avatar image for soralapio
soralapio

293

Forum Posts

19

Wiki Points

0

Followers

Reviews: 0

User Lists: 5

Edited By soralapio
Avatar image for dagbiker
Dagbiker

7057

Forum Posts

1019

Wiki Points

0

Followers

Reviews: 0

User Lists: 16

Edited By Dagbiker

I like programing, but i dont want to hate it, so i didnt make it my living.

Avatar image for lordxavierbritish
LordXavierBritish

6651

Forum Posts

4948

Wiki Points

0

Followers

Reviews: 7

User Lists: 6

What if I am not algebra enough to program.

Avatar image for fluxwavez
FluxWaveZ

19845

Forum Posts

19798

Wiki Points

0

Followers

Reviews: 0

User Lists: 6

Edited By FluxWaveZ

I'm taking an intro. to programming class for my first Cegep semester (we're learning Java) and, to be honest, it's kind of bumming me out. I'm not sure if it's because of my shitty teacher (he is shitty and everything I learned was practically learned from the book and not himself) or what, but I'm finding it to be kind of boring. It's only been a bit more than a month since the semester started, though, and maybe I just need to engage myself more when I need to work on assignments.

Avatar image for mordi
mordi

590

Forum Posts

22

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

Edited By mordi

I started off using Game Maker, which includes drag-and-drop and a simplified programming language. I think it's great because as a kid, I was having fun the the drag and drop functions, and I was able to make simple games with it. As time went on, I got a need to do more advanced things, so I learned the written language (GML). A few years ago I started learning C#, and now I can make games using more advanced languages.

Avatar image for ch3burashka
ch3burashka

6086

Forum Posts

100

Wiki Points

0

Followers

Reviews: 0

User Lists: 3

Edited By ch3burashka

What's your indie studio, you cocktease? Might as well pimp your shit.

I took a Java course in 12th grade and couldn't bend my mind around "algorithmic thinking". However, that was probably 'cause I was lazy. I'm considering getting deep into some C books and trying my damnedest to succeed this time, probably this winter break.

Only one question: what language should I start with/actually program with? I would like to start implementing ideas ASAP, but I don't want to spend time with useless (or less useful) languages.

PS An older friend of mine told me that "back in his day", his programming class counted towards his "foreign language" credit.

Avatar image for buscemi
Buscemi

1125

Forum Posts

3757

Wiki Points

0

Followers

Reviews: 0

User Lists: 2

Edited By Buscemi

I've seen this post before. Either I have travelled forward in time and then back here or this is a repost.

Avatar image for shockd
ShockD

2487

Forum Posts

16743

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

Edited By ShockD

Thanks for clearing the things out.

Avatar image for soralapio
soralapio

293

Forum Posts

19

Wiki Points

0

Followers

Reviews: 0

User Lists: 5

Edited By soralapio

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.