

How to construct a web developer in twelve months - eustatius
http://www.jpstacey.info/blog/2011/03/13/how-construct-web-developer-twelve-months

======
blacksmythe

      >> READ: Hacker News is a reasonable starting point these days.
    

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:

 _optional_ Read "Teach Yourself Programming in Ten
Years"(<http://norvig.com/21-days.html>)

1) Learn basic HMTL/CSS

2) Learn Python or Ruby fundamentals (<http://learnpythonthehardway.org/index>
or <http://mislav.uniqpath.com/poignant-guide/>)

3) Learn Django or Rails

4) Learn jQuery

5) Build a few Django (or Rails) projects

6) Find someone to pay you to build things

7) Use Stack Overflow to help you solve customer problems

8) Spend time you are not busy with customers reading Hacker News, attending
local meetings, learning whatever catches your interest.

~~~
apperoid
Absolutely agree. Reading Hacker News may be interesting but it rarely adds
something to your skills.

------
Tycho
Read Techcrunch? Why? So you can daydream more lucidly about $40m exits?

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.

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.

------
phatbyte
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.

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.

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.

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.

So instead of the list the author gave I would suggest:

\- 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.

\- Comeback to IRC, irc.freenode.com has amazing dedicated developers channels
where you can share ideas and get help.

\- 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.

\- Practice and practice

~~~
wil2k
"Comeback to IRC, irc.freenode.com has amazing dedicated developers channels
where you can share ideas and get help."

Are there any channels in particular that you would recommend? :)

~~~
phatbyte
I normally hang out on #macdev , #iphonedev, #C, etc. but you can find any
language specific topic

------
danielh
All items on the list sound reasonable, but I think it should be ordered the
other way around. Begin with _play_ and _build_.

If you spend to much time on reading and research on the beginning without
actually getting your feet wet you might get overwhelmed.

~~~
sghael
This is the first thing i thought as well. Build should be #1. The reading you
do should directly support your building (finding help on HN or SO that help
you solve the specific problem/bug at hand)

------
rue
Typically it should only take 9 months to construct one. Some prerequisites
apply.

~~~
sghael
actually 9 mom months. so 1 month with 9 moms working on it.

------
davidhollander
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.

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.

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.)

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.

------
atomicdog
Did that guy just suggest reading Twitter and Techcrunch are requirements for
being a web developer? Not impressed...

~~~
j79
I signed up for a Twitter account (which I've since deactivated) when I
attended a jQuery conference in Boston a few years ago. The live tweets that
went around were not only hilarious, but also relevant to the discussions. In
addition, I started following some developers and discovered some great links
via tweets (for instance, Paul Irish tweeted his coding standards a while
back, which I think is a great read for any developer and their team.
<http://na.isobar.com/standards/>)

Do I think Twitter is a requirement for being a web developer? Definitely not.
I agree with you (and voted you up.) But, I do believe, if you follow the
right people, it will help you become a better one.

My only reason for deactivating it was because of Hacker News (and other
aggregate sites) - A lot of the great content on Twitter ends up (or begins)
on sites like HN.

------
beaumartinez
The single most important point, to actually _code_ , is right at the bottom.

In fact, I'd remove all other points: the only way to become a good coder is
to code, plain and simple.

------
city41
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.

------
baltcode
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.

------
ilcavero
another option is to stop reading superfluous lists on how to become a web
developer on the net and actually try to code something.

------
Pewpewarrows
I agree with absolutely every point on that list, and I definitely wish I had
read something like that when I was starting out.

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.

------
Newky
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.

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.

Doesn't really have to be useful( advantage if it is ), just something that
you want.

Great article, some great resources which could take someone months to find on
their own.

------
sayemm
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:

1\. Be obsessed with Github + Hacker News and always consult @yegg's archive
for guidance - <http://gabrielweinberg.com/startupswiki/Ask_YC_Archive>

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.

3\. Choose a good text editor and familiarize yourself with it, it's a long-
term investment.

4\. Focus on getting good with one or two languages, and keep building stuff
and learning from others.

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: [http://stackoverflow.com/questions/414779/what-should-a-
self...](http://stackoverflow.com/questions/414779/what-should-a-self-taught-
programmer-with-no-degree-learn-read/4473810#4473810)

------
mattdeboard
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.

------
edw519
At first glance, this looks like a nice list. I really have nothing bad to say
about anything on it.

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.

I'd like to share my personal experience with OP's list. Please understand
that this is _not advice_ , just one programmer's experience of what works for
me. Perhaps I'll try some of OP's recommendations, but I'm not sure...

 _READ Hacker News_

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 _very important_ contributing to my sanity.
I'm alone most of the time except for my cats and you guys.

 _READ Stack Overflow_

Never been there.

 _READ a bunch of other stuff_

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.

 _ATTEND local meetups_

I have. I don't anymore. Met some nice people. Didn't help my work at all.

 _ATTEND OpenTech 2011_

Never heard of it.

 _FIND an itch to scratch_

Have built about a half dozen things for myself. Not really much use for
others, but a great way to practice with new technology.

 _RESEARCH cloud_

Good idea, but my experience limited to Amazon.

 _RESEARCH HTML5_

Good idea, but haven't done much.

 _JOIN Twitter, Delicious_

Never did. Probably never will. Unless I see some good reason. (I haven't.)

 _PLAY_

Critical! I play with stuff every day.

 _BUILD_

90% of what I do. Oddly, I look at _very little_ other code, but I do try to
reverse engineer _a lot_ with what I'm already playing with.

 _POLISH_

I do nothing mentioned by OP. I just refactor, scale, and fine tune as I see
fit.

I'd like to add one more thing to the list:

FIND A CUSTOMER

You'd be surprised at how fast you get good when you have to.

~~~
OstiaAntica
This will take a lot longer than 12 months. More like 5 years, minimum, to be
any good.

~~~
ashconnor
Far too many variables to gauge how long it takes a person to become a
competent, I see no point in entertaining a figure and it's a useless
indicator of a goal that can't be measured.

------
redredraider
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.

------
ThomPete
One thing I think is missing from that list.

Sign up for Lynda.com.

Find a subject for instance jQuery or PHP or JavaScript

Just watch it don't do anything to get a feel of the bigger picture.

Then Watch it again start doing some of the things and start to experiment.

That at least helped me learn to code although I am still very much a rookie.

------
craigkerstiens
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.

------
mcdowall
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.

------
phatbyte
lovely list, except one thing , don't make your friend read Techcruch ;)

------
rorrr
12 months is barely enough to scratch the surface. I look at my code from 10
years ago, and it's absolute crap.

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:

1) HTML (and DOM) and XML

2) CSS

3) Javascript (+jQuery +JSON)

    
    
        1,2,3 include
    
        a) the knowledge of different versions 
    
        b) browser compatibility issues
    
        c) how to write it properly and efficiently
    

4) Different image formats, proper compression. CDNs.

5) Unix shell + apache configuration + deployment

6) Database + SQL

7) Memcached (or alternatives)

8) Various tools like firebug, profilers, http sniffers, etc

~~~
ryanclemson
I couldn't agree more. But I think 8 belongs near the top. I am currently
helping re-condition experienced mainframe developers into web developers, and
I can't stress enough the importance of tools. Understanding the browser, HTTP
request and response, cookies, web security, and the OSI model is crucial.

