<p><pre><code> >> READ: Hacker News is a reasonable starting point these days.
</code></pre>
In my experience, almost the opposite order is best. I find reading Hacker News very enjoyable, but by far not the best use of time early on. An hour spent programming is 10-100x more valuable than an hour spent reading Hacker News, until you have enough experience to put the information in context. I would suggest:<p><i>optional</i> Read "Teach Yourself Programming in Ten Years"(<a href="http://norvig.com/21-days.html" rel="nofollow">http://norvig.com/21-days.html</a>)<p>1) Learn basic HMTL/CSS<p>2) Learn Python or Ruby fundamentals (<a href="http://learnpythonthehardway.org/index" rel="nofollow">http://learnpythonthehardway.org/index</a> or <a href="http://mislav.uniqpath.com/poignant-guide/" rel="nofollow">http://mislav.uniqpath.com/poignant-guide/</a>)<p>3) Learn Django or Rails<p>4) Learn jQuery<p>5) Build a few Django (or Rails) projects<p>6) Find someone to pay you to build things<p>7) Use Stack Overflow to help you solve customer problems<p>8) Spend time you are not busy with customers reading Hacker News, attending local meetings, learning whatever catches your interest.
Read Techcrunch? Why? So you can daydream more lucidly about $40m exits?<p>From my journey so far, I think the foundation is understanding HTML and CSS and the DOM and basic Javascript interactions. It can take a few months for that stuff to sink in, but then you barely need to think about it going forward, it doesn't clog your thought-process. From there you could do a fair bit of actual coding, leveraging frameworks like jQuery and the various layout and template resources. You will get the hang of cross-browser stuff as you go. The next level is Ajax and server-side stuff, which IMO involves getting past a lot of over-coupling inherent in the technology, so that, again, will take a while to sink in. I suppose understanding databases would be a good idea but could perhaps be put off for a while.<p>Also I think it really helps to have someone you can meet regularly and quiz about development. It beats endlessly googling for an answer that makes sense from your perspective.
This is why sometimes web developers are considered 2th class developers, we waste so much time reading blogs and news, that we don't practice what we love.<p>I don't see half of web dev blogs for languages such as C/C++, Java, C#, etc..etc.. I know the web is like a living organism, creating new things to learn everyday, but still.<p>But what about algorithms ? Design patterns ? Code optimization ? This are boring concepts I know, but they are amazingly useful if you want to be taken serious on this area.
I love when I meet web developers who know what a C pointer and what memory allocation means. They don't have to, but that just shows that they know what's behind the curtains when they code in PHP, Python, whatever...and I will trust their code more than a guy who knows dozens of frameworks and tools, but don't understand the concepts behind those.<p>I just think that there's so much things going on that's it's either: or you get highly skilled at something or the jack-of-all trades.<p>So instead of the list the author gave I would suggest:<p>- Download open source code, and read it, understand it and try to come up with better solutions for small code fragments and share with the community or the author. You have no idea how fast you will learn and will look great your CV.<p>- Comeback to IRC, irc.freenode.com has amazing dedicated developers channels where you can share ideas and get help.<p>- Dedicate only 1h per day to read a book or a tutorial, and write down stuff you think you need to understand. Come back the next day, read what your wrote last night and continue.<p>- Practice and practice
All items on the list sound reasonable, but I think it should be ordered the other way around. Begin with <i>play</i> and <i>build</i>.<p>If you spend to much time on reading and research on the beginning without actually getting your feet wet you might get overwhelmed.
Way too "culture" heavy. The only thing important on the list is BUILD, which is 2nd to last and does not include example projects to start building their momentum. If you only have 12 months to become a web developer, I hope all that time is spent building as many different projects as possible and not reading Hacker News.<p>Also I don't think it's smart to immediately steer them toward MVC framework such as Django or Rails. If you give them web.py or Sinatra off the bat you'll expose them to the fundamentals much quicker and significantly accelerate their learning process. Especially in regards to databases.<p>Then I would throw asynchronous web development at them. Have them write a simple app on top of an event loop with something like Node.JS or one of the python options (gevent,fapws3,tornado,etc.)<p>Having said the above, there are more books for Django and Rails if thats their preferred learning format. If there is a time crunch, I would recommend "Django 1.0 Website Development" by Ayman Hourieh. It walks through building a complete social bookmarking app and includes chapters on jQuery and AJAX, instead of focusing exclusively on Django. Which will give them a bit of breadth.
The single most important point, to actually <i>code</i>, is right at the bottom.<p>In fact, I'd remove all other points: the only way to become a good coder is to code, plain and simple.
JavaScript wasn't emphasized very much. It's taking the spotlight and really understanding the language is becoming a strong requirement for modern web development. Even better it's universal and will apply to any web job you ever tackle. It should be a paramount focus IMO.
I feel the web-specific stuff like frameworks, AJAX, etc., is a greater stumbling block, as many people are already familiar with general kind of programming through school/previous jobs.
I agree with absolutely every point on that list, and I definitely wish I had read something like that when I was starting out.<p>The only thing I would add: Be curious. Eliminate as many magical black boxes from your day-to-day work as you can. To some extent, yes, you should be playing around and experimenting. But some of my most rewarding self-taught lessons are from diving into areas that I took for granted (how a web server works, jQuery and Django's core, protocols, etc) and exploring until I felt like I had a good grasp on what was happening. Those monstrosity config files for things like Apache and PHP? Delete them. Now watch them fail. Learn what the default are, the bare minimum that you need to get it up and running, and expand on it. Find the areas you're uncomfortable with, and beat the living hell out of them.
I think this is a well balanced plan and would produce a rounded web developer, I've been doing php development part time since last September, but previous to that I was hacking on whatever idea I could come up with.<p>As the article implies, read some books, but once u get bored with literature, open up an IDE(or vim) and code any idea that springs to mind.<p>Doesn't really have to be useful( advantage if it is ), just something that you want.<p>Great article, some great resources which could take someone months to find on their own.
Funny reading this post because the title pretty much describes what I'm doing, taking some time off to hone my programming chops and I originally came from a finance background. Looking back, if I had to suggest my own list to someone who's serious about learning:<p>1. Be obsessed with Github + Hacker News and always consult @yegg's archive for guidance - <a href="http://gabrielweinberg.com/startupswiki/Ask_YC_Archive" rel="nofollow">http://gabrielweinberg.com/startupswiki/Ask_YC_Archive</a><p>2. Start off by building a web app using the LAMP stack (Linux, Apache, MySQL, PHP), and HTML/CSS, and set up your own server on Slicehost or the like. Also learn Javascript and jQuery.<p>3. Choose a good text editor and familiarize yourself with it, it's a long-term investment.<p>4. Focus on getting good with one or two languages, and keep building stuff and learning from others.<p>That's just for web stuff though. For being a solid developer, Joel Spolsky recommends throwing these four books in there too to build a good CS foundation: <a href="http://stackoverflow.com/questions/414779/what-should-a-self-taught-programmer-with-no-degree-learn-read/4473810#4473810" rel="nofollow">http://stackoverflow.com/questions/414779/what-should-a-self...</a>
I agree with all, but "Build" and "Play" are the crux of the whole thing. All the rest of the list are best utilized by buttressing one's expanding coding skills. I'm about 6 months in to my dedicated, hardcore effort to turn myself into a programmer (with a focus on the web). Nothing happened for me that was worth mentioning until I started making things. THEN I started participating in HN, reading books and researching more vigorously. Because I had context.
At first glance, this looks like a nice list. I really have nothing bad to say about anything on it.<p>It's a list of 12 items without much guidance about how important each one is and how much time to spend on each. To put things in perspective, I think that BUILD should be > 90% of your time.<p>I'd like to share my personal experience with OP's list. Please understand that this is <i>not advice</i>, just one programmer's experience of what works for me. Perhaps I'll try some of OP's recommendations, but I'm not sure...<p><i>READ Hacker News</i><p>An hour or two every day for 4 years. Thousands of comments made. Hundreds of bookmarks saved. Oddly, not sure how important all of this has been contributing to my work. It's been <i>very important</i> contributing to my sanity. I'm alone most of the time except for my cats and you guys.<p><i>READ Stack Overflow</i><p>Never been there.<p><i>READ a bunch of other stuff</i><p>I just follow links from Hacker News front page. Lots a great stuff out there. Still, not really sure how much benefit has been to my own work.<p><i>ATTEND local meetups</i><p>I have. I don't anymore. Met some nice people. Didn't help my work at all.<p><i>ATTEND OpenTech 2011</i><p>Never heard of it.<p><i>FIND an itch to scratch</i><p>Have built about a half dozen things for myself. Not really much use for others, but a great way to practice with new technology.<p><i>RESEARCH cloud</i><p>Good idea, but my experience limited to Amazon.<p><i>RESEARCH HTML5</i><p>Good idea, but haven't done much.<p><i>JOIN Twitter, Delicious</i><p>Never did. Probably never will. Unless I see some good reason. (I haven't.)<p><i>PLAY</i><p>Critical! I play with stuff every day.<p><i>BUILD</i><p>90% of what I do. Oddly, I look at <i>very little</i> other code, but I do try to reverse engineer <i>a lot</i> with what I'm already playing with.<p><i>POLISH</i><p>I do nothing mentioned by OP. I just refactor, scale, and fine tune as I see fit.<p>I'd like to add one more thing to the list:<p>FIND A CUSTOMER<p>You'd be surprised at how fast you get good when you have to.
You can't be a web developer unless you can code. I think a good exercise would be copying a website. When I say copy I mean the whole thing front end and back end. Start with something easy like twitter. The whole front end is pretty much done for you. This is not super simple but I don't think you can become a developer in 12 months with no code experience anyway.
One thing I think is missing from that list.<p>Sign up for Lynda.com.<p>Find a subject for instance jQuery or PHP or JavaScript<p>Just watch it don't do anything to get a feel of the bigger picture.<p>Then Watch it again start doing some of the things and start to experiment.<p>That at least helped me learn to code although I am still very much a rookie.
This is a great starting list, would it be possible to even go a step further and put starting times for each of them. Of course many of the steps continue to go on long after they start... does a developer ever stop reading HN? But many of the later items like play/build are a bit later than day 1 for someone looking to dive into this.
I find it surprising that irc hasn't been mentioned in the comments and the post, since ordering my first Rails books I have found the support and advice I have received in irc terrific.
12 months is barely enough to scratch the surface. I look at my code from 10 years ago, and it's absolute crap.<p>Modern web development is not just knowing one language, it's a bunch of technologies, and many of them seem deceptively simple, while they aren't. Just off the top of my head of what I use as a web developer:<p>1) HTML (and DOM) and XML<p>2) CSS<p>3) Javascript (+jQuery +JSON)<p><pre><code> 1,2,3 include
a) the knowledge of different versions
b) browser compatibility issues
c) how to write it properly and efficiently
</code></pre>
4) Different image formats, proper compression. CDNs.<p>5) Unix shell + apache configuration + deployment<p>6) Database + SQL<p>7) Memcached (or alternatives)<p>8) Various tools like firebug, profilers, http sniffers, etc