• Advertisement
Sign in to follow this  

Is it impossible to become a programmer?

This topic is 3614 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I have made several attempts over the years to learn programming. After months and months of studying and practicing, I find that I still cannot design and write a useful practical program. So, I get discouraged, and move on to new hobbies. However... I keep coming back to try again... and I think I know why. My dream- since childhood, is to become a computer programmer, and more specifically, programmer of video games. But for some reason, I cannot seem to grasp the field. Many people say 'programming isn't hard', that 'anyone can do it'... Well obviously... I can't. Has anyone else had similar experience, or know of a way to help me?

Share this post


Link to post
Share on other sites
Advertisement
First tell us a few things. How did you try to learn programming? What kind of games have you tried to make or tried to learn how to make? What problems did you run into? What has stumped you about programming in the past?

We need information before we can help you, we aren't mind readers.

Share this post


Link to post
Share on other sites
Very few things in life are impossible... As far as coding goes , just start small , work slow ( need be ) and above all , be persistent. Set realistic goals for yourself given your experience and background. And you will be amazed at what you can accomplish.

Share this post


Link to post
Share on other sites
Quote:
Original post by CordFly
So, I get discouraged, and move on to new hobbies.
There's your problem, you have to stick at it if you want to get anywhere. Anyone can learn to program. Some people will have more difficulty than others. Noone will pick it up without at some point facing difficulties and sticking with it rather than giving up.


Quote:
My dream- since childhood, is to become a computer programmer, and more specifically, programmer of video games.
Is your dream to be a programmer who creates videogames, or to create videogames? Depending on the games you wish to create you may be able to do so without programming, or with a simple scripting environment or language rather than fully learning to program. Software packages such as Game Maker, INFORM, 3d Game Studio and many others can allow you to create games using point&click interfaces or scripting rather than having to do all the programming yourself. Even packages such as these require you to stick with them if you want to learn to use them to their full capabilities however.



If you do really want to learn programming you're just going to have to stick with it. Practice as much as you can, read over all the learning materials you have available, and continue trying to build on your knowledge.

Hope that helps. [smile]

Share this post


Link to post
Share on other sites
Quote:
Original post by Possumdude0
First tell us a few things. How did you try to learn programming? What kind of games have you tried to make or tried to learn how to make? What problems did you run into? What has stumped you about programming in the past?

We need information before we can help you, we aren't mind readers.



Sorry for not being more specific, but here's the details:

I tried learning through tutorials and books. I've tried going head-on and writing my own programs. I tried to make an adventure game. Problems I ran into: Couldn't design it. So I tried to code it, without pseudo code, and got stuck and lost and eventually gave up. I don't even know how to design.

What has stumped me about programming in past: How do things work behind the code itself? How to make code readable and reusable? And everything related to graphical programming is a complete mystery to me.

Share this post


Link to post
Share on other sites
Quote:
everything related to graphical programming is a complete mystery to me.


If you use C or C++ I'd suggest checking out the Allegro library. It's easy to learn and has functions that make 2D graphics a breeze.

Quote:
Problems I ran into: Couldn't design it. So I tried to code it, without pseudo code, and got stuck and lost and eventually gave up. I don't even know how to design.


Sounds like a major problem you're having is with design. Try looking up some information on that.

Quote:
I tried to make an adventure game.


Start simpler. Make a basic Tetris or Breakout style game. Work your way up to the more complex games.

Share this post


Link to post
Share on other sites
If you don't manage to grasp C++, try C# for a while.
Once you get a hang of it, check out XNA and do something small and funny like a Pong-clone. Don't bother polishing it, just get the basics of it up and running.

Then you can move on back to C++ and check out the Game Creator's DarkGDK, a complete game development kit, including a DirectX 9.0c wrapper.
Rewrite your Pong-clone and move on to a Breakout-clone, before you do something like Space invanders.

The best part of XNA and DarkGDK is that it's completely free and aimed at beginners.

Send me a PM and I'll help you out.

Share this post


