some of the best ways to learn programming
If you focus on building the habit of programming for 20-30 hours a week, you will reach your goal of being a web developer. If you focus on the goal of being a web developer in X months, you get nothing from that but stress and insecurity about how far along you are. Focus on the habit, not the goal. Rub your chest, your arms will take care of themselves.
So here's what you should do right now: put 15 minutes a day on your calendar to spend time programming. Don't do more than 15, just focus on doing 15 minutes a day. If you can do it successfully with no excuses for a week, try bumping it up to 20 minutes a day. Don't try to overextend yourself by doing an hour a day right off the bat, this is going to be a 10,000 hour marathon so we're focusing on developing the habit right now. The number of minutes you put in isn't as important as you showing up each day.
- Learning alone is painful
When I was learning web development, the two biggest social components to my learning were having a mentor and belonging to a community.
Having a mentor
I worked at a small startup called merge.fm while in college. I learned more in the summer I spent working with one of their cofounders than I did in the entire previous year at my university. There's just something about working alongside an expert who knows more than you that really accelerates your learning, you're able to pick up on how they think and unveil what you don't know you don't know. There's a reason why mentorship used to be the de facto standard of learning a new trade, it's very effective.
Belonging to a community
For me, the two communities I belonged to were the Illini Entrepreneurship Network (a student organization at my university) and HackerNews (a large hacker/startup oriented online community).
I didn't learn what objects and classes were from HackerNews, but I learned a different category of things. I learned that nobody likes Javascript. I learned that Rubyists are the hipsters of programming. I learned that Bret Taylor, Rich Hickey, and John Carmack are programming gods, and that software companies that are truly serious about coffee have kitchens that look like meth labs.
In short, I learned how to talk shop. That turns out to be important when you're working with other developers, but it's also the thing that makes you feel like a developer.
- Build things
In the first year of learning web development, I built:
A Digg Clone (from a Sitepoint book on Rails, I believe it's out of date now though)
An E-Commerce App (from Agile Web Development with Rails 4)
A GeekSquad-esque App (personal project)
A Realtime, Online Classroom (personal project)
A Foreign Language Flashcard App (class project)
I think building real projects is important for many reasons, but the most important one to me is because it's fun. That's something that is tragically lost in classical education, but I think it's important enough to be on this list. Look for resources that show you how to build things, http://ruby.railstutorial.org/ is a good one.
- Be a cockroach
I secretly added a 4th item for those of you who've stuck around to read this far down the page.
Paul Graham once told the founders of Airbnb:
"You guys won’t die, you’re like cockroaches."
You'll probably want to quit learning how to code at some point. Like anything worthwhile, it's difficult and will make you feel stupid at times. This is why #1 on this list is so important -- stop worrying so much about whether you're making progress or how much longer it'll be until you feel like you've "made it." All you have to do is focus on showing up, for 10-30 hours a week. Be as mindless as a cockroach about everything else, and don't "die."
I made the statement years ago which is often quoted that 80 percent of life is showing up. People used to always say to me that they wanted to write a play, they wanted to write a movie, they wanted to write a novel, and the couple of people that did it were 80 percent of the way to having something happen. All the other people struck out without ever getting that pack. They couldn’t do it, that’s why they don’t accomplish a thing, they don’t do the thing, so once you do it, if you actually write your film script, or write your novel, you are more than half way towards something good happening. So that I would say was say my biggest life lesson that has worked. All others have failed me.