Sign in to follow this  
Marchosias

Programming: Is it within reach for me?

Recommended Posts

Marchosias    122
I've been trying to learn C# since 2005, trying to program applications and games, but it doesn't seem I am progressing at all. My question is: Should I give up? Or should I continue and keep wasting my time? On weekends I usually spend 12 hours on a single day, trying to learn from books and experimenting, yes I'm seeing no progress. I'm still not able to make anything I couldn't have made when I opened my first C# book. It's really frustrating, what's stopping me? Why can't I advance? Do I have a learning disability? Is this a common problem for people who are trying to be self-taught? One of my problems is, I can read entire page and then when it comes time to answer the questions for that chapter, I don't know them. I can look them up in the book, but then I forget them right afterwards. Are some people incapable of being programmers? Would it help if I tried a different language?

Share this post


Link to post
Share on other sites
TheMimic    133
Hi. I'm a completely self taught programmer as well. I've experienced your same problems. The key is practice. You can read all you want and you can copy examples from your book and compile but the only way to truly learn is to start and complete original projects(even as simple as hangman, tic-tac-toe, or guess the number).

Its easy to think programming is harder than it really is when you are first learning. Just open a blank source file and start writing code and you'll find that it isn't all that hard. Keep at it and before you know it you will have a completed project and a deeper understanding of programming.

Share this post


Link to post
Share on other sites
jyk    2094
A couple of things:

1. Programming is more about knowing where to look for answers than it is about memorizing things, so just because you can't recall this or that fact doesn't necessarily mean you won't be able to program effectively. Of course things are going to be a bit slow for you if you have to look up the syntax for a 'for' loop each time you need to write one, but as for more complex stuff, don't be afraid to use references when necessary.

2. You didn't really specify what sort of problems you're running into. Perhaps you could try to write a simple but complete game - say, a text-based 'guess the number' game. If you find you can't do it, post your attempt here along with a description of the problem you're having. If on the other hand you are able to do it, move on to something a little more complex, say, Hangman. If at some point you run into something that hangs you up (say, incorporating graphics or whatever), you can then seek help on that particular topic.

Share this post


Link to post
Share on other sites
instinKt    149
I think what you're experiencing is very common to everyone. I know I've at least had the same problem. I distinctly remember years ago reading through a visual c++ book. I could read through the chapters and code the examples just fine, but I found whenever I tried to go out on my own I would have to come back to the book to try and remember how something was done, and before I knew it I was just copying example code once again.

First, continuing depends on how much you really want to code. If you're not enjoying it and feel you're wasting your time then I would suggest moving on to something you enjoy more and fell would get you more out of your time. However, if you really do want to continue and learn programming then it is defiantly not out of your reach. It all depends on how determined you are.

Noticable progress will show up eventually, but just keep at it. Keep your head in books, keep talking to other coders, keep experimenting with your own code even if it always seems broken. The key is to keep your brain ticking over in the subject. You will learn things, even if you don't notice it at first.

Share this post


Link to post
Share on other sites
What jyk described is actually what I am doing now. I am attempting to make a graphics library to the best of my C++ abilities right now. Obviously, I'm not going to be able to do it right away, with no problems. It happens. So I post here for help, see what others find, learn from their teaching, and incorporate learned material in further work.

Try as such people have described, you might be surprised at how well it works! ;)

FlyingIsFun1217

Share this post


Link to post
Share on other sites
lord_balron    100
I've been programming for ~4 years now, and I am just beginning to see how to solve a problem and put it into a program. All I can say is that TheMimic is right, it takes practice. You'll get it, 'til then, keep programming!

Share this post


Link to post
Share on other sites
Corrob    126
I recommend you keep at it and you will achieve it. Programming takes lots of time but if you keep at it you will get it.

P.S. Check your PM messages.

Corrob

Share this post


Link to post
Share on other sites
DinGY    204
Look like everyone have already mentioned everything except this one. You could play around with source code. Download some simple source code project and examine the code. If there are anything you cannot understand, you can ask in here. You might remove some lines of the code and test whether there are any effect to the project. I'm sure you will not only learn programming, but also learn the good habit programming and new technique from the source code. ^_^ Good Luck!

Share this post


Link to post
Share on other sites
Farraj    152
Don’t be discouraged. You haven’t even started yet.

Programming isn’t hard. It’s like everything else; it just needs time to get used to. The problem is, depending on the subject, it may take a long time. So what if you’ve be learning for like what, 3 years? You haven’t reached that much level yet, so don’t worry if you feel you don’t understand a few things no matter how basic they seem.