Link to post
Share on other sites
Try taking a software engineering course at your local Community college (if they offer it, my local one does.)

Share this post


Link to post
Share on other sites
Quote:
Original post by neonic
Try taking a software engineering course at your local Community college (if they offer it, my local one does.)


I definitely recommend this too. They're cheap, you can withdraw very late in the period if you hate the course, the books are usually inexpensive, and the classes are small. This is really a HUGE benefit, especially for classes where they teach you basic concepts like software design. You get a ton of one-on-one time and small group projects, and it's just a lot more focused than a huge lecture course from what I've found.

Right now I'm taking a software design and development course at my local college in addition to my regular university courses.. and I actually look forward to my design course every week. There are 6 people in the course and so we feel very comfortable asking questions and going over other topics that relate to our work. It's a great team environment, really, especially when compared to similar university courses with 50+ students per class with one professor and one very nervous TA.

Share this post


Link to post
Share on other sites
I agree with the last two posts as well. Taking a class is much easier. I've found Java to be easier to learn than C++, mostly because I'm in a Java class and I had to teach myself C++.

Share this post


Link to post
Share on other sites
this article (had to find it in google cache as the propper link seems to be down)
pretty much sums it up http://66.102.9.104/search?q=cache:SHt7f6BhFjIJ:norvig.com/

Share this post


