Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

From my experience what people working as web developers most commonly lack theory-wise besides simply software engineering skills is in-depth knowledge of HTTP and it's guiding architectural principles (REST), so I would recommend:

http://www.w3.org/Protocols/rfc2616/rfc2616.txt (HTTP standard)

http://en.wikipedia.org/wiki/Representational_state_transfer

http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm (Original publication introducing REST)

Not knowing this stuff makes it hard to write applications that perform well and are search engine friendly, so contrary to what people may think, it's often very practical knowledge. Ultimately you should also strive to understand what happens from the moment you type in the URL to the moment the page is displayed on the screen, so some understanding of DNS, basic routing, etc. You should also know how to use all the classic tools: ping, traceroute, host, dig, netcat, ngrep, nmap and so on and so forth, it will make it easier to understand the theoretical things and will very often come handy in practice. It's also a step towards another important goal - knowing your infrastructure, so probably UNIX, your web server of choice, your database server etc. You can go a long way by just reading the manuals and the user guides for those things.

Another aspect is knowing the modern browser well. You should learn some JavaScript, learn to use FireBug or Chrome Developer Tools, learn about the DOM, the security issues that the browsers have to deal with etc. Douglas Crockfords videos are a good way to learn this:

http://www.youtube.com/playlist?list=PL7664379246A246CB

http://www.youtube.com/playlist?list=PL5586336C26BDB324&...

There is a nice book about web security from Michal Zalewski, a well-respected security researcher currently at Google:

http://lcamtuf.coredump.cx/tangled/



The guy says he's worked in the industry for years; presumably he knows about REST and ping.

I read his plea in exactly the opposite way -- instead of learning more of (or about) these tools, he's after fundamentals.

In my opinion, the "fundamentals" are just decisions made by concrete people to address concrete concerns (at the time). Understanding them is understanding the motivations behind them. So it's as much a history lesson as it is technical.

Some of those people and decisions may be lost in time, like tears in the rain, but most have been documented. For a "networking" example, see this recent HN thread https://news.ycombinator.com/item?id=3407777 and the discussion there.


In the first sentence I think you are nitpicking. After all I pointed to those tools as an aid for understanding how things work "under the hood", which is what the OP is after as far as I understand. Even if you take "ping", (which I could have as well not included in the list, as the other tools are less obvious but still tremendously useful) almost everyone knows what it's for, but fewer people know various options it has and yet fewer people know how it really works, what protocol it uses etc. In a similar way, lots of people have used MySQL or PostgreSQL for years, but never read the manuals and have little understanding of all the various capabilities they have and the ins and outs of how they work. It's a blend of theory and practice.

I agree with the rest of what you said, and while I did not state it explicitly, I share the sentiment, in fact the Douglas Crockford videos I linked to give a quite detailed account of the development of the Web, including browsers, JavaScript, AJAX etc.


Excellent, then our posts complement each other :)

And sorry, I didn't mean to nitpick and your links are certainly useful; god knows what "years in the industry" means anyway.


I think it's really good advice. I was relegated exclusively to the backend for a while and so I had a terrible understanding of some of those concepts. Spending some time on Rails led to inevitable tangential learning of HTTP and REST, which really opened my eyes about the bigger picture.

Same thing about JavaScript, as you said, it's the language of the web and needs to be mastered. I was pretty abstracted from it for the longest time, but just yesterday a website I had to use was misbehaving and I managed to track down the issue right away with the Chrome tools. It's really empowering, although I'm still far from being proficient.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: