tags:

views:

626

answers:

13

What is the easiest way to learn computer programming?

Can anyone suggest some books that would help?

+2  A: 

This was the first thing I could think of: Link

Simon Brown
+3  A: 

Learn to program

I have been programming for more than 20 years and found this book really interesting.

hectorsq
+4  A: 

I'm not sure what your situation is but I can give you an idea of my background and how I got into it (A history of the past like 15 or 16 years).

When I was in Jr. High I got a Mac Plus for Christmas one year. It came from some engineer and he had some cool programs on it: HyperCard and Basic were my favorites. You can kind of imagine HyperCard as being a kind of pre-web web-like programming environment. You could draw lil power point like slides with graphics and then script them. So I made a point and click adventure and got some cheesy animation working. I then coded a text based Jurassic Park game in basic. None of this was terribly complex but it got me dabbling in programming and helped me learn about basic if-then structure.

In high school I made programs for the TI-82 graphing calculators. Nothing fancy, I wasn't one of those doing tetris clones or anything, but I made some programs to help me in my math classes.

One of my first jobs out of high school was in customer service at AT&T Wireless. While I was there I was always trying to make something cool in Excel to show off to people so I could get some attention and get off those damn phones. The first thing I made in Excel that garnered attention was a supply ordering system that used an Excel spreadsheet located on a network share as a database (haha I hate when people do that now). I wrote the whole thing in VBA and created win forms inside of the Excel program to make the program look more like a real program. It even had some cheesy encryption to prevent anyone from circumventing my forms and just fiddling with the Excel data itself.

That led to one of the supervisors securing me access to one of the local Cold Fusion web servers and DB's so that I could port my Excel app to the web. I hated HTML. Absolutely hated it. I forced myself to play with it and got the project done. Won a trip to Hawaii for it.

Finally I left AT&T because I wasn't going anywhere (I had been promoted to internal tech support but after four years of being there that wasn't quite enough). I found a web developer job at a super small company getting paid a pittance (like 28k or something). While there I had began to learn C# (I bought the Deitel & Deitel C# book in a moment of ambition). I chose C# because I naively thought it was just the next version of C++ and because I saw a lot of jobs for it. SO after a few months of working at this small company, I found a C# gig at a company with like a thousand employees and the rest as they say is history.

(Oh yeah, somewhere in there I also took a C++ class at a local community college)

I've continued that pattern of self-driven learning throughout my career and it's made me very successful at what I do. I'm now moving into more computer science oriented learning and my career is changing to reflect that. Just dig your heels in and learn by doing projects you enjoy all the while and your career will always be on the rise.

Justin Bozonier
+1  A: 

There is a related question, with many useful material here

Decio Lira
+1  A: 

In my view you should not really learn computer programming for the sake of learning computer programming. Try to find a small project that you want done and then just learn about the things you need for completing that project (language, technology, etc.).

If you already know the area (for example "I want to learn C programming") this is even better, pick a project in that area and try to learn everything you need to complete the project.

This is because the computer programming domain is very very large (you can do a lot of stuff from web applications to mouse drivers) and you probably don't want to waste your time on learning something that you won't use.

Dan Cristoloveanu
+2  A: 

The way I began to learn programming was to find a simple program and change it to do something slightly different. Just experiment a bit... If you break it, undo your changes and figure out why they broke it.

Greg
A: 

Read "C Programming: A Modern Approach", by K. N. King (or a comparable book) and follow along in a programming environment.

I don't even program in C anymore, but all the fundamental concepts of programming that I still use to this day I know thanks to that book.

Matias Nino
A: 

Several different ways come to mind. One is to an application that you really like and see if you can create a subset of the features. It may seem like a lot, but it will focus you toward finding resources and maybe even a few simple references as to how something was done. From this exercise you'll pick up vocabulary and concepts that you'll have to further understand and develop as you progress.

Another way to create batch command / utilities/ macros that will automate functions on your system. This will introduce you to the concept of variables, commands, logic, etc. There are plenty of examples that you can draw from. This approach may have a more immediate gratification for you as the scope or level of difficulty will be more finite and you'll produce results more quickly.

Finally, you can start with some books that discuss networks, computers, scripting and programming that are for a general audience. The Cookoo's Egg by Clifford Stole is a really engaging book that can lead to more in depth interests. It's a good starter that can introduce to many different concepts that are still important to understanding systems even today.

David Robbins
+2  A: 
Gary Willoughby
+1  A: 
mdm
+1 for the tip on example programs... the whole point is to type them in change them, break them, fix them again... that way you actually understand what's the code is doing
Hamish Smith
A: 

First off, pick a project where you have expectations set by another person. Find a co-worker, family member, or friend that needs an program to do some simple task. This way you can't easily get the good old "side project slump" and never go through the critical last 10% off the development cycle.

Its really important to reach a place where users are finding bugs and experiencing usability issues. Everything before that could be considered fluff because your only goals are to satisfy yourself and not the main consumers of your programming work. Once you have to start dealing with usability issues and maintainability its when you really start learning things.

Second, read the Pragmatic Programmer and the Mythical Man Month. Both of these books can be grokked by non-programmers and help teach you how to learn rather than what to learn. Focus on good practices all the time rather than a specific language syntax or framework. One language's "if" conditional works just like another's but learning how to develop programs responsibly and effectively is what makes you a good programmer.

jfar
A: 

The Pragmatic Programmers series has, in my opinion, very good introductory books for beginners on various topics. You might want to have a look at Learn to Program Using Ruby.

Lernkurve
+1  A: 

Try Python. Download ActivePython and use "How to Think Like a Computer Scientist", a free e-book that explains things well for a beginner. Python is known for having an easy to read syntax.

Also, go to Try Ruby, which will give you a walkthrough on how to use some basic features in Ruby without requiring any knowledge coming in.

jle