Web development 2021 - a learning path with the best courses and tutorials
Web Development Roadmap 2021 In this video, you'll get an overview of the tech skills you need to become a web developer. You’ll also see the best courses and resources to acquire those skills. I've been a developer for over 20 years now.
I'm a self-taught developer, so I know how it is to learn something on your own. The problem is that now there are so many languages and tools and frameworks. Which one should you learn? And for each, there are a ton of courses. Super confusing! It can be hard to decide what course to take when you see hundreds of courses just for Python.
And this frustrates many beginners: Because it’s hard to know where to start And know what is relevant And which course is best And if there is no-one, no instructor and no community to ask for help, you can waist not days, but weeks and months To make it easier for you, I've collected all the best resources, all the best courses for you. And I arrange them into a learning path. Having courses and videos selected for you will super simplify your decision making. First, subscribe to my channel. The button is down here somewhere. Today, you can learn all you need just with one computer and an internet connection.
There is no excuse; all you need is time and persistence. Do not give up when something is not working or if you can't figure it out. The job of a web developer is to figure things out and to solve problems. In the beginning, you might not be clear yet, on where you'd like to specialize.
You might end up creating user interfaces; that is called FrontEnd. Or you might become a developer creating server code. You might be an all-rounder, which is called a full-stack developer. Maybe you will narrow your field to just mobile development, and maybe be a master of Android development.
Or you'll prefer to work with servers, and you'll make sure all works fine by managing infrastructure, deployment, and system configuration. There are also other paths you can follow, like data analytics and machine learning. Or you might prefer to write about technology and create software documentation. Or help with the search engine optimization..
What I want to say is, you don't need to know it all. There is enough for everybody. Just find the field that gives you pleasure and where you might be naturally good at. For example, I have no eye for beauty; the design is not my thing, but I love coding, and I recently discovered I like writing. And I like making videos like this.
This video will give you a technology overview. For each topic, I introduce, there are hundreds of courses covering it. I selected those that, in my opinion, are the best.
It might relieve you of the burden of too many decisions. I'll start with concepts every developer needs to know. Where should you begin if you are brand new to programming? The first you need to know is the basics of the internet: How does it work? Learn about browsers and how they work. What is Domain Name and hosting? What do HTTP/HTTPS/SSH mean? Here is an excellent video from one of my favorite instructors explaining the basics of the web. By the way, all the links are in the description below. Some of the links will be affiliate links; if you find anything you like, I’d be grateful if you buy from the link.
In any direction, you will need GIT. GIT is a version control system. Git will help you manage versions of your apps and revert when you need to.
GIT will make your life way easier. If you are using Windows, then I recommend using GIT bash instead of using the command prompt. A great graphical tool is the Git Source tree. Here are two Git tutorials I recommend for beginners.
One is a written tutorial, like a simple Hello World for Git. And the other one is from Udacity. On Udacity, you can find many high-quality free courses. I know this can sound scary, but you’ll need to know at least the basics of the terminal, the command-line tool. FreeCodeCamp has a nice free video tutorial on Youtube. FreeCodeCamp is the top FREE programming tutorial resource.
For work, you will need an editor, an IDE. IDE is more than a simple editor. IDEs boost productivity by reducing setup time, increasing the speed of development tasks. A FREE IDE I use is Visual Studio Code.
If you decide to be a frontend developer, then you will be an expert in these. In simple terms: HTML elements are the building block of every page, CSS is a style sheet for these documents. With CSS, you color the button, size them, basically you design a page..
The interface you’ll make will interact with the back end. FreeCodeCamp has a full course on HTML 5 and CSS3 you can take. After you learn how to make a website, you'll need a server, a host to host it. The next step is to learn about hosting and cloud providers.
After having your first win, you'll go and get acquainted with advanced fundamentals. You cannot be in web development if you don't know what web services and Restful API's are. They help applications communicate with each other over the internet. Watch this video on youtube to know more about API's Then you'll learn about Web APIs like DOM, Fetch, Local storage, Service workers.
These are APIs for the browser. They help with apps working online and offline, and more. Watch Free resources in the description.
So far, so good. If you've come so far, you are on your way to becoming a real web developer. Now we get to some serious talk. Data structures, Algorithm, Space & Time complexity. These are the fundamentals if you want to learn to code. I've given you a few free resources, and a few paid.
Zero To Mastery is from one of my favorite platforms. Andrei explains all concepts in-depth and super simple. Master the coding interview is a course you will want to revisit before going to any job interview. It includes common questions about data structures and algorithms asked in a job interview.
Security is the next topic you will want to know at least the basics of. Learn about HTTPS and CORS. There are plenty of high-quality free courses you can take to start learning about web development. freeCodeCamp and Codecademy are excellent choices and are great to set your foundation. I would recommend a few Bootcamp courses, like the one from Angela Yu and Colt Steele. Watch a review of both Udemy courses on this channel.
You can find them in my Reviews Playlist. Another one is from Zero to Mastery I have already mentioned. Zero to Mastery is a subscription-based platform, and you can find great courses there, like this one: The complete Web developer in 2021. You will not regret subscribing to their platform.
Or you can specialize in technical writing and create software documentation, like API documentation. A good technical writer can earn as much as a good developer, and they get to explore the latest technology while developers do it. Anyways, if you are interested in SEO, go to Seomoz; it’s where I explore. Coursera also has good specialization. And if you decide you’d prefer to write and make eLearning topics, than watch Google’s technical writing courses. I also like this written API documentation FREE course from a super exciting blogger and podcaster.
Ok, let’s start with frontend development. As a frontend developer, you will link together the world of design and technology. The interface you’ll make will interact with the back end.
But very simplified, Angular is a full-blown framework that solves many things but, on the other hand, has a very solid opinion on how you need to do things. You won’t be doing a simple plugin with it. Vue, on the other hand, is very lightweight. And React is somewhere in the middle. I would suggest you start exploring React.
Zero to Mastery has a great complete React Developer course where you go from complete beginner to advanced topics like state management with Redux, hooks, and GraphQl for data manipulation. Maximilian Schwarzmuller has an excellent course on Angular, it is up to date, and Maximillian is a great instructor. You can check out his YouTube channel to see how you like his teaching style. He also teaches Vue. Both courses are super long, but you will learn all you need, and you will be building projects while learning.
As a frontend developer, you will use GIT daily. The basic commands you will use each day are commit, push, pull, merge, and branch. For advanced usage, check out Udemy courses from Jason Taylor.
And Git is not all you will use. You will use all sorts of tools from package managers like npm and npm scripts to WebPack, the module bundler. ESlint will analyze your code.
You’ll be using Babel for compiling. Browser DEV tools will help you find bugs, and LightHouse speed up your apps. You will also learn how to test your code and deploy it. One thing I really recommend is that you learn how to use Chrome’s dev tools. Check out the Youtube crash course in the description. Here is also an npm tutorial for beginners and a Webpack tutorial.
Sockets help you create a live app that can communicate two ways, like games or chat apps. With Local storage, you can store some data in a browser without a back-end database. Service workers improve performance and enable the app to work offline.
We’ll go deeper into mobile development later in this video. I’ll tell you all about it. You can get great courses on Udemy.
Right now there is a sale, and they cost only 9 dollars. You can learn these tools for the cost of a lunch or two. You can also use frontend technologies for desktop applications. Many editors were created with Electron, the framework for desktop applications.
GraphQl is an alternative to Web Services, API’s. There is a big chance you’ll be using GraphQl in your projects. One pretty great tutorial is Free on Youtube, and the other one I recommend is on Udemy. Static site generators help you create blazingly fast websites. The greatest generator today is Gatsby.
Gatsby is a smart site generator, not just a generator. The best course on Gatsby is from Tom on Udemy. There is also Jekyll. Jekyll is a much simpler generator, perfect for smaller websites. I have a course on Udemy; You can contact me if you need a coupon for the course anytime.
You can also learn about server side rendering. I’ve made a video explaining how server-side rendering with Next differs from site rendering with Gatsby. You can watch it on this channel. As a frontend developer, you need to be familiar with using Content management systems. T he most spread traditional CMS is WordPress. I'll tell you, sincerely, I don't like it.
If you want to get rid of me, tell me you need me to make a WordPress website. Even so, more than 30% of the websites are done with WordPress. And you might want to learn it.
But to create plugins of your own, you'll need to learn how backend apps are done. WordPress is done with PHP, a language I started working with more than 20 years ago. What I would recommend is getting to know the headless type of CMS. Headless CMSstill provides a way to author content, but instead of having your content coupled to a particular output (like web page rendering), it provides your content as data over an API. WordPress also has a Headless version.
Here is an excellent tutorial from FreeCodeCamp that will teach you all the important things about creating a WordPress website. Other headless CMS with mentioning is Netlify CMS and Sanity.io. You can find great Free tutorials about Netlify CMS and Sanity.io in the description.
The others are Strapi, Contentful, and Prismic. You don't need to know them all; check them out, and when a project comes, you will know what to choose from. But yes, to work on a CMS and implement new features, you need to work with a backend. This is the end of the frontend path.
As a backend developer, you will implement the server-side business logic. You'll be implementing user authentication and working with databases. You'll take care of data validation and data storage.
You will schedule processes, and you'll be responsible for server-side web application logic. And the integration of the work frontend web developers do. Backend developers usually write web services and APIs. API's used by frontend developers and mobile application developers. If you follow both paths, you'll become a full-stack developer. A full-stack developer is a jack of all trades.
He or she knows about frontend technologies and backend technologies. He has a full understanding of the complete tech stack. The first thing you need to do is pick a backend language to learn.
It's also quite easy to learn. Other options are Ruby, PHP, or Typescript. Functional programming languages are specially designed to handle symbolic computation and list processing applications. Functional programming is based on mathematical functions. In my opinion, Functional languages are Scala, Haskell, Erlang, Clojure, and Elixir.
Java is a popular language used for heavy server applications. Rust is known for its security and was the most popular language in StackOverFlow for the last two years. Other popular choices are .NET core, C++. C++ is used for operating systems and databases; anything where the raw performance or close integration with hardware or operating system is important. Then Kotlin. You can use Kotlin for any development, be it server-side, client-side web, or Android.
With Kotlin/Native currently in the works, support for other platforms such as embedded systems, macOS, and iOS is coming. Google developed the programming language Dart. It's used to build mobile, desktop, server, and web applications. Data miners use the R language for developing statistical software and data analysis. Go is a flexible language, able to solve a lot of problems.
You can use it for system and network programming, big data, machine learning, audio, and video editing, and more. Again, like with anything in technology. It's not about which language is best, it's about figuring out what would best solve the problem you have at hand. Anyways, start with Python or Node first.
If you have absolutely no prior knowledge of programming, then start with Coursera's Python for Everybody specialization. I've made a review of the specialization here on Youtube. Then I recommend two more courses on Udemy if you really want to master Python.
For node.js there is a nice introduction on FreeCodeCamp and a great course on Udemy from Andrew Mead and Rob Percival, both exceptional instructors. I've also listed other courses for other languages, which you can check out in this video's description. When you pick the language, you start with the basic syntax. You learn about data structures and algorithms.
You will get acquainted with design patterns, standards, and best practices of the language. No matter what kind of project you are doing and what language and tool you are using, keep in mind two strategies. The first one is the KISS method. Kiss method stands for Keep it super simple.
Do not overcomplicate when it is not needed. What you could also have in mind is MVP. MVP is a minimal viable product.
First, do the simple example of code functionality, then add to that. Do not over complicate anything. Which goes well with the next method. That is YAGNI. It means You aren't gonna need it.
That is very often true. So, my friend: keep it simple. Yes? Learning a backend framework will be the next thing on your list. A framework is a foundation on which you build your program.
It is a set of libraries you can use. Or better, it is a skeleton on which you build your app. There are several for each programming language. The most popular one for node.js is Express. Express has a lot of utilities and features, making development easier. Django or Flask are a popular choice for Python.
Ruby on Rails is for Ruby. PHP has Lavarel, And java programmers prefer Spring. Jose Portilla on Udemy has a great Full Stack developer Bootcamp where he teaches Python and Jango, but also other technologies, not only for the backend. Express is super simple; you can watch the Free video on FreeCodeCamp to learn about it. Java ecosystem is more complicated; that is why I recommend the Spring Framework Masterclass where you will learn Java Spring Framework with Spring Boot, connect to databases with Spring JDBC, and Hibernate.
You’ll be testing with JUnit & Mockito. It’s an excellent course. As a backend developer, you’ll also need to be familiar with servers and Cloud providers and all the services they provide. The best cloud providers are Google Cloud, Amazon AWS, Microsoft’s Azure, IBM, then Heroku and Digital ocean. Coursera has a great specialization teaching you about developing applications on the cloud.
There is another popular concept, and that is serverless computing. It’s an execution model where the cloud provider is responsible for executing a piece of code by dynamically allocating the resources. The code still runs on the server, but it allocates machine resources on demand. Cloud provider only charges for the amount of resources that were used to run the code. If your code is only executed a few times per day for a minimal task, why would you pay for a full-blown server? You can watch an introduction to serverless on Youtube, showing you how to run a serverless code on the AWS. There are two things you’ll be doing for sure if you are a web developer.
You’ll be testing your apps, and sooner or later, you’ll be implementing authentication and authorization. Almost every app also needs user authentication and authorization. Authentication means confirming your own identity. In comparison, authorization means granting access to the system. Authentication is the process of verifying who you are, and authorization is verifying what you have access to. OAuth is an authentication protocol you must know.
It allows you to approve one application interacting with another on your behalf without giving away your password. You also need to be familiar with JWT or JSON Web Token, Basic authentication, OpenID. FreeCodeCamp explains tokens and JWT authentication perfectly.
And Traverisa Media created a great tutorial about Node.js with passport authentication. For testing, I recommend The Complete Software testing course on Udemy. And if you’re working with APIs, the most efficient tool is Postman. With Postman, you can make API calls and test them.
There is a great course on udemy to learn about POstman and Rest API testing. So, what else? Databases. Most apps need to store and read a lot of data. To do so, you need databases. There are two types of databases: SQL and NoSQL.
SQL databases are used for data that is very structured and types of apps where you need to make complex queries to get the specific information from this highly connected information. On the other hand, NoSQL databases are great when you have lots of data that is not structured and does not have many relations. FreeCodeCampa again has a great tutorial for beginners where you can learn about SQL and QUERIES.
The SQL database I recommend and use most often is PostgreSQL. You can watch a free full course on Youtube. Again from FreeCodeCamp. The most used NoSQL database is MongoDB. Maximilian Schwarzmuller has the best course, about MongoDb.
You’ll learn all about MongoDb there in this course. I’ve made a review of the best mongoDB courses; watch it on this channel. And yes, you will be working on creating APIs. API’s and web services are how the internet apps communicate with each other.
RESTful API is the most common way of communication. You can watch a course on Udemy to learn about APIs and Web Services in depth. Another more rounded course is Complete Web Developer in 2021 from Zero To Mastery.
Besides all other Web Development topics, you’ll also build an API. And now the advanced topics, here development becomes interesting. Many apps nowadays, like chat, for example, are real-time. To create real-time apps, you need to learn about Web Sockets. You can watch this great FREE video on Youtube to learn about web sockets. It’s a beginner guide to web sockets .
When you have lots of Data and lots of traffic, you will need to cache data to ensure better performance. For caching, you can use Memcache or Redis. Here is a great introduction to Memcached on Youtube. You might want to specialize in IoT and embedded systems.
The Internet of Things (IoT) means a system of internet-connected objects or things that are able to collect and transfer data over a wireless network without human intervention. For example, connected appliances, smart home security systems, autonomous farming equipment, wearable health monitors, and more. Coursera has two great specializations. The first one is an introduction to programming the internet of things and the other one development of secure embedded systems. Both will give you a foundation. Automated deployment is more of a SysOPS theme, but a good developer should know how to work with docker containers.
Some basic knowledge of how Kubernetes works is also a plus. Stephen Grider has a complete guide to Docker and Kubernetes on Udemy, Perfect course. Try to catch it on a sale. To get this knowledge for a few dollars is super cheap.
GraphQl is a new and popular alternative to APi’s. You can manipulate and query data without having to write an API. With GraphQl, you will use Apollo server and Apollo client. You can learn about GraphQl and how to integrate it with a React frontend in Stephen Grider’s course.
Why do I recommend his courses? Well, he is one of the instructors who know how to explain complex concepts in a super simple way. After his courses, I know what to look for if I get stuck because I know how things work. A message broker is a software that enables applications, systems, and services to communicate with each other and exchange information. You can watch a free intro to Message brokers on YouTube.
I also pasted a link to a great RabbitMQ crash course. RabbitMQ is the most popular among message brokers. All right. This is it. This rounds the backend development path. You’ll be selecting a language, a framework, learning about servers and the cloud, you’ll master security and testing, work with data and databases, create web services and you’ll dive into more advanced topics.
It will never be boring, I promise. Let’s go on a mobile development journey. Mobile Apps are everywhere, and every product has a mobile version in the app store. And there are a few paths to become a mobile developer. Right now, you’ll learn about the different types of mobile apps.
Depending on your skill set and use-case, you have to pick the type of Mobile App that you are building. The three types of apps are native apps, cross-platform native apps, and hybrid apps. Native apps are those that are built exclusively for a specific platform.
They could be iOS apps or Android apps, or even Windows apps. Mobile developers who work on native app development need to pick and specialize in one of these platforms. You will hardly ever meet a native mobile developer who builds both iOS and Android apps. This is because the skillset to build iOS vs. Android native apps are different. Native apps are the most traditional way of building a mobile app. Let’s say you want to build a native iOS app.
Let’s see what that means. Apple devices are super popular; for some is even a sign of prestige. Millions of people love apple devices and own an iPhone or iPad. If your app's target audience mostly uses IOS devices, you will be creating an app that makes their experience best. To create IOS apps, you would need to learn either Swift or Objective-C for coding the app.
Apple is known to be restrictive when compared to others. They do not support open-source like others, like Google or Facebook. Swift and Objective C are languages that are used to exclusively build iOS apps, and you may not find any value in them outside of the Apple ecosystem. You will need a MacBook to develop native iOS apps, and that would be your first purchase as an iOS developer.
*****You can find a complete IOS app development Bootcamp course on Udemy from Angela Yu. She is a known Bootcamp teacher, super sweet and knowledgeable. Raywenderlich has great courses both for IOs and Android and other alternatives I'll tell you about in a minute. Android has the largest number of users even today, and building native Android applications is another career path in becoming a Mobile Developer. Java is a popular programming language to develop Android applications. And recently, Kotlin has also been emerging as a popular alternative to Java in developing native Android applications.
Kotlin provides similar syntax and concepts from other languages, including C#, Java, and Scala, among many others. It's open-source. And you can write functional or object-oriented code. Since Android applications use open source languages like Kotlin, it's easier to use them, and it provides a better experience. You can find a great course FREE on Udacity that will teach you how to develop android apps with Kotlin. Android developer guides are also a great example of good documentation.
And I've made a review of several Android courses on Udemy. Check it out in this channel. Let's go to cross-platform apps. Although native development is still a good option as a career path, it is not always necessary to build native mobile applications.
Cross-platform apps are becoming increasingly popular these days. Cross-platform means you can develop apps both for Android and IOS with a single code base. This saves time and money.
Then why would you even build native apps? When you build a native app, you have complete integration with the hardware; you can easily access the camera, GPS, phone, and touch screen; it's not so with the other apps. Also, the security is better, the launch is easier, and a better user experience. As with everything in web development, you need to think about your options based on your requirements. If your users mostly use Android or IOS, then definitively go with native apps.
The Google community is super invested. Google is heavily backing Flutter, just like Facebook is backing React Native. There are two courses on Udemy worth considering if you want to learn Flutter. One is from Angela Yu and the other from Maximillian Schwarzmuller. Both are great.
Just pick up an instructor you connect with more. You can watch free videos or find them on youtube. Xamarin is a cross-platform, open-source platform using .NET and C#. Xamarin is part of the vibrant .NET ecosystem, used by millions of developers worldwide.
There is another category of cross-platform apps called Hybrid Apps. It's a bit different. Unlike apps built with React Native or Flutter, hybrid apps do not have access to native features of the mobile device out of the box. They use external plugins like Apache Cordova to integrate native features to the app. Hybrid apps render their graphic elements via a browser, which takes several steps to show the screen's component. These are essentially web views.
The link is in the description. And we've come to the end of the mobile path. You can choose to develop native apps, cross-platform apps, or hybrid apps. And even in those, you need to decide between Android or Ios and between google or Facebook Or Window.
*****Ok, you've come far. Let's take a look at another possible path to follow if you are learning web development. DevOps.
DevOps combines cultural philosophies, practices, and tools that increase delivery of applications and services at high speed. DevOps is way faster than organizations using traditional software development processes. If this is something that inspires you, then start with the basics. Pick a programming language for backed, like Go, Python, Ruby, Node, Rust. Understand different OS concepts, Process management, I/O management, virtualization, networking concepts.
Learn about Linux fundamentals and bash scripting. Learn how to manage web servers, learn about networking, security, and protocols. Find out about Proxies, caching servers, load balancers, and learn how to set them up. GIT will be your friend. You can find a getting started video on Youtube that covers all the basics.
It's from FreeCodeCamp like all other Free resources. The next thing to learn is managing the cloud. Learn about providers like Google Cloud, Amazon AWS, Azure, Heroku, and IBM and learn how to design infrastructure for the cloud. You can find Architectural patterns for the cloud on Youtube. And you can take AWS Certified Cloud Practitioner Training FREE on FreeCodeCamp. Coursera has good specializations.
Developing Applications with Google Cloud Platform and AWS Fundamentals. The specialization will get you started. As a DevOps specialist, Infrastructure as Code will be your thing. You will master Containers with Docker, manage orchestration with Kubernetes; you will use Ansible for Configuration Management, Istio for Service Mesh, and Terraform for Provisioning.
I cannot say enough praise for Nana on Youtube. She makes excellent tutorials for all DevOps topics. She is your go-to girl for DevOps.
You can learn about DevOps deployment automation on AWS with Udemy’s course. The build tools are used to automate the creation of executable applications from source code. Build tools automate various tasks, such as downloading dependencies, compiling and packaging code, running tests, and deployment. Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day.
Each check-in is then verified by an automated build, allowing teams to detect problems early. The most recommended tools are Jenkins, followed by CircleCI, TravisCI, TeamsCity, GitlabCi, and GitHub actions. As a DevOps guy or girl, you will monitor infrastructure, applications, and take care of logging. It’s a super exciting path to follow. And for the end, a data science path with machine learning. I’m not a data science or machine learning expert, but what I have learned I have found on Coursera.
Coursera was co-founded by Andrew Ng, who is a businessman, computer scientist, investor, and writer. He is focusing on machine learning and AI. He also teaches at Stanford University and is a founder of deep learning. I find courses on Coursera most insightful and engaging.
If you want to follow the DataScientist path, then you need to start with the basics. The specializations I would recommend are Python for everybody from the University of Michigan. The teacher is super cool. You can watch a review of the specialization on this channel. The next one is the Data Science Specialization from Johns Hopkins. It will teach you how to use R to clean, analyze, and visualize data.
You will learn the whole data science pipeline from data acquisition to publication. Applied Data Science with Python from the University of Michigan is another great specialization. You will conduct an inferential statistical analysis, enhance it with machine learning, and learn to recognize if data visualization is good or bad. Mathematics for Machine learning will help you implement mathematical concepts using real-world data. You cannot be a good data scientist without solid mathematical and statistical knowledge.
Another two comprehensive specializations are Machine Learning and Deep Learning. Coursera is a place to go when you want to get familiarized with data science and machine learning. All right. In the description below, you can find all the resources I mention in this video.
I hope this helps you navigate the landscape of web development. All the courses I recommend are the ones I like. I hope this helps your decision making. There is a lot to learn, and you can’t master it all at once. One day and one topic, one bug at a time, and you will become a master. Don’t forget to subscribe to my channel and have a great day!