🔒 Locked
Programmers Depression
Advertisement
Original Post
I have a problem. I read through article after article about game programming and graphics programming. I read physics tutorials and high end math tutorials. It all makes sense. I understand the logic. I can watch an computer animated movie or play a video game and break down the processes and tell all my family and friends how they are achieving those awesome and even the simple effects. It's when I sit down to write a program or design a program that I lose everything that I know and I can't even right those games that everyone can right, like the Tetris clone i'm working on. I have a hard time coding even simpler things like sorting functions and the like. I have the logic and understanding down it the implementation that I can't get close to achieving. Do any of you have the same or similiar problem? How do you or did you get past it?
Hi klayAlloy,
Your problem sounds a lot like my own. I know the in's and out's of programming languages, APIs and libraries but using them effectively involves a whole other set of skills.
I think it's something that has to be acquired through a Computer Science degree (or similiar). Learning good software design skills won't be easy through online tutorials and forums.
Your problem sounds a lot like my own. I know the in's and out's of programming languages, APIs and libraries but using them effectively involves a whole other set of skills.
I think it's something that has to be acquired through a Computer Science degree (or similiar). Learning good software design skills won't be easy through online tutorials and forums.
2nd this, main thing I learned is you just do it. If you have the will power to sit yourself down and make yourself code something, you'll be fine.
RAD helps.
if you get stuck; "fork" the project, and JUST start work STRAIGHT AWAY on the copied version trying any hacks you like.
Find out what the problems are, then THROW AWAY the hacky version.
if you get stuck; "fork" the project, and JUST start work STRAIGHT AWAY on the copied version trying any hacks you like.
Find out what the problems are, then THROW AWAY the hacky version.
I know how you feel, but maybe this is putting it in a different perspective. Everyone I know tell me I'm terribly gifted, teachers talk about me, other students even betted on me to be the most successful person from my school, but really to me I feel I am a crap programmer... I too know languages and am fairly good but everything I solve seems so simple in comparison to what "real programmers" do... it seems I am missing a vital part of education, like some sort of practical experience. It's really hard to know what to do so I guess I'm just going to wait till I get into uni and just focus now on my final year.
Actually, what you're experiencing is very common. Creating something is a more sophisticated mental ability than analyzing something. There are a lot more people who can properly analyze a well-written book or screenplay than can sit down and write one well. You just have to start doing it and build up that part of your skill set. And if you get stuck, you just ask other people for advice. That's how everybody learns it.
I second what ROBERTREAD1 says. Practice is the most important thing for building up an 'instinct' for programming.
The prime thing to remember is that code is not carved into blocks of stone - you can copy it, trash it, do unspeakable things to it, and the old copy will still work. Never be afraid to 'waste time' trying a new approach. If it doesn't work you've learned something, so the time isn't wasted either way. Remember that code is free - it doesn't cost anything but time, and you enjoy spending time on it anyway, right?
After enough practice you will start to notice patterns and holes in your design methodology. At that point you should have enough enough experience to be able to appreciate stuff like the GoF Design Patterns on a personal level instead of as abstract advice.
The second most important thing is to read less. It's all very well being able to understand descriptions of complex stuff, but it's no substitute for understanding the thing itself. That's something that can only be gained through hands on playing with the concept. Humans are best at learning through play and experimentation.
I'm not saying you shouldn't read around the subject, but that you should spend more time doing than reading. It can be depressing when you have a high level understanding of hundreds of complex topics, but no deep understanding of any of them. Actually doing is what brings both deep understanding and satisfaction in proving to yourself that you really do understand.
The prime thing to remember is that code is not carved into blocks of stone - you can copy it, trash it, do unspeakable things to it, and the old copy will still work. Never be afraid to 'waste time' trying a new approach. If it doesn't work you've learned something, so the time isn't wasted either way. Remember that code is free - it doesn't cost anything but time, and you enjoy spending time on it anyway, right?
After enough practice you will start to notice patterns and holes in your design methodology. At that point you should have enough enough experience to be able to appreciate stuff like the GoF Design Patterns on a personal level instead of as abstract advice.
The second most important thing is to read less. It's all very well being able to understand descriptions of complex stuff, but it's no substitute for understanding the thing itself. That's something that can only be gained through hands on playing with the concept. Humans are best at learning through play and experimentation.
I'm not saying you shouldn't read around the subject, but that you should spend more time doing than reading. It can be depressing when you have a high level understanding of hundreds of complex topics, but no deep understanding of any of them. Actually doing is what brings both deep understanding and satisfaction in proving to yourself that you really do understand.
In a lot of ways, coding is like a form of art. Some people have a natural inclination to write or draw or paint. The rules can be taught but the creativity must be learned.
A CS degree isn't the end-all-be-all either. In my years of coding, I have known many people with a 4 year degree in computer science that I wouldn't hire to program and known others who learned their craft through spending hours reading books and sitting at the computer and hacking programs together that are genius.
Don't get discouraged. Practice makes perfect. Sit and code, keep your attempts around in a 'trash' folder to look back on when you write your next game. Remember, small steps come first then you can run.
Happy coding.
A CS degree isn't the end-all-be-all either. In my years of coding, I have known many people with a 4 year degree in computer science that I wouldn't hire to program and known others who learned their craft through spending hours reading books and sitting at the computer and hacking programs together that are genius.
Don't get discouraged. Practice makes perfect. Sit and code, keep your attempts around in a 'trash' folder to look back on when you write your next game. Remember, small steps come first then you can run.
Happy coding.
I agree completely with said replies already, although I'm sure different "programmer's blocks" can occur. One is simple lack of experience, yes, in which case you should just sit yourself down, lower your standards, and inch yourself into practical knowledge and experience. If you, however, just seem to never get past the same bump in the road (for me that happened to be pointers... I must admit that I still hate them), you should try persistantly to get past it - change the language you're using, try and get some constructive feedback on the problem by someone knowledgable, use a different method - just don't give up.
As my master says ever so often, "All beginning is difficult".
As my master says ever so often, "All beginning is difficult".
Man we've all felt that way... Just practice making crap programs, and if you see yourself starting a hack, come here or to comp.lang.c++ and ask what might be a better way to organize. Go ahead and code into a corner, then see what you did wrong.
Most of my programs were code-cornered. :) I finally starrted getting something near "extensible" a couple years back.
Oh yeah, and I LOVE reading articles way more than implementing, and am much better at it. I feel the same way in that respect.
Most of my programs were code-cornered. :) I finally starrted getting something near "extensible" a couple years back.
Oh yeah, and I LOVE reading articles way more than implementing, and am much better at it. I feel the same way in that respect.
Diana Gruber said it best : Your first ten games will suck. Get them out of the way.
In other words, start with Tic Tac Toe. Then make Tetris, a bad platformer, a shooter, a good platformer, a bad 3D game, a good 3D game...
You can know all the languages you want, but your game development skills will not mature until you've sat down and written code... ALOT of code, years worth of code. Just keep making games and you'll keep getting better.
In other words, start with Tic Tac Toe. Then make Tetris, a bad platformer, a shooter, a good platformer, a bad 3D game, a good 3D game...
You can know all the languages you want, but your game development skills will not mature until you've sat down and written code... ALOT of code, years worth of code. Just keep making games and you'll keep getting better.
I thought I was the only one who feels this way! I often rather hang around forums and read articles than actually do code but thats the problem, the only way to learn is to do code. If you read a million articles but never incorporate what you learn into a project all that knowledge never really sinks in. thats why when you start coding you realize that you cant code as well as you should be able too.
Quote:
Original post by AdamWebb
Hi klayAlloy,
Your problem sounds a lot like my own. I know the in's and out's of programming languages, APIs and libraries but using them effectively involves a whole other set of skills.
I think it's something that has to be acquired through a Computer Science degree (or similiar). Learning good software design skills won't be easy through online tutorials and forums.
I'd have to disagree. The way they teach CS here (and at most schools I believe), they actually *avoid* software design and coding. I have to take my OO design course as a complementary course, and even there, we do very simple things in python and the course avoids programming, focusing "purely" on design. Outside of that, the material in other courses focuses mostly on theoretical aspects of CS, which are mostly abstract mathematically-defined concepts. There is an occasional programming course, which usually never goes in depth. We overlook the most important features of the language, write a few programs in it, and that's it. No language-use guidelines, no advanced features.
Anyhow, no need to tell you that here, in CS at least, there aren't many skilled programmers. Alot of students actually came into CS because they liked math (and do not enjoy programming). I personally find myself rather good at implementation, but I got at least 60% of my skills before I entered the university. What my CS degree brings to me is mostly a *formalization* of things I already knew, a better understanding of the theoretical aspect of things, and an opportunity to learn about theoretical aspects I didn't know and be somewhat more efficient. All in all, CS trains you to think more mathematically and formally, but not to be a good programmer or a good sofware designer.
The best way to learn programming is to try things by yourself. I agree that you should experiment. Make your own pet projects. You don't always have to finish them, as long as you progress by learning from your mistakes, you're getting better. The more problems you face and overcome, the better you become at avoiding them in the future. In my opinion, being a programmer involves a great deal of intuition. Our mental capacity is somewhat limited, so we can't always be fully conscious about the entire product we are working on, but our intuition helps us get where we want to go, and this intuition can only be developed through practice.
Note that it is also a good idea to learn about design patterns, and what is generally considered "good OO practice". Most of these rules of thumb are made to help you avoid getting blocked by problems along the way.
My wife doesn't understand my coding hobby. After a solid 3 hour session she demands to see what I made with that time. Every time, "That's IT?!"
But, the point was, most of the code was maintenance work to build framework around the actual task. The more coding you do, the more you build up your own library of useful code bits that can be reused at a later time. Once you've reused some of your past code, you get a great sense of euphoria that your past work is paying off.
I have to agree with the quote on the first ten games. Things take time, so do what you can now and eventually work it to an appreciable level.
But, the point was, most of the code was maintenance work to build framework around the actual task. The more coding you do, the more you build up your own library of useful code bits that can be reused at a later time. Once you've reused some of your past code, you get a great sense of euphoria that your past work is paying off.
I have to agree with the quote on the first ten games. Things take time, so do what you can now and eventually work it to an appreciable level.
This may be an example of what is known as "Analysis Paralysis".
Generally, in all contextes not just programming, it is extremely frustrating to work at the limits of your knowledge.
The CS degree will not help much either other than making you practice a little bit. If your program is not demending much code from you, then a pet project is an good way to fill that critical void.
Generally, in all contextes not just programming, it is extremely frustrating to work at the limits of your knowledge.
Quote:
Original post by AdamWebb
Hi klayAlloy,
Your problem sounds a lot like my own. I know the in's and out's of programming languages, APIs and libraries but using them effectively involves a whole other set of skills.
I think it's something that has to be acquired through a Computer Science degree (or similiar). Learning good software design skills won't be easy through online tutorials and forums.
The CS degree will not help much either other than making you practice a little bit. If your program is not demending much code from you, then a pet project is an good way to fill that critical void.
Just look at some tetris code to see how some else done it. Good programmers copy each other and learn that way. It's impressive but not terribly efficient to write everything by yourself. Probably necessary in cave dweller times but in modern age we just research it before we code it up. It's not about beefing up your ego but about the problem at hand and how to solve it well in minimum time.
If you feel about programming as you do for some of your other hobbies then you'll be a good programmer because you'll care about it in ways that others don't. That's all that matters and small insignificant things as not knowing a particular solution at this time won't matter much in the greater scheme of things. Maybe you just need a little push. I have a nike shirt that says "Just do it!" and it means that you don't think about doing it but you just do it, imo.
Also, something that the above poster said. Schools won't teach you how to think. They can't open up your mind and insert a chip that will do it for you. Well maybe in 500 years they can :) You have to learn how to think by making mistakes and learning from them by writing lots of code. In school you get punished when you fail but on your own you get wisdom when you fail. That is weight in gold and pays lots of bucks in business world. You know something the others don't know and for them to know it they too must fail to realize it, and that's costly. So they hire people who have gone thru it and can thus save them time and thus money. I'm not saying you should fail purposely just that there is always something to glean from your mistakes that will make things clearer. If you can then take CS degree but know how to code and thus implement the theories. In anotherwords you shouldn't struggle with coding when you arrive at higher level CS classes. You should be beyond that and know how to solve most problems already. That only comes if you've been coding for a while.
If you feel about programming as you do for some of your other hobbies then you'll be a good programmer because you'll care about it in ways that others don't. That's all that matters and small insignificant things as not knowing a particular solution at this time won't matter much in the greater scheme of things. Maybe you just need a little push. I have a nike shirt that says "Just do it!" and it means that you don't think about doing it but you just do it, imo.
Also, something that the above poster said. Schools won't teach you how to think. They can't open up your mind and insert a chip that will do it for you. Well maybe in 500 years they can :) You have to learn how to think by making mistakes and learning from them by writing lots of code. In school you get punished when you fail but on your own you get wisdom when you fail. That is weight in gold and pays lots of bucks in business world. You know something the others don't know and for them to know it they too must fail to realize it, and that's costly. So they hire people who have gone thru it and can thus save them time and thus money. I'm not saying you should fail purposely just that there is always something to glean from your mistakes that will make things clearer. If you can then take CS degree but know how to code and thus implement the theories. In anotherwords you shouldn't struggle with coding when you arrive at higher level CS classes. You should be beyond that and know how to solve most problems already. That only comes if you've been coding for a while.
Topic Locked
This topic has been locked by a moderator. New replies are not allowed.
Sign in to reply to this topic.
Advertisement