If you want to learn web development with the goal of working in the field, what is the most effective, cost effective and efficient way to learn? There are so many different terms and jargon: “Vagrant”, “Sublime Text”, “Git”, “Accessibility”, “Apache”, “node.js”, etc. What are they? How do they all fit together? What are they used for? Not only that, there are so many different approaches to learning: books, online programming schools, traditional college/university, local workshops. There are so many different Meet ups and web conferences to go to as well. Ahhh!! Where does one start learning everything?
There is far too much out there to digest it all. It is easy to get pulled in many directions and make no progress towards your goal. It is important to pick a specific specialization and work backwards, choosing what tools and technologies to learn to get you there. This might be:
Choosing what not to learn is just as important as choosing what to learn. Trying to do too much and arbitrarily learn individual skills will spread yourself too thin, making yourself ineffective in all areas. It is very uncommon for someone to be an expert WordPress developer, Drupal developer, Ruby developer, database architect, and graphic designer. WordPress for example, is a very complex platform with many components to it. Many WordPress experts haven’t even touched all that is has to offer. The same goes for other flavours of web development. It is much more common to have a sliding scale of skills in related areas that complement one another.
If you focus on completing your project (whether it be a course assignment or personal project) you will naturally learn what you need to learn. You can build off of previous projects, integrating more advanced tools and technologies as you progress.
Learning in the Wrong Order
If you are new to web development and you jump in trying to build a project with Vagrant, staging and production servers, and proper unit testing you will likely be lost. It will be such a high learning curve learning that you may never make any progress. Take smaller steps and work up to using more advanced techniques and tools. One’s evolution could look something like:
- Creating a WordPress website with a custom theme, using a basic code editor with FTP and a basic web hosting service
- Introducing WAMP or MAMP into your workflow with Sublime Text as a more advanced code editor
- Introducing gulp.js with a Sass compiler while getting familiar with the command line
- Introducing GIT into your workflow
- Replacing WAMP or MAMP with Vagrant for local development
Focus on Practice, not Conferences and Presentations
Web conferences and presentations should supplement your own work by learning what other’s are working on and seeing how they have done things. It should not be your main focus or the only thing you do in your efforts to learn web development. There are many people who go to endless web conferences or passively watch web presentations. They never sit down and implement what they have learned. This results in very slow or no real progress in skill and knowledge development.
On the contrary, it is not good to completely isolate yourself and only work on your projects. You may be missing out on learning newer, better ways to perform a task or solve a problem. You can miss the opportunity to connect with others who can help you. Learning from others is very important in web, as new tools and technologies emerge on an almost monthly basis. There is no way you can keep up to date on your own. Your own practice is the steak and conferences/presentations are the spice, not the other way around.
Taking some sort of structured course is the best way to start off learning web development. It keeps your learning and progress on track. There are lots of options available today:
Most universities offer degrees in computer science. The programming knowledge learned in a computer science degree can be applied to all sorts of areas, including web development. There is an emphasis on programming involving advanced algorithms and mathematics, which might not be needed depending on what specific area of web development you want to work in.
Regardless, I don’t feel a university education in computer science is absolutely needed. It can be useful, but is also quite expensive as well. There are many people who have educated themselves through other means and are very successful.
Many colleges have good programs in web development. You won’t learn all the advanced algorithms and math as you would in a university program so the course content is different. There is an emphasis on web technology and in many cases instructors are more knowledgeable about web and modern best practices compared to a computer science program.
(Here in Canada we differentiate between College and University)
There are many excellent online coding schools and programs available today. Some of the more popular ones are:
These resources can include videos and interactive projects in the course material. This allows you to learn by doing. If you are more of a hands on learner, and sitting in a classroom or lecture hall isn’t your thing this might be a good choice. You can learn at your own pace since the lessons are pre recorded. The instructors in the video are usually experts in their field as well. The cost is very too low too, in the tens of dollars per month range.
There are likely some web technology workshops offered nearby if you live in a major city. These web technology workshops allow you to receive instruction in person with peers similar to you. The instructors are very knowledgeable and the prices are very reasonable as well. The largest reputable organization (in Canada) that offers web workshops, with a focus on web development would be ladieslearningcode.com.
Your Own Project
After being able to complete some of the projects in one or more of the various education mediums previously mentioned, it is time to branch out and create your own. You may have learned about HTML, CSS, WordPress, FTP, etc. It is now time to start applying all what you have learned in a single project. After learning from different sources you may notice different ways of doing things. You will find a preferences as to how you like to organize your work and tools you like to use. You have learned from the experts, but now you get to do your project your way.
A good idea would be to create a personal project with a purpose. Maybe you have an idea for a WordPress plugin or have a charity in your area that need some web work done. This will help you follow through to completion.
A Big Obstacle is Going to be Yourself
It can be hard to discipline yourself to work on your own stuff. You have no boss to put pressure on you and you have no real deadlines. Focusing on spending a set amount of time on your web stuff can help if this task seems daunting. If you have decided you will work 1 hour each day that is all you need to focus on, not on how long it will take to finish.
Companies want people who can learn on their own and get things done. If you can demonstrate this and truly love the work you do, you can look forward to happy and rewarding career in web development.