views:

452

answers:

13

Possible Duplicate:
Is programming for the elite or can everybody learn to program

I'm really having trouble, and I would really appreciate some help.

I'm trying to teach myself how to program, and so far It's not sinking in. I have tried tutorials and followed books, but I can't seem to grasp the logic behind it. I stare at the programs and it seems so hard to follow. I'm not a dumb person, and I always thought I was quite a logical thinker, but I'm really starting to doubt this.

Are there basically just certain types of people who think the right way that can become software developers? I have read in a few books that anyone can learn it, but I think that's just trying to sell the book.

Should it be this hard or am I kidding myself?

+2  A: 

You are probably expecting too much of yourself too fast.

Start small, work your way up. I can promise you that with very simple programs, you won't get confused.

Only add to those / move on to more advanced projects once you feel you have a grasp for all the concepts in the small ones. Programming is something that takes many, many years to get even a moderate mastery of (and even then, it is only of a small subset of the total field).

Don't get frustrated, start small and work your way up.

FalconKick
A: 

It's a skill/talent, like anything else. I personally can't sing, draw or indeed drive a car. I don't think that makes me stupid. Maybe you are just not cut out to be a programmer, but there are many other options out there.

And contra to others here, I honestly believe that if you find programming difficult you should give up. all the great programmers and I would guess all the good ones find it very easy and natural. If you don't find it so, it is far better to direct your energies into a field which you are comfortable with, than to be a second-rate programmer - there are far too many of them around as it is.

anon
+2  A: 

What languages have you tried learning? Has anyone who knows how to program tried to teach you? Have you tried just writing something and forcing it to work? Sometimes programming (or anything else for that matter) doesn't come easily and you just need to work your butt off until you learn what you want to learn.

I'd try to find someone to talk to about your questions face to face first and then try to just make the example problems in your programming books work. People do go to college for this topic so it's often not always easy for everyone to learn.

I'd keep at it if you really want to learn it.

Jon
A: 

Just keep at it, Give youself a project to do and dont stop until the project is done. If you cant figure out how to do something, carry on figuring it out. You will get there, patterns will start forming.

Mark Redman
A: 

Yes, Programming is hard. It's especially hard when you start, it's hard when you have a difficult problem, it's hard when you have an obscure bug. So it should be this hard and your not stupid.

Learning from books right out can be difficult, it's best if your taught the basics in a more interactive way. You could try building small sites doing small features in PHP and move on from there.

What languages are you using? It could be your trying a language not suited to learning or something which requires learning multiple areas at once.

Damien
A: 

Do you understand it conceptually? I would pick something C-like (Java or C#) and do some very primitive command-line one-liners. Don't start with IDE especially one that would build all UI by moving building blocks. You have to grasp the idea that you can command computer by feeding in instructions, which what programs are (well compiled programs). Again - start with something very basic, and good luck! :)

DroidIn.net
A: 

IMO some people do have an advantage over others, but I think that even they could have some problems with new concepts. Sometimes they just need time to sink in.

Just follow some simple tutorials and try to understand the simple parts as they are explained. After you have the base bricks you can try to understand more complex programs.

Do you have a specific language you want to learn? If not I would recommend a scripting language, like Python, where you could run some commands and see the result rapidly.

rslite
+14  A: 
if (youUnderstandThisSyntax)
{
  // Keep going, you're doing fine.
  // Take concepts 1 step at a time.
}
else
{
  // Start simple. Look up what an if-statement is.
}
Will Eddins
+1 for making me smile.
Amber
A: 

Should it be this hard or am I kidding myself?

Yes. But don't despair!

When I first started programming, I ran into a lot of trouble with understanding how programs worked. Following control flow can be difficult, especially if it is someone else's program or you wrote it more than a couple months ago. There are many good diagrams you can use to map out a program - look up Process Diagrams or Class Diagrams.

My technique - "whack it, watch it, revert". Meaning, I change a variable, watch what happens, then (optionally) revert to how it was before. This helps me in understanding how a program operates, although it is admittedly a very neanderthal-ish approach.

Programming is a skill that takes time to develop. One professor I've had said this:

Learning to program is like learning to write French poetry without knowing any French or poetry. It is hard!

Again, don't despair! It is a very rewarding skill.

EDIT: My school encourages the use of easier to understand languages with little "boilerplate" programming, like Python, so you can start using pseudocode-like code that actually does things. Python is a good starter language, it is easy to start writing practical programs that you can actually use. Also, it's free (as in beer).

opierce
A: 

What you have to do is find the right corner of programming that interests you the most. When I first started, it was Text-Based Game Development. It shifted to Desktop Applications, Websites, and now I'm interested in Web Based Business Solutions.

Find what you like, and work with it. If you want to start simple, take a look at Python or Ruby, both are very neat, and easy to learn. You can actually try Ruby out in your browser here.

If you're interested in Web Development, learn JavaScript here. Once you have a good grasp of it, take a look at jQuery. It's powerful, beautiful, and easy to use.

There are certain people who are better at programming than others, but most anyone can pick it up if they spend enough time with it. Just be sure to make sure you're interested in what you're doing, otherwise you'll never want to learn, which is (in my opinion) very important.

Mike Trpcic
A: 

Think in small simple blocks. Programs are typically built out of a lot of these small simple blocks. Don't think about the program as a whole, but about each individual component and how it does its part and how it does it well.

Therefore do your learning the same way. Choose something that is interesting to you and think about how it is broken down into these smaller parts. Try making those small parts and then figure out how to connect them and make them work together.

I would recommend trying to create a simple game, such as tic tac toe. You'll have simple components such as a Board class (to keep track of which player has marked what box), strategy (how to make the next computer move), and some sort of visual interpretation (this can be as simple as printing out text!) etc. etc.

Bryan Denny
A: 

It's only easy to those who are either truly gifted or those who really work at it. Perhaps you aren't cut out for what you've been trying to learn. If you're learning on your own, you'll want to avoid C or C++ because there are complexities that will only frustrate you. Java, C#, or VB would be good procedural languages to start out with. However, if those are languages you've been trying and struggling with, try a functional language like Lisp or Erlang and see if those "work" for you. There are several developers out there where functional programming makes more sense to them (and vice versa).

Erlang is a functional programming language that could work for you. It's not simple (for me anyway) but it does abstract away a lot of the complexities and could help you "get it."

Austin Salonen
A: 

I'm not sure what language you are trying to learn, but I had the same issue when I started front-end web scripting. A programmer friend of mine suggested this book: http://domscripting.com/book/ It was the key for me.

I found that I could grasp the basic syntax, logic and concepts without touching a computer. After I read this book, I could understand what I was reading in several languages.

"Guard" is right. If you understand basic structure and syntax; AND you can repeat the code back to yourself in "psuedo-code" (plain speak line by line explanation of what the code will do) you are halfway there.

Lynda.com is also a very good resource. They have an affordable monthly subscription for $25 per month.

Good Luck :)