Updated: Jan 15, 2020
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.
HTML and CSS
Don’t be fooled into thinking these are the easy parts. We are still learning how to master 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.
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).
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.
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.
How to Optimize Use of the Hybrid Cloud
This webinar looks at the history of hybrid cloud and why its adoption is skyrocketing, the challenges that come with adopting public cloud, and the what, when and where to run your workloads.
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.