Link to post
Share on other sites
Most good programmers I know (I'm not counting people who do it for work, but could care less), and I mean people who think about CS and programming all the time, were programming before they knew what it was.

It comes so naturally to me that it feels like its been there forever. Not that I usually finish large projects. It seems to come naturally to some. I'm sure most people here on GameDev feel like this. For instance when you take a class in something you think, "yup thats what I would have done", "or that theorem confirms what ive been thinking.{

If you don't enjoy programming, maybe its not right for you. Not saying you are unintelligent, Ive met tons of people who don't enjoy it that are very very smart. Its not the only path towards creating games. Also 'equate game making with programming.

Share this post


Link to post
Share on other sites
The majority of my CS classes were basically 3 hours of a professor reading his powerpoint presentations about for loops (which are available on the course website) with an undecipherable chinese/indian accent as the chick on the front row who can't even click a mouse keeps asking the same question worded differently every 3 minutes. My all time favorite class was the one where we learned assembly language with an instruction set for a machine that doesn't actually exist. We would write programs with a pen and paper, and the professor would execute them in his mind.

In a semester, you learn about as much as you would in 2 weeks of googling... The end result after 3 years of horribly difficult math and unbelievably boring lectures is a degree in programming console applications and crappy applets.

The only thing I regret is not dropping out sooner. It completely destroyed any interest I had in programming for about a year. It's only now, 3 years later, that I've decided to start a new project.

So I don't know.. You guys are either masochists, or maybe I just picked the wrong university... But I would never recommend programming classes to anyone unless I really, really wanted them to experience hell :P

I like that link Stowelly posted -- that's perhaps one of the hardest things to get used to... There's a large gap between the moment you start learning and the moment you have a program that other people will be able to use and enjoy for more than 30 seconds. In the meantime, you'll have written dozens of programs than never really led anywhere or were just you "trying things." It's pretty much inevitable.

One game that is remarkably easy to program that was my first "project" was a clone of Dope Wars. It was on a casio calculator, and created quite a sensation at school, if I may say so myself. Those were math classes well spent! If you're looking for a simple first "real" program, I recommend doing that (not on a Casio calculator though, those things suck).

Share this post


Link to post
Share on other sites
I've never taken a programming class, but I've taken computer science classes such as Computation, Algorithms etc...

Luckily I placed out of the two introductory programming classes you normally have to take, but I have TAd them and they were so horrible I had to basically teach people myself when it came to lab work.

So yeah, it probably comes down to what kind of class and whether your professor is any good

Share this post


Link to post
Share on other sites
C++ has never really been a beginners language and it's non-trivial to make graphical games with it really, although the SDL helps.
I'd recommend Python as the language with Pygame as the games API.

Share this post


Link to post
Share on other sites
I suggest python and pyglet as a starting point but the problem you are having is with design not language details.
Quote:
What has stumped me about programming in past: How do things work behind the code itself?
This is mostly a question of focus. At some point you have to say who cares, the mystical fluffy bunnies take care of it, otherwise you need to enroll in a good electrical engineering program
Quote:
How to make code readable and reusable?
That is easy make it usable first, then modify it so that it applies to a new situation. The first step is trying to not hard code assumptions.

Share this post


Link to post
Share on other sites
Quote:
Original post by CordFly
I tried learning through tutorials and books. I've tried going head-on and writing my own programs. I tried to make an adventure game. Problems I ran into: Couldn't design it. So I tried to code it, without pseudo code, and got stuck and lost and eventually gave up. I don't even know how to design.

Sounds like you took on more than you could handle. If you want to learn programming, take it slow. I've been learning programming on and off for 4-5 years now, I still wouldn't say that I'm anything past an amateur. I find that learning how to program well is more of a mindset than an actual skill, at least at the beginning (you need the mindset before you can get the skill easily). This is obviously going to differ for everyone, but I recommend taking physics and/or math courses if you can, even if you don't plan to use them. In my experience, at least, solving physics problems requires a very similar thought process to solving programming problems (and the physics/math knowledge will help in game programming).

Quote:
What has stumped me about programming in past: How do things work behind the code itself?

If you want the basics, look up the Von Neumann architecture. Beyond that, either take some electrical engineering courses, assume that a wizard did it, or just ignore it (this is what I do). I strongly recommend either of the latter two, at least until you get to a level where you're advanced enough that it actually matters.

Quote:
How to make code readable and reusable?

Good formatting can do wonders for code readability (and it makes it easier to write and debug code too).
Here's a link to a good article.

Quote:
And everything related to graphical programming is a complete mystery to me.

This is another instance of "take it slow and set reasonable goals." It's very difficult to do graphics until you have a solid understanding of programming without graphics, though there are libraries like SDL that simplify it hugely. I still recommend learning to program well before you start using SDL, though.

Quote:
So, I get discouraged,

This, right here. Don't do this. Really, the number of programs I've written that had bugs which seemed (at the time, anyway) unsolvable... I've rewritten whole programs because I couldn't find that one compiler error (this was a long time ago, before I figured out that indenting code makes it easier to read and to debug). Really, this comes down to persistence and reasonable goals.

Share this post


Link to post
Share on other sites
Quote:
Original post by Possumdude0
Quote:
I tried to make an adventure game.


Start simpler. Make a basic Tetris or Breakout style game. Work your way up to the more complex games.


A small text only adventure game isn't that bad - especially if the input isn't free-form and you've only got a small menu of options to select from. Although I can easily imagine a beginner having problems. On the graphical side I'd say both Tetris and Breakout are more complex than I would want to do as a very first project.

If you really want to do a graphical game start with Pong. In the beginning don't even have paddles. Just have four walls that the ball bounces off of. Once you've got that then you can take out two walls and put in paddles.

Share this post


Link to post
Share on other sites
Quote:
Original post by kiwibonga
The majority of my CS classes were basically 3 hours of a professor reading his powerpoint presentations about for loops (which are available on the course website) with an undecipherable chinese/indian accent as the chick on the front row who can't even click a mouse keeps asking the same question worded differently every 3 minutes. My all time favorite class was the one where we learned assembly language with an instruction set for a machine that doesn't actually exist. We would write programs with a pen and paper, and the professor would execute them in his mind.


I had the same experience at my university. 2.5 years into a CS/CE degree I swapped majors, and then left the school a while after. The worst part was having the same professor for every CS class, and not really learning anything. the first semester was a complete rehash of everything I taught myself in highschool, and was not allowed to move up because I hadn't taken Calc in highschool. In my later classes everything moved way too slow, and I never absorbed important points because of it.

We spent over half of my third semester class lectures listening about the differences in speed and efficiency of merge sort versus bubble sort methods. Namely, he went over the entire mathematical average and worst case scenarios over the course of about 40 lecture hours. I agree this is an important point, however it didnt justify so much class time and by half way through the class I was completely uninterested. By the end of the second year, I decided I never wanted to work in a programming field.

Now 4 years removed from college, I started to re-teach myself with books and online how to's. Ive gone in with the mindset of doing it as a hobby. Ive found it very easy to learn this time around, and I can move at my own, comfortable pace. I can skip ahead, and learn to use something I dont understand yet, and I can go back and re-learn anything I find useful or necessary to continue. I play with modding other games, as well as tools like GameMaker when im in a designing mood, and do some simple programming when I want to do that. Its all about knowing how you learn and going from there. :)

Share this post


Link to post
Share on other sites
I recommend starting with tic tac toe using ASCII characters. It really isn't too hard and can be done easily without creating objects if that is a bit too advanced. All in all, just keep at it and practice what you learn so that it gets stuck in your mind.

Share this post


Link to post
Share on other sites
Quote:
Original post by CordFly
I tried learning through tutorials and books. I've tried going head-on and writing my own programs. I tried to make an adventure game. Problems I ran into: Couldn't design it. So I tried to code it, without pseudo code, and got stuck and lost and eventually gave up. I don't even know how to design.

No, most fundamentally, you don't know how to program. And by program I mean the most basic skill, of taking a problem, picking it apart and expressing it in code.

You're trying to move far too fast. Don't do graphics programming until you know programming.
Start with pure logic problems. Stuff with no graphics, minimal input/output. Write a calculator. Or something which opens a file, replaces all o's with x'es and prints out the result. Or which asks for your name, and then prints out all possible permutations of it. Or computes the greatest common denominator of two numbers. Or sorts a list of numbers.
You need to walk before you can run. You didn't learn to read by being forced to look at an encyclopedia for three weeks. You did it by having a very patient teacher make you chant the alphabet over and over, memorize silly rhymes and read books with hy-phen-at-ed sen-ten-ces and very big fonts. Boring as hell, you might say, but it was doable for someone who couldn't yet read fluently, which is why you had to do it.

Quote:
How do things work behind the code itself?

Not sure what you mean. There's nothing behind the code (other than other people's code)
There is however a lot of other people's code. The driver that receives your commands and passes them on to the GPU. The operating system giving you access to the harddrive. Even the standard input stream to let you read characters from the keyboard.

