I've been working full-time as a web developer since 2009, previously creating my first website with Microsoft's Frontpage in 2002 (remember that?!).
Apart from a taking a few modules on an Open University course, I've gained 99% of my skills autodidactically.
To do this I followed a total immersion method to the knowledge I sought to gain. This means sucking up information from any source: blogs, video tutorials, forums and books.
As I write this article, on a bookshelf to my left are over 30 web design books that I have bought over the years. Not all of them were rewarding purchases, but I consider some to be worth their weight in gold. Below I list the best of them.
JavaScript
Like many developers, I came to JavaScript after first learning PHP. There are many hurdles to jump over, but if you persevere you will come to love this programming language.
At first, it's minimal number of inbuilt methods stand in contrast to thousands of PHP functions. Initially, being used to accessing a catalogue of high-level functions, this can seem alarming, but you soon realise that this is liberating: you don't have to wade through countless inconsistently named functions like in PHP.
Secondly, differences in implementation between the current and legacy browsers makes CSS broswer quarks look minor in comparison. Thankfully, IE7 and IE8 are declining, but there is still a way to go yet.
Also, it is a rapidly expanding language, not just with EMCA Script 5 and 6; but also JavaScript libraries, frameworks, browser advances, template systems, command line tools and unit testing. No other contemporary programming language has such a dynamic userbase.
A handful of books are responsible for taking my JavaScript skills to a higher level.
John Ressig: Pro JavaScript Techniques (Apress, 2006)
Ressig is most commonly known as the inventor of jQuery. It's impossible to underestimate the impact of this library on front-end development. Pro JavaScript Techniques covers a number of areas that will assist you in writing clean, maintainable code. Subjects covered include object-orientated basics, DOM and CSS interaction, reusable code and events. Written at a time when Internet Explorer 6 and 7 where still dominant, it fully details the differences between these browser and the W3C approach. Unfortunately, these are aspects of JavaScript that we still need to be familiar with today. Few would disagree that John Ressig is a key JavaScript face, so buy this book and then ingest and implement his knowledge. It's a book in which that you will always find new information no matter how many times you read it.
Ross Harmes & Dusin Diaz: Pro JavaScript Design Patterns (Apress, 2008)
More than in any other language, using design patterns in JavaScript is essential. If you write over 200 lines of procedural code it will become an unmaintainable mess.
Reading this book was for me the equivalent of lighting a flare in a dark room.
In 269 pages it details dozens of ways in which you can organise your code so that is is extendable and readable.
Because it is a prototypal language there are no classes in JavaScript, but there are ways of mimicking the features of classical inheritance with public, protected and private methods; creating mixin classes and interface emulation. Diaz and Harmes detail all these approaches plus provide a chapter for each commonly used design pattern like singletons, modules, composites, decorators and observers. It's impossible to use this book to fully understand established programming patterns because the subject matter is too complex even for a publication as well written as this. But I can guarantee that it will point you towards the right direction to coding perfection.
Since 2008, ECMA5 Script has introduced new properties like Object.create, Object.preventExtensions and Object.defineProperties to help in handling JavaScript objects. This book doesn't cover EMCA5 additions so I would recommend Addy Osmani's JavaScript Design Patters (2012, O'Reilly) as a compliment to Pro JavaScript Design Patterns.
Peter-Paul Koch: pkk on JavaScript (2007, Voices That Matter)
More basic in subject matter than the previous two books, pkk on JavaScript is an easy-to-read digest of the scripts basics. I bet there are few professional coders who could succinctly describe the theory behind event bubbling and capturing, but Koch makes a reasonable stab at it. If you are a mid-level JavaScript coder you may presume you have full knowledge of the basics like data types, strings, booleans, control structures or functions. If so then perhaps pkk on JavaScript will surprise you by filling some previously unknown gaps in your knowledge.
Performance
Steve Souders: High Performance Web Sites / Even Faster Web Sites (2007 and 2009, O'Reilly)
Steve's opinions on website performance carries more weight than anybody else on the subject. Even Faster Web Sites and in particular its predecessor High Performance Web Sites are landmarks in this discipline. In the pre-broadband era performance considerations were everything. As internet speeds were slow, optimisation techniques to decrease page sizes were paramount. As broadband usage proliferated, web designers brushed these concerns aside. There two publications reminded everybody that web site performance was still paramount in achieving a satisfactory user experience which in turn directly benefited the commercial aims that the web site was built for.
Much of what we take as standard today – minification, placing scripts at in the footer and using Content Delivery Networks – were first popularised by Steve Souders. But this book is no mere polemical piece. It's strength lies in the research that provides data to back up his argument.
Over the last five years browsers have dramatically improved their ability to handle JavaScript, so some of the information in these books is dated. However, a useful companion is perhaps the more recent Professional Website Performance by Peter Smith (2012, Wrox).
Wordpress
Brad Williams, David Damstra, Hal Stern: Professional Wordpress Design and Development (2010, Wiley) / Brad Williams, Ozh Richard, Justin Tadlock: Professional Wordpress Plugin Development (2011, Wiley)
If you want to understand Wordpress theme and plugin development then these two books are indispensable. Clear, concise and brimming with quality advice, no other current Wordpress guides are as worthy a purchase as these two. They provide a role of both tutorial and reference books.
Wordpress has a loose API, meaning that the code in the tens of thousands of themes and plugins can vary wildly. Actions, hooks, APIs, coding standards, database queries and native helper functions are not comprehensively covered (I'm still waiting for that book), but the chapters do provide the developer a solid foundation for writing quality code.
Like most Open Source projects the official codex is limited and take extreme care when consulting blog articles on Wordpress development: they are often written by those with only limited experience of the platform and PHP.
At least with these two publications you can be confident that you will be provided accurate explanations about fundamental Wordpress PHP essential to every theme and plugin build.
Drupal
Over ten years old now it's fantastic to watch how Drupal has progressed from being a tool written by and for developers to one that aims to reach a wider user base. Starting from Drupal 6, new versions have incrementally improved the Content Management System into being one of the most robust and exciting Open Source projects on the net.
However, the entry point for Drupal development – both for themes and modules – is steeper than Wordpress, which is why having books at hand to assist your learning is essential.
Matt Butcher, Matt Farina, Ken Rickard, Greg Dunlap, Larry Garfield, John Albin Wilkins: Drupal 7 Module Development (2010, Packt Publishing)
Of all the web design publishing houses, Packt is the one to me be most wary of. Expensive to buy, more often than not their books only offer lightweight guides to their respective subject matters.
Drupal 7 Module Development is an above average Packt book which offers the reader a good introduction to Drupal plugin creation. While themeing in Drupal 7 can be insanely frustrating, the plugin APIs are, mostly, a joy to work with. Their form building API is probably the best I have ever used. Unlike Wordpress, Drupal has a strict API which intentionally leaves little room for idiosyncratic coding. If you want to build up a repository of trusted third-party modules then this approach is essential.
There is enough detail in Drupal 7 Module Development to provide you with grounding in Drupal PHP basics: hooks, APIs and architecture overview.
Todd Tomlinson and John K. VanDyk: Pro Drupal 7 Development (2010, Apress)
While Drupal 7 Module Development is a good starting point, Pro Drupal 7 Development is a 688 page bible that you will need close at hand if you really want to understand Drupal code.
Almost without fail I've found Apress to be a quality publisher of web design and programming books. I read a criticism that Pro HTML5 Accessibility (another informative Apress read on my shelf) is let down by its basic design. Come on! Developers buy books for the quality of its content not to look at pretty pictures and avant-garde typefaces.
PHP & CSS
There are no books in my collection for PHP and CSS that I would consider important enough to praise here.
I have the obligatory PHP 6 and MySQL 5 / PHP 5 Advanced by Larry Ullman that every novice buys, and PHP Master by Lorna Mitchell which covers design patterns, security and performance, but most of my knowledge of PHP came through incessant practising.
I've build both countless Drupal and Wordpress themes, created my own Content Management System and authored a Wordpress plugin called Affiliate Hoover that used MVC (and with a Drupal port); amongst much else. Writing code for a purpose is far more inspiring than just coding for the sake of it. The official PHP documentation and blog articles were vital in my understanding of the best way to write this programming language.
It's the same with CSS: practice, practice, practise. For a long time (even now), I tried to add some code or method that I had never used before with every website build.
For both CSS and PHP the Sitepoint forum users provided a lot of advice when I became stuck.
Conclusion
There is no one source of knowledge for any one web technology. Although I would strongly recommend that you get hold of a quality book before you start learning a new one. These can provide both a guide and they can be used as a reference.
But don't just depend on a book. Join and take part in forums, write down your own discoveries on a blog, use Twitter to keep up to date on the latest news, use an RSS reader to follow web design blogs and publications, read net magazine, bookmark articles of interest in Delicious, go to local tech meetups, and, if you can afford it, go to web design conferences.
Web development isn't a job, it's a way of life. It's not something that you do from 9-5, Monday to Friday and then switch off from the rest of the time. If that isn't what you want, look for another career; take the blue pill instead.