And you can never be an all-knowing programmer. There are professional programmers with 20+ years of experience under their belt and still learn new things everyday.

My advice is (you already know this I think) get a book, s simple book. Use that book to ‘learn’ programming, then practice (a lot) to ‘understand’ it. And if you get stuck on anything, come back here and we’ll give you a hand :)

I’ll give you a year before you forget why you even posted this topic :P

Good luck, and cheers.

Share this post


Link to post
Share on other sites
Telastyn    3777
Quote:
Original post by Marchosias
I've been trying to learn C# since 2005, trying to program applications and games, but it doesn't seem I am progressing at all.


Good. C# is a good language, and it's good that you're taking appraisal of your own progress. Though you might be trying to work on applications and games before you're ready. Usually people send a good amount of time working on little tidbits smaller than proper applications to get a good grasp of the language, the topic they're focusing on, and most importantly program design skills.

Quote:

My question is: Should I give up? Or should I continue and keep wasting my time?


Well wasting your time is just kinda dumb. You might want to give up, but I don't think anyone here will learn enough to answer for sure. Most likely you just need to re-target your learning; perhaps changing some habits to be better for you.

Quote:

On weekends I usually spend 12 hours on a single day, trying to learn from books and experimenting, yes I'm seeing no progress.


12 hours? Yikes. I know I can't learn for more than maybe 2 hours at a time before I need a long break to process it. I can't code for more than 4 or so without becoming fatigued and getting sloppy. Are you taking enough breaks? Do you pay attention to your own capabilities so you know when to just put it down for the day?

Quote:

I'm still not able to make anything I couldn't have made when I opened my first C# book.


After a point, you don't learn how to make new things so much as you learn to make them better, track down bugs faster, understand where you can improve things, and generally write more solid code.

Quote:

It's really frustrating, what's stopping me? Why can't I advance?


Most commonly in these situations it's because you're trying to do too much too soon. Without knowing more, it's hard to say.

Quote:

Do I have a learning disability? Is this a common problem for people who are trying to be self-taught?


It's not unheard-of.

Yeah, it's pretty common for anyone learning to think that they'll be able to knock out some 'simple' stuff in a very short time, failing to understand how complex even that is. It's also pretty common for beginners to get ahead of themselves and have trouble learning because they don't have a good foundation to learn off of.

Quote:

One of my problems is, I can read entire page and then when it comes time to answer the questions for that chapter, I don't know them. I can look them up in the book, but then I forget them right afterwards.


Which is perhaps a symptom of trying to learn while fatigued. Though jyk's point is also quite valid.

Quote:

Are some people incapable of being programmers?
Would it help if I tried a different language?


Sure, just like anything else, people will have aptitude for programming or not.
No, C# is a fine language and I suspect your problems are either with your learning process or with program design not with syntax.

Share this post


Link to post
Share on other sites
ildave1    561
I actually got into programming back in 2005 as well (Java, C++). It has been slow, and I have given thought to quitting in the past, but I love the challenge of becoming a programmer -- so I haven't.

Up until now, I've finished two small games, worked on a school project, worked as a beta tester for a few other projects, and am currently working on another fun project.

Oh, did I mention I have a Learning Disability (slow to learn)? Yep, It's true. I experience your problems on a daily basis. I've come to understand that, for me, being a programmer is knowing how to use my resources to solve a problem. I can't rely on memorizing everything, or that much of anything, so I focus on keeping track of great sources of information.

If I could recommend to you one word that you should cherish is: Persistence.

Push through those hard times where you don't feel like you are getting anywhere. Try, and when you fail, try again. Don't be afraid to ask for help.

One thing that you should be aware of is how much you are trying to do. You need to crawl before you walk. So be sure you are not trying to work in 3D, or 2D, if you have NEVER done anything with the console. Create a console based game (tic-tac-toe, a very small text-based RPG, etc). Then move into 2D until you feel comfortable solving 2D problems. And then move into 3D.

Above all, though, you need to ask yourself if you really want to be a programmer. If the answer is yes, then get back to work.

Good luck

Share this post


Link to post
Share on other sites
Amazing_00    122
I don't mean to high jack the OP's thread, but I have recently been interested in learning how to program. Plan to buy a few books first before I really try and learn(been reading online guides so far). But one question for all those who have responded, are you good/great in math before you started? I think that's the only thing that will stop me.

Share this post


Link to post
Share on other sites
ildave1    561
Quote:
Original post by Amazing_00
... are you good/great in math before you started?


No.

You just need to be willing to learn it when you need to. Right now I have began to study some math that will give me ready for when I start tackling 3D next year.

Share this post


