These days a lot of folks take the HTML route into programming. They start by fiddling with web pages, then add CSS, some Javascript and then building backend stuff. But this is a risky route to take. You might end up being just good enough to make a few bucks at it, pick up some PHP or Ruby on Rails, and drive yourself straight into a dead end.
None of this is really programming. Sure there is a bit of going through the motions, but you have all these frameworks supporting you, whether HTML or Rails or whatever, and you fail to get to the heart of the matter.
Far better to get a book like SICP (now freely downloadable) install one of the free Scheme packages out there and struggle through writing all of the code for all of the exercises in that book. It will be tought. You will suffer. And at the end you won't have much to show for it; i.e. no pretty websites. But you will have trained your mind to think the way programmers need to think. And you will also have learned to persist in the face of disappointment and failure because that is what programming is really all about.
Of course, there are more marketable languages like C# and Java and it is definitely worth while to work through exercises from a good book in a similar manner, but you won't get as good an education as someone who pushes through SICP. Those of us who learned programming in an imperative language like Java, are now either in a stagnant rut adding features to big balls of mud that hang like chains around the neck of our employer or else we are slowly pushing our way along the path blazed by SICP.
If you already know a bit of programming in any language, you could also take Functional Programming in Scala followed by Reactive Programming at Coursera. They run these courses a couple of times a year and they are good. SICP is recommended reading for this course even though the language is completely different. True programming is all about mathematics and using it to solve problems in a simple way. You need to understand functions, sets, boolean logic, lambda calculus, algebra, category theory in order to truly excel. Mathematics is something that you build inside your head and something that you can apply to any programming language or platform.
By the way, most CS degrees do not teach this. If you find a school that DOES teach this, then by all means, get the degree if you can afford it. But too many schools leave the real stuff for the Masters and Doctorate level folks. If you self-learn, like I did, then you can do better. But you better be prepared to work real hard because most of the time there is no course to keep you on track. Learn every day without fail and you will get there.
None of this is really programming. Sure there is a bit of going through the motions, but you have all these frameworks supporting you, whether HTML or Rails or whatever, and you fail to get to the heart of the matter.
Far better to get a book like SICP (now freely downloadable) install one of the free Scheme packages out there and struggle through writing all of the code for all of the exercises in that book. It will be tought. You will suffer. And at the end you won't have much to show for it; i.e. no pretty websites. But you will have trained your mind to think the way programmers need to think. And you will also have learned to persist in the face of disappointment and failure because that is what programming is really all about.
Of course, there are more marketable languages like C# and Java and it is definitely worth while to work through exercises from a good book in a similar manner, but you won't get as good an education as someone who pushes through SICP. Those of us who learned programming in an imperative language like Java, are now either in a stagnant rut adding features to big balls of mud that hang like chains around the neck of our employer or else we are slowly pushing our way along the path blazed by SICP.
If you already know a bit of programming in any language, you could also take Functional Programming in Scala followed by Reactive Programming at Coursera. They run these courses a couple of times a year and they are good. SICP is recommended reading for this course even though the language is completely different. True programming is all about mathematics and using it to solve problems in a simple way. You need to understand functions, sets, boolean logic, lambda calculus, algebra, category theory in order to truly excel. Mathematics is something that you build inside your head and something that you can apply to any programming language or platform.
By the way, most CS degrees do not teach this. If you find a school that DOES teach this, then by all means, get the degree if you can afford it. But too many schools leave the real stuff for the Masters and Doctorate level folks. If you self-learn, like I did, then you can do better. But you better be prepared to work real hard because most of the time there is no course to keep you on track. Learn every day without fail and you will get there.