I've been coding for a long time. Sometimes I've programmed. From time to time, I've even actually developed... ;P
My suggestions are these:
1) "Code" by Chuck Petzold (Microsoft Press) -- make it your new bible for a few weeks. Read it, reread it, memorize it. Somehow this book never got the following it deserved, and that's a shame. Everything you need to build on is in it. And you can get a used copy on Amazon for a few bucks (even IF the publisher is Microsoft Press, hah).
2a) Decide what platform you want to start on. Basically, unix-based or win32-based. This'll probably heavily impact (2b).
2b) Decide if you want to start learning based on procedural languages or object-oriented languages. Procedural would be, for instance, C -- and there are benefits to learning procedural over OOP to start at, as well as disadvantages. A lot of scripting languages are combinations of procedural and object-oriented, to varying degrees. Bear that in mind too.
2c) Do a bit of looking around and decide what language you want to work on. From there you can decide what specific OS you want to learn on (some tools work better on some OSes than others, and some languages only have ports to some OSes, though this is probably less a concern now than it would have been, say, ten or fifteen years ago).
3) Set up your platform and pick a good set of development tools, including probably an IDE, although I suggest you just start off with a good code editor (with plugins if you prefer). You're *probably* better off staying away from Visual Studio and the Borland Delphi/Builder IDEs until you have toyed with the basics of the languages in question -- largely because they throw extra code in there that can be very confusing unless you know the language(s) in question. 'Hello World' can be a few lines in C and a hundred lines (plus) in a microsoft ide-coded app. If it applies you might want to consider something like komodo (for the more script-oriented languages, especially). Get some good debugging stuff. IDA Pro, SoftIce, OllyDebugger, the sysinternals tools -- all good places to start. If you *do* wind up going with Visual Studio, I've got to say, the debugger in it is actually pretty darned good -- but then you have to worry about learning how to use the debugger!
[Have I mentioned how much I believe that any new programmer should really start with one language and platform instead of spreading him/herself... ? Otherwise you'll be like an English-speaker learning Russian, Swahili, Mandarin, Spanish, Arabic, Italian, Portuguese, Czech, Cantonese and so on, all at once: Some languages are more akin to other languages than others, and it can be hella confusing -- and you'll almost definitely find yourself trying to mix and match them with occasionally disastrous results. Even C & C++ can be confusing to learn at the same time (even the simplest things, like printf & sprintf vs cout -- and oh yeah, perl has a version of printf of its own, too. See what I mean?)]
4) Pick a few books. Obviously my suggestions are going to vary based on the language(s) you choose and the platform(s) you want to work on. Let me know what you decide on and I'm sure I can make some good suggestions -- as I am sure other people on here can as well. Generally, you could do worse than the 'by Example' series and the 'for Dummies' books. [Slap a bookcover on em if their titles embarass you. Some of the best coders I know screwed around with C for Dummies -- its coverage of sorts, arrays, hashes and the like may be some of the most clearly explained I've seen.]
5) Don't overextend yourself, when you're starting out. Yes, it's *great* to have a project in mind, but as Lincoln wrote, if you only have an hour to chop down a tree, spend the first 45 minutes sharpening the axe.
The important thing, once you have some programming done, is to learn how to pick the right languages for the application you want to develop --- or even the simple 5-line script. But that comes next
I'm sure I've left out a lot of things, but this seems like a good place to end my posting. Let me know how it comes along.
You seem sharp enough (if, from what I've seen, occasionally impatient -- and be careful, impatience can be a bitch when you're debugging
). I'm sure you'll learn fairly fast. But everybody's timeline is *quite* different. With the books and tools out there these days you will no doubt have an advantage, time and resource-wise, over those of us who learned 2-3 decades (and more) ago. When we were your age, we had to walk 25 miles to school in blizzards, uphills both ways, and all that.
Edited by Abhayaa, 22 July 2007 - 04:23 PM.