Link to post
Share on other sites
Thoover    134
take this from me yes it is in reach, im not the smartest one, but all you need to program nowdays is GOOGLE here ill give u a link =] trust me google is great so far i never compleated a full project, dont feel like it, if ur like that then maybe just little off im about to finish one project just 1000 lines or so to go...

Share this post


Link to post
Share on other sites
Shiny    456
I feel I should chip in. You mentioned you spend a lot of time working on this stuff on the weekends -- I can tell you straight out now that if you only program 'once a week' and hope to recall stuff next week when you start up again...you'll fail time and again. It will become tedious, frustrating and upsetting. Ever play Doom or Quake? Semi-legendary developer John Carmack was instrumental in the programming of those titles (and more recent ones, google him if you don't believe me :P ) -- and I believe he said at some point (Quakecon 2006 speech iirc -- may be wrong, don't sue me :P ) that in order to become a good programmer he wrote some code every day.

Now, you can take this a few ways -- what he's getting at is that repetition of certain tasks will result in those tasks becoming second nature to you. Like a karate student has to practice for ages to get good -- so too must a programmer. Trick is though, you can't just sit down and practice for ages -- karate student has to rest or his muscles will stop working; programmer must rest or the brain will not be able to process all of the stuff it's been working on. Hence, my advice is to attempt to do -some- programming every day. Set yourself some sort of goal as the others have suggested, and try and do a bit of it each day -- just sit down and write some code; doesn't have to be the most efficient, doesn't have to be the most succinct (these things will come later as you become more proficient); what is important is that you write something that does something -- practice making perfect :)

Final warning; I, like many -- have to be 'in the zone' to be able to program productively. This is because when you're programming something non-trivial it takes a while to get all the stuff you're manipulating and using (variables, their values, how some algorithm is meant to work versus how it -is- working etc) into your brain in such a way that you can then work productively. For example, if you don't touch a project for weeks -- and then you decide to improve something -- it is not very efficient if you have to keep looking up what some function does before you use it. If you have some function like foo() and you -know- what is inside without thinking, you can become very productive :)


Guess the moral of the story is, code often and set realistic goals -- while observing pragmatic things like being 'in the zone'. Oh and if you haven't noticed it yet -- check out the C# workshop that some GD.net folk set up -- sounds like it might be useful for you.

hth,

~Shiny

Share this post


Link to post
Share on other sites
Ezbez    1164
Does your school (if you're in one) have any programming classes you can take? Maybe you should try one. It would certainly be a different approach to learning that might work better for you.

Share this post


Link to post
Share on other sites
Rombethor    122
Sounds to me like you've been practicing too hard and not getting enough sleep =P I find it hard to learn when i'm tired...
You could try reading the pages slower and finding ways to remember the answers, or you could find someone to teach you, whether a class or private mentor.
Remember, if you give up, you'll never get there ;)

Share this post


Link to post
Share on other sites
jbadams    25677
I'll chip in as well here, although at this stage a fair bit of what I have to say is reiterating some of the advice above. If you want to be a programmer (it sounds like you do, given the hours you say you're putting in) then no, you shouldn't give up, but rather might want to try examining your habits and learning strategies and looking for potential improvements.

Make sure you're taking enough breaks, and are properly fed and hydrated. You will not be able to concentrate properly if you are tired, hungry or overly thirsty. You'll need to put in some good solid blocks of time, but don't make them too long or you won't get the benefit. Exactly how much time is appropriate for a learning or coding session is different from person to person, so you'll need to experiment to find what is appropriate for you; just keep in mind that more time is not always better.

Practice what you're reading about rather than simply reading through your books or other reference material. Type out and compile any sample code or example programs and have a play with them, and get help solving any problems you encounter. You can also test your understanding of the samples by picking a small change to make, trying to figure out what will happen, and then actually trying it out to see if you're correct: if you are correct then you probably understand properly, and if you aren't then you've got the opportunity to learn something by finding out why you were wrong. It's often good practice to actually work on the problems in your book as you're reading it rather than reading a whole chapter and then attempting to solve the problems.

You should also be experimenting with your own (very) simple programs to try out the things you're learning. Writing small programs will probably feel a bit silly, and they certainly won't be anything that will impress others, but there really is no substitute for actual practice at writing programs.

Don't be afraid to rely on reference material. A good programmer won't remember everything, but rather develops the important skill of learning to find out what they need to know efficiently when they need to know it. Use your books, and learn to use Google to help find answers to your problems. If you can't remember something, look it up and keep working - eventually you'll find you're looking up harder and more complex things, and that you're starting to remember more of the basics you used to have trouble with.

Ask for help when you need it. You should try to solve your problems yourself, and it's an excellent learning experience to do some research and find your own solutions to difficulties, but if you're stuck it's much better to have someone lend a hand or offer some pointers than to just give up. Always post the error text of any errors you're having, and try to explain what the problem is and what you've done to try solving it, you'll find that the majority of experienced programmers are quite happy to help out a beginner as long as they appear willing to learn.


Hope that helps. [smile]

Share this post


Link to post
Share on other sites
jbadams    25677
Quote:
Original post by Amazing_00
are you good/great in math before you started?
I was terrible at math in school, largely due to never being interested enough to really pay much attention or practice, but I've been able to pick up what I need whenever I need to do anything mathematical. You'd be surprised at what you can achieve with only a very basic understanding of math and enough ability to read and understand (if only temporarily to implement it) explanations of more advanced techniques. As ildave has said, all you need is the willingness to learn what you need when neccesary.

Share this post


Link to post
Share on other sites
soulcast    100
If programming is something you REALLY want to do then keep at it, don't let a challenge beat you, after all, life is about challenges.

The best way to start anything is to start small, start off with C# console programming first, learn how to write 'Hello,World!', then progress from there, as many have said, do a little bit each day, don't try and do too much otherwise it can become overwhelming.

I believe 12 hours each weekend is too much and obviously you are finding that out, so spend perhaps one hour per day, learning a new keyword from one of the many C# libraries, after a week, you will have learned 7 keywords :) hence, you will start to see progress and your confidence will increase.

The way I learn is very visual, i.e. if I can't 'imagine' something in my mind then it won't make sense, and it's taken me a few years to really figure out HOW I learn.

for example:

Instead of trying to 'memorize' code, try and 'understand' it by using your imagination.

take 'class' - I imagine a workplace with employees, so basically an office room.

member method - I imagine a room with loads of employees, each have a specific
role to play within that workplace i.e. within the class, each person has a role to play within a company to make it work!

member variable - a variable is a storage location, so I imagine, a filing cabinet that stores paper work! and everytime you want a file you have to 'call' or open a draw to get it out.

although this probably isnt the best example, this is how I learn, I try and use memory tags, otherwise things just dont really make sense to me,also I need a 'reason' to learn something otherwise I find learning something pointless and tedious, so you may want to dig deep and figure out WHY you want to learn programming?

Just keep at it!






Share this post


Link to post
Share on other sites
Antheus    2409
Quote:
One of my problems is, I can read entire page and then when it comes time to answer the questions for that chapter, I don't know them. I can look them up in the book, but then I forget them right afterwards.


Have you tried to do something? Not copy paste stuff from the book, but think of a problem, a task and then solving it, using books only as a reference?

Writing code is a process in which you take a task, then keep breaking it down until you end up with lots of small problems, which you can express in code.

It's about putting things into practice.

Share this post


Link to post
Share on other sites
Spoonbender    1258
Ok, apart from repeating what all the others have said (Primarily do the exercises, put things into practice, write simple text-based applications to try out what you learn), I do have one point where I disagree with some of the above

Quote:
No, C# is a fine language and I suspect your problems are either with your learning process or with program design not with syntax.

Switching language might be helpful in some ways.
I've occasionally found it a nice change of perspective. If you really get stuck on "how the hell would I do this in C#", or "I don't understand what this language feature is for", it might be worthwhile to try another language for a while, simply as a way to approach the problems from a different angle.

It's no magic bullet though, and obviously switching to a new language every time you run into problems (which, for most programmers, will probably be once or twice a day) isn't a solution, but sometimes it can aid in understanding.

And yeah, as the others have said, it'd be nice if you could post a bit more info about what you're trying to do. It's very common to jump directly at the fancy 3d graphics for your next-next-gen MMO, when in reality, dealing with *any* kind of graphics is just a source of confusion you don't need.

Share this post


Link to post
Share on other sites
nb    172
bottom-line is that if what you are reading is of no interest or relevance to something you actually want to achieve then chances are you will just look over the text with bleary eyes and no particular understanding of what is going on.

as has been mentioned it's more about knowing how to find answers to things you know should be able to be done, but you just aren't sure of the procedure / syntax / whatever. the f1 key is truly your friend, and then google if f1 is out on a date and can't answer your question.

don't just read and answer boring book questions... do something. code something. ANYTHING. make a program that reads in a file and reverses the spelling of each word, or a program that will 'encrypt' text and can also 'decrypt' it, or make a 2d clockface, or a dot that chases after your mouse cursor (or runs away from). do something that seems interesting to you and learn as you go.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this