Been learning to program. Woohoo! Previously I spent considerable time learning *about* programming, particularly the pro's & con's of the various languages (.. something I enjoyed). Now however, I'm focused on learning the actual nuts-n-bolts of coding. Very different experience. More so than I would've imagined.
Something shifted today. Programming used to seem like something done at a desk 10-steps away (so to speak) .. by others, at a distance. Today it became something done here on my laptop.
I can now see what others meant when they suggested I 'just start' .. no matter what language I happened to choose.
Seems many of the initial concepts introduced to the aspiring programmer (such as data types & logical operators) apply to most programming languages. So learning these concepts is what's really important .. more than the syntactic details of any particular language.
Also seems like I was always searching for a conceptual framework upon which to begin learning a language. Hooks upon which to hang the things I would learn. A file system into which I could deposit & organize this information.
Finally found that 'framework' in (I'm almost embarrassed to say) » a 'Dummies' book (of all places), where the author asserted that programming was similar to writing a recipe, where you document the various steps required to fix your favorite dish.
That made sense to me. It was something I could relate to. Moreover it marked the point at which I quit learning 'about' programming & programming languages and began to actually focus on learning the nuts-n-bolts of a particular language.
Programming as a recipe. The recipe paradigm. Simple concept. Simple usually works best. (For the novice.)
Many courses and books use the 'don't-be-limited-by-the-programs-others-write' argument as their reason for learning computer programming. But that approach never really resonated with me. I never felt limited by the programs written by others, seeing there are so many good ones to choose from.
Another hurdle I had to get over was » WHY. Why do I want to spend my limited time learning to program? .. especially when there are so many other cool things I could be learning. (The question of » priorities.)
For me, PHP answered that question best .. since it's a web-specific language, and web-stuff is what I do (here with this site). In other words, I'd be able to apply these skills sooner rather than later. (Quicker gratification.) Something I wasn't getting from Scheme.
I've long felt that digital technology (the manipulation of bits-n-bytes), in conjunction with the Internet, represents the future, and those who seek entrée into that future need to learn to wield digital tools .. the most powerful of which being the ability to program. So here we are. Better late than never, right?
Another contributing factor was the surge of encouragement that came last summer, when I learned how to use the Linux shell (bash), which has allowed me to administer the site far more efficiently. Things that used to take a good chunk of my day (such as upgrading Movable Type, which I did yesterday) I now do in minutes from the command-line. So easy, in fact, that it no longer seems worth mentioning.
Lastly, there's a big difference, I've noticed, between watching someone teach programming and actually writing the code myself. I don't feel comfortable with the material covered until I've actually written the code for myself.
For a programming environment, I've been using Aptana Studio (which I call 'the orange ball program'). I like it a lot. Works well for me. Very stable. (And free!) Based on Eclipse. I tried several others, but I like Aptana the best.
Learning to program feels like building with legos » something done one small piece at a time. Progress isn't nearly quick as I'd like, but consistent. Now, when I look at code, I actually have a decent idea of what's going on. Pretty cool. =)
For more along these lines, here's a oogle search for the query » learn computer programming language