The definitive roadmap to become a Web Developer [part 1]
![The definitive roadmap to become a Web Developer [part 1]](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1646269917399%2FMYIVd8rcI.jpeg&w=3840&q=75)
Why I created this roadmap
Hi everyone. It's been more than a month since I started my journey as a web developer. I think it's been relatively easy. But it was not always like this. Some months ago I tried to become a web developer but the results were totally different.
Why is that?
You know, when I gave it my first try, I didn't have a clear guidance. I just looked for some tutorials on Youtube. But most of them are incomplete or not consistent with the tools they use or the methodology they use in order to teach.
This makes it difficult to learn. One day I was writing my first html document and the next day I was styling it using CSS. And the following day I was using JavaScript to create some "cool" stuff. You might think this is great, and it would be, except for the fact that I didn't know the basics.
Although I was writing some JavaScript to modify the DOM, I didn't even know what DOM is. I didn't know what "Semantic HTML" is. I didn't know lots of things. And there I was... trying my best to become a developer. It was frustrating each time I wanted to do something cooler, but my limited knowledge didn't help me to do so.
I remember when I wanted to implement a button to play and pause a video, using JavaScript. First, I started by learning how to "write" a button in HTML. Then I had to learn how to link that button to a JavaScript code. I discovered something called "querySelector". And since I wanted to understand everything, I had to learn something about media elements.
At the time, I found some of this stuff really complex. That's why I quitted.
And I think that's why many people quit as well.
They don't have a clear guidance. They just learn what they think they must learn in order to create what they want to create.
And this is not a good methodology, because you might need some advanced knowledge. And if you don't have the basics, it will not only be frustrating, but time-consuming as well.
Now, in my second try, everything is different. I received help from some of my friends. And everything seems to be easier.
I don't want people to get frustrated at coding.
I don't want people to quit.
That's why I decided to create a roadmap. A roadmap which will be a guide to make your path smoother.
If you're already a developer, this might not be useful for you. But it might be for your friend, your partner, or you little brother.
The roadmap part 1.
The following roadmap is intended to be a guide for everyone who wants to become a web developer and has no idea about where to start. This is just the beginning (wait for the second part) but it is enough to get you started.
1. Prework: Choose your OS and configure your computer (Windows, Linux or Mac)
- What is a browser?
- Browser and its devtools.
- Install and customize your text editor (recommended: Visual Studio Code)
- What is a Live Server and how to use it.
- Installing Homebrew (or equivalent, depending on your OS) and NodeJS.
- Basic Terminal commands
- What is Git and Github?
- Working with Git and Github: Commits, push and pull request, SSH and HTTPS keys, versions and conflicts. (I'll write a whole roadmap for Git and Github)

2. Web developer fundamentals
- Frontend definition
- Backend definition
- Full Stack definition
- Static vs. Dynamic pages.

3. HTML
- Anatomy of a webpage: What is HTML?
- Index file
- Head tag and its content
- Body tag and its content
- Parts of an HTML tag
- Semantic HTML
- Basic HTML tags
- Media tags: img, figure, video
- Image formats: Lossy and lossless
- Form tags: form, input, calendar, autocomplete, require, select.
- Differences between "input type submit" and button tag.

4. CSS
- What is CSS?
- Using CSS: tag, selector, class and ID.
- Pseudo-class and pseudo-elements.
- Anatomy of a "CSS rule"
- Box model
- CSS Inheritance
- CSS specificity
- CSS combinators
- Measurements: Absolute measurements, EM, REM
- Position
- Display
- Display flex
- Display grid
- Variables
- Webfonts

5. Responsive Design
- Media queries
- Mostly Fluid
- Layout shifter
- Column Drop
- Best practices for responsive design
- Media in responsive design: Page load time.

6. Mobile First Design
- Why mobile first?
- Growing your project from mobile to desktop.

7. Basics of web accesibility
- Semantic HTML
- Text
- Labels, alt and title.

9. Basic Frontend development: HTML and CSS integration
- Browser engine definition
- Most used HTML tags
- Display: block, inline and inline-block
- Z-index
- Most used CSS properties
- CSS Architectures definition
- OOCSS, BEM, SMACSS, ITCSS and Atomic Design
- Build your first functional WebSite

10. CSS Transform and CSS transitions.
- Why and when to use CSS animations?
- Properties used to create animations
- Pseudo-classes and pseudo-elements in animations
- Timing functions, planes and axes
- Transform translate
- Transform rotate, scale, skew and matrix
- Transform origin
- Transform style and perspective
- Backface visibility
- Parallax effect: HTML structure
- Parallax effect: CSS styling
- Transition property and duration
- Transition timing function and delay
- Accesibility and performance

11. CSS Animations
- CSS Counters
- Stacking context
- Animation name and keyframe
- Animation duration
- Animation timing function
- Iteration count and delay
- CSS Triggers: layout, paint and composite
- Animation debugging using devTools
- Best practices for web animation

12. Introduction to JavaScript
- What is JavaScript and why JavaScript?
- Variables, functions and syntax
- Function declaration and function expression
- Scope
- Hoisting
- Coercion
- Truthy and Falsy values
- Operators
- Conditionals
- Switch
- Arrays
- Loops: For and while
- Objects
- Closures

13. Basics of Object Oriented Programming (OOP)
- Differences between OOP and structured programming
- UML
- Objects
- Abstraction and class.
- Modularity
- Inheritance
- Class definition
- Methods or functions
- Atributes
- Constructor Method
- Instance
- Encapsulation
- Polymorphism
14. POO using JavaScript
- All in Basics of OOP, but using JavaScript, plus:
- Object literal and prototypes
- Getters and setters
And that's all for now. I think this is pretty good to start with. Eventually, there is a lot more to learn, but we will talk about it in another post.



