How to Learn Web Development
In a previous blog post on my personal blog about my top Laravel and VueJS learning resources, I wrote about my story where I learn from and who my mentors are but in this blog post I would like to go further in details about what I think is the best way to start learning web development, specifically in the Laravel and VueJS world, and how to get better at it over time.
This blog post is aimed for anyone interested in the web development world, either who started learning, wants to start learning, or even people who are a few years into it and want to get some ideas that might be useful for them.
Introduction
I must admit, there are a ton of learning resources on the internet and too many options for beginners to start from when they are looking for a path in the web development world, and some people even give out some crazy advice like:
Get a course from Udemy
There are free courses on YouTube or FreeCodeCamp
Start with W3Schools
Just read the documentation man
thinking that it would be as easy as they say it is for someone who has no idea what he/she is doing.
While these places on the internet have their usages, you can't learn from a course site where you don't even know the authenticity of the person who teaches you things, you need to rely on ratings and other people's word. As for W3Schools, it's more of a documentation site than anything, where you can just search for what you need to get an idea how things work and use that into your project when you get to that point, but it is not a site you can learn from just by reading.
Udemy has some great content creators, but you need to know which one to learn from and how detailed are the courses.
From my experience, I've only watched courses from one person on Udemy, which is Maximilian Schwarzmüller from Academind, I watched his Vue 2 The Complete Guide 12 hours course a few years ago when I was starting a project with VueJS.
The same thing applies for YouTube, there are a ton of content creators on there but you need to know which ones are the best, and it's hard to figure that out when you are new to this world.
Whatever course creator or content type you choose to learn from, just remember to investigate the creator, his experience and the way he explains things, the way he speaks and how much details is he/she going into.
There are multiple sources where you can learn from so you can choose yourself whatever you like the most or fits your style the best.
Watch Video Courses
I personally prefer video courses with quality content which focuses mostly on a specific topic (if I am interested in that) or a web app building type of courses where the course creator uses multiple tools, techniques and technologies to build a whole app from scratch so that I can follow along.
Whenever I want to learn something new, either a programming, concept, technique, tool, technology or a programming language, I start by searching for a course or a video on that topic. Once I get enough knowledge and get a good idea of how things work, I either search for another video or a whole course which uses the tool, technique, programming language in combination with the technology stack I am interested in just to see how things can be connected together.
After that, I start integrating the new learnings into my project so that I can understand the new knowledge even better.
Read Books
Some things cannot be found in a deep dive video course, so I look for a book or an e-book that has that tool, technique, technology or a programming language and read it to get even a better understanding of it.
Books (or e-books) are great because some of them are written by very experienced people in the industry and can provide a lot more information than a video course on any video platform ever will.
Ask questions and read forums and chats
Asking questions is one of the most important skills if you want to ever learn from someone else in the community.
I started just by reading forums in the beginning of my career, on the Laracasts forums, where I learned everything related to the basics of PHP, Laravel and JavaScript, VueJS, to the more advanced programming concepts like Domain Driven Design, project architecture, event sourcing, command buses and domain events, design patterns, SOLID Principles and similar concepts, tools and technologies.
If you hang out long enough on one forum or in a community, you will start collecting a lot of learning resources and learn so much more, which will boost your knowledge to the next level.
I also hang out on a lot of Slack and Discord chats which are very useful, because there are a lot of community members and there are a lot of people who need help and I've learned so much from them just by reading their conversations.
Help other people in the community and participate in discussions
This is one of the most useful skills that helped me grow so much in a short period of time. Laracasts was my home for years (even though I don't hang out there anymore, more active on other places like Reddit, Twitter, dev.to, Hashnode, Medium etc.)
I've helped so many people, just trying to solve things and improve my searching and figuring out abilities that also helped me later on when people found me and recruited me for their projects, clients, companies, or even met people who shared a similar interest and was part in a table talk style meetups.
It opens so many opportunities for personal branding, and it helps you market yourself to the world where people can find you and offer you a job or a business opportunity.
Read Newsletters
Newsletters are a great way to discover news, tools, learning resources (articles, blogs, books, videos etc.), which can boost your knowledge to the next level.
I am subscribed to a lot of them, Some of them include:
and others to keep up to date as much as possible.
Now, I know that it is impossible to keep up with all of the new things that are coming out in this web development world, but I do try to learn something new every day, so that I can use it if I need it in my projects or some day in the future. That way, I get a better full picture of what I would need in a whole project, besides working on a project directly.
Work on projects
Besides working on full-time / part time / internship job projects, I always work on something else besides the full time job, like my personal projects to experiment (like this personal website and blog here) with tools, techniques or technologies that I do not usually use in my daily job.
Now, I know everyone wants to get paid to learn and / or build projects but working on personal projects or helping out other people teaches you so much that it can help you get a better job, become better and even ask for a higher salary / rate per hour in the future.
Learning on the full-time job is all good, but sometimes that job can be boring or not really useful for the career when you are fixing bugs or work on useless tasks that does not teach you anything new.
That's why I recommend for everyone to start building their own personal website and blog, deploy it somewhere so that people can see it.
Also, don't forget to work on a personal project for a longer period of time that you might need to use for yourself, just so that you learn and experiment in your free time for fun.
Another option is to help out in the open source world where you contribute to projects by helping other people.
Work enough so that you don't burnout so much but still learn something new every day.
Read Articles and blogs
Same as the video courses, there are so many blog posts related to one specific thing that you might find useful or build a whole app based on a series of articles on a blog.
There are many blogs that can be useful to follow but I would suggest checking out dev.to and Hashnode first and then finding out people who have blogs and that you trust them based on their authenticity and the community you are a part of.
I use Feedly as my preferred RSS reader to follow the various websites and blogs.
I also have the daily.dev new tab chrome extension that shows me new articles from different blogs to read every day.
Watch Coding Livestreams
Few years ago, I started watching coding livestreams of other people building projects to understand and learn how a person thinks when they build a project from scratch with the tools, technologies and programming languages I use or like.
There's always something new to learn from someone else and you can incorporate it to your own projects (personal or not).
The interesting thing is that I've seen different approaches of how people structure their code, how they approach the database or project design, pros and cons of some tools in some scenarios and so on.
Follow people on Twitter
I know that many people think that social media can be a distraction and you should stay away but I've learned so much from people on Twitter because there are a lot of valuable Twitter threads, tips and tricks that people share and you can't find them anywhere else.
There's also a lot of useless content that is irrelevant but I try to ignore that part and mute profiles to keep it web development specific only as much as possible.
First steps to a new programming language
The first thing I would do if I want to learn a new programming language (example: Go), I'll try to get to know the ecosystem and community so I would do the following:
Go to the Awesome List on GitHub and search for the programming language.
Go to the programming language community on Reddit
Try to find the most influential people in the sphere to follow on Twitter
Search for top rated books
Search for people who livestream on YouTube or Twitch
Search for newsletters
Search for Slack and Discord communities
Star useful tools, packages on GitHub
Ask people where they learn from, who they follow, what books or video courses are useful etc.
Start building projects once I learn the fundamentals of the new programming language, tool, framework etc.)
Collect learning resources as I find them along the way.
Conclusion
There's no one way to learn web development just from one source and hope that you will get a job after a 6 months academy or a few video courses. It might take you a while but always be building something, help someone, read something, watch something. It's really up to you how much time and effort you are willing to put in. IT is not an easy career choice.
Use the community and the learning resources to become a better developer, designer, DevOps, or QA engineer.
Do whatever you have to do to progress in your career, just don't burn yourself out.
Do the work, be consistent and it will get you great results over time.
Learn how to filter useful and useless content that will benefit you. It's a great skill to have.
Don't forget to enjoy the process, even though there will be tough times and you will ask yourself if this is for you. If you manage to get through it, you will get closer to whatever you describe as success.
Have fun and happy coding.