Originally Posted by
timebomb
I dug into source code I wanted to change. I tinkered with out, figured out what made it tick. That's how I started learning, but it was really quite backwards. I should have started with the basics of a lower level language rather than digging into a higher level language.
The.. problem, if you will, with that notion is that many people want to program just to make/change things. And that's great - good software engineers are creative - but it's not how you should start learning.
My piece of advice: Remember that basic concepts are more important than remembering syntax and APIs. It's good to know syntax and which function does what, but if you don't know exactly what it means and how it works, then you're not doing yourself much good.
This is why I pressure people to learn a low level language like C before digging into Java, C#, PHP or whatever.
Oh, and for the record, PHP sucks. It works, and works quite well, but the language itself is horrendous. That doesn't mean it won't work fine for small or very large applications, but it does mean that it smells really bad. I say this with several years of PHP experience. I consider myself an expert in PHP - I am more comfortable with it than any other language. I'm working on getting more comfortable with some more sane languages, though.
I'm currently teaching myself C, Python, and Javascript. (Spencer's helping quite a bit w/ Javascript :):.)
Many people will find that they don't need to take classes to learn programming languages. If you're passionate and a good researcher, there's nothing wrong with learning using resources you find online. Tutorials, manuals, forums like these, videos, and even free online courses - all quite beneficial. I'd just warn you not to take a single person's opinion to the grave. Make sure you get information from multiple resources.