As anyone who writes code for a living will tell you, Web development is hard. The evolution of browsers and devices to build for, alongside the languages and frameworks to build with, has left developers with more of a challenge than ever before. Given that the number of resources out there for learning how to build Web apps is overwhelming and often includes outdated material, here is a list of general principles, skills and languages. Count on it: You'll need them.


Don’t be fooled into thinking these are the easy parts. We are just at the beginning of understanding how to use HTML5 and CSS3 to create fast and beautiful experiences in browsers across our growing list of devices. That's why many front-end developers (a.k.a. user-experience (UX) designers/engineers) are earning higher wages than server-side developers these days. And for good reason; UX engineering is hard. (Learn more in 5 Things You Need to Know About HTML5.)


Full-stack JavaScript is hot right now, and it won’t cool off any time soon (if ever). While many developers think they "know JavaScript" because they can write a bit of jQuery (which is important, of course), the language is quickly turning into a ubiquitous and robust tool for servers, devices, robots and even Web browsers. By learning this, you will avoid wasting time diving into asynchronous functional programming and prototype-based programming. You'll also learn a core set of JavaScript libraries and frameworks.

Product Management

After talking to dozens of hiring managers over the past few months, a common complaint I hear is that developers lack product sensibilities. In other words, there aren’t enough people who know how to build great products and write great code. Product management includes the ability to understand business objectives, manage a project (in general), embrace agile work flows, and listen effectively to users to tweak a product accordingly. Writing in a check box versus a radio button, for example, is a business decision. Developers need to learn how to carefully make these kinds of decisions to make the job of full-time product manager less difficult (or not needed).


JavaScript, Ruby, PHP, Java, C# and Python all have multiple frameworks designed to make Web development more pleasant (i.e. getting more done in less time). Pick one and learn it really well. Build multiple Web apps with it and make sure you’ve covered as many different features as possible on both the server and browser side of things. Going in depth with one language makes it easier to learn new frameworks down the road.


Version control of your code is essential, and Git has won the day among the Web developer community as the go-to tool for collaboration, record-keeping and incorporation with deployment processes. If you are just getting started, I would highly recommend Try Git as well as engaging in "social coding" via GitHub.

Test-Driven and Behavior-Driven Development (TDD and BDD)

Not having solid experience here will get you immediately removed from the applicant pool for a job with a series development team. The process of writing tests and specs before you write the code in your app will ensure you have ample coverage at micro- and macro levels in your app. The Wikipedia article on BDD is a great resource for learning about TDD and BDD, but make sure you follow tutorials on best practices for your language/framework of choice as you learn. Avoid tutorials that don’t mention TDD and/or BDD.


This deserves a point of its own because JavaScript Object Notation (JSON) is the dominant language of automated communication between services on the Web today. Developers should know both how to work with APIs and how to build their own. This is important because Web development is becoming increasingly modularized as service-oriented architectures become the norm, JavaScript frameworks become more prevalent, designing for mobile starts from day one, and the incorporation of third-party APIs continues to ramp up.


Speed is one of the most important factors for a great user experience on the Web. Sadly, it is rare for developers to know how to design and implement a decent caching strategy. Relying on an unnecessary number of calls to a database and/or file system is a great way to slow things down and annoy users. Web developers should think about how to get as much data in memory (e.g. with something like Memcached) as reasonably possible, and then how to get things cached at the file system level to avoid making calls to a database (which is the speed bottleneck for most apps). Most modern frameworks have built-in ways to use memory and file-system caching (both partial and full-page caching), so take the extra time to learn how to do this even if you are not expecting high amounts of traffic. (Learn a few tricks in 5 Tech Experts Share Their Caching Secrets.)

Background Tasks

Online tutorials, in particular, are notorious for not training Web developers how to think in a paradigm of kicking processes to the background to speed up user experiences. For example, when submitting a sign-up form it is common for an app to send out one or more emails. However, if this is done during the same request as receiving the form data, it can create a slow experience for the user. If the emails are sent a few seconds after a background task, no big deal. These little things matter. Again, speed is really important. Web developers should incessantly be thinking about how to design their apps to be as fast as possible at every level of the stack.


Last but (not even close to) least, Web developers need to be familiar with the rapidly growing set of computing technologies for designing, scaling, migrating, testing, optimizing, continuously integrating and deploying code in the cloud. DevOps is the merged set of tasks that exist now between the old-school roles of "developer" and "IT professional." Google, Amazon, Microsoft, and a growing number of tech giants have a truly remarkable set of Web services available for developers (and, by the way, the process of using them is getting easier).

It really is an exciting time to be a Web developer. There are extremely fun technologies out there that make our jobs enjoyable. However, as I mentioned above, don’t expect to learn these technologies overnight. It takes years to get to a reasonably proficient level, and the process of learning (as you would expect) never ends.

A great way to accelerate your skills, however, is to learn directly from practicing developers. And, while there is no substitute for in-person instruction, a growing number of online courses and tutorials are available that search engines are doing a great job revealing at the top of their results. So, begin by searching for tutorials and articles in the languages, libraries and frameworks of interest. Then, talk to friends who are Web developers (if you don’t have any yet, Twitter and Stack Overflow are great places to find them) and ask how you can best prepare yourself to enter the field.