In a sense, whenever you want things to happen anywhere outside the CPU (on the GPU, for example), you have to rely on other people's code (made available to you through the operating system, typically, or through various libraries made available by hardware manufacturers)

Quote:
How to make code readable and reusable?

Write your code. See if it's readable to you. See if there's anything you can change to make it simpler and more concise. If so, you've just made your code more readable than it was.
Other than that, don't worry about it yet.

Quote:
And everything related to graphical programming is a complete mystery to me.

See above. In a nutshell, your programming language itself can't do graphics. for that matter, it can't create a a window either. Or read input from the keyboard. Or anything that doesn't happen on the CPU itself. All that functionality is supplied by the OS, or by drivers which know all the tricks to get other hardware to do stuff. They make some functions available to you that you can call.
A very simple example would be if the OS gave you a function called SetPixel(x, y, color). With that you can set the pixel at coordinate x,y to the specified color. How that actually appears on the screen is unknown. Driver magic, as far as you're concerned. All that matters is that it works. Now you just have to write the logic to figure out *which* pixels should be rendered with which colors. Sure, it'd be a lot of work, but it's nothing more than a logic problem. It doesn't require any magic.
And as such, it's completely irrelevant. It's just a matter of calling the right functions provided to you by someone else. The trick is in handling all the logic to figure out when to call which of them, and with what arguments. And the way to learn that is to focus on programming, rather than how to get pretty colors on the screen.

Share this post


Link to post
Share on other sites
Obviously nothing is impossible. Is it likely that without a superior closely guiding you, without even remotely related work experience, without connections in the field, that you will become a programmer? Probably not. People tend to accel at the things that excite them. Things they can talk to their friends about. The things that help them to build healthy relationships with others.

When I was way young in like 1992-ish, my dad got a computer for the "family" to use - it had DOS at first, then early windows and early AOL. Compared to most kids in my town, I was way computer savvy just from using it to do basic stuff. This is a middle class town in New Jersey, and most of my friends had parents who bought them Nintendos and didn't care about e-mail, and IM, and software, and computer shows. It's all about demographics though. And nurture, too. Because my dad built the computers himself, and I would point at the stuff inside and be like what's that and what's it do, and he'd tell me. I can guarantee there are PLENTY of other dads who can get real low level, real nitty gritty about the inner workings of a PC and thier kids will have a huge advantage in programming, because they *really* know how it works.

Pointers still fuck with me. Memory management is way intimidating. 3D math is something I will probably never grasp. These are places where your average student tends to get stuck. The amount of mathematical thinking that goes into the engineering practice is tremendous. I think most people who have a decent proficiency in math really overlook how difficult a process it is for others. People who write software for science labs and physics simulations are on the same mental plane as people who program video games. The intelligence required to program vs. the intelligence required to play is a very expansive spectrum.

I personally find that my talents are more web related. I can be way savvy with ASP, Flash, Java. That is, when there is a demand, I will quell it for the right price :)

I'm saying that you shouldn't drive yourself crazy, getting in over your head. Taking it slow means see how many different ways you can make the command prompt say hello world. Try to really understand the machine you are communicating with, and remember that every line you write is you teaching a chip the certain pattern of binary that will create your desired effect upon user interaction. Remember heuristics. Learn to learn about your program and its tendencies as you expand it, and you will develop the kind of bond that won't let you quit. Practice in a way that's both fun and productive. Stressing yourself out will damage your brain and your physical desire to program. Take it easy. Work smarter not harder. Choose the right books and resources. I have plenty of books that I wish I could return :) don't listen blindly to recommendations because the Computer Book industry is like the same thing as American government w/ lobbyists. Reviewers push related publications.

Most of all, enjoy yourself. Don't challenge yourself too much bro because you're not paying the mortgage with your hobbies

Share this post


Link to post
Share on other sites
Programming is easy.

Programming something that looks like a mainstream game is hard.

Programming a polished toy game takes years of learning typically.

...

Start with a choose your own adventure game. The player gets to pick 1 or 2 at various points -- that's it.

That is a pretty basic program. And the plot can be fun, and after you get good at it you can add stuff like "strength, stamina, and equipment" such as the gygax variant novels.

Share this post


Link to post
Share on other sites
I agree, likewise those people that I've met that are good programmers have generally stumbled upon coding by themselves, took it as a hobby and then took on a comp. science related degree.

For me its like solving a puzzle, if you're into brain teasers and all that you can't do that bad at programming. :)

Quote:
Original post by ibebrett
Most good programmers I know (I'm not counting people who do it for work, but could care less), and I mean people who think about CS and programming all the time, were programming before they knew what it was.

It comes so naturally to me that it feels like its been there forever. Not that I usually finish large projects. It seems to come naturally to some. I'm sure most people here on GameDev feel like this. For instance when you take a class in something you think, "yup thats what I would have done", "or that theorem confirms what ive been thinking.{

If you don't enjoy programming, maybe its not right for you. Not saying you are unintelligent, Ive met tons of people who don't enjoy it that are very very smart. Its not the only path towards creating games. Also 'equate game making with programming.


Share this post


Link to post
Share on other sites
Quote:
Original post by CordFly
What has stumped me about programming in past: How do things work behind the code itself?


Read Code: The Hidden Language of Computer Hardware and Software. Despite its name, it won't teach you anything about coding, but it will answer your question of how things work under the scenes. It's boring, but if you want to learn, it's worth the read. All about number systems, IEEE 754, flip-flops, logic gates, circuits, and a bunch of other stuff. It's a good, basic look at a computer and how it works, without getting into all the complications of modern hardware.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement