Web development is a great place to start your adventure with programming. The concepts are easier than in other parts of computer science such as machine learning, or systems programming. I remember how hard it was, starting out. I decided the time has come, that I share some of my knowledge. Hopefully, it will help you or somebody you know to gain the, much needed, motivation and push to get started!
Who am I, to talk about it?
Before I get to the point, let me tell you a bit about myself. Currently, I am working as a front-end developer at EL Passion (software house), and after hours I am writing articles and coding in React Native with my friends at Applantic. I was always interested in programming, but I really got into it about two years ago, when I got my first job. I was lucky enough to start without having any actual knowledge, but it meant I had to learn a lot, really quickly. Since then, I’ve been constantly learning great things.
A lot of people say that you need to know math really well to get into programming. That’s not exactly true. The most important things you need, to start, are motivation and time. Math helps a lot when you get to the more advanced concepts, but to get started it isn’t really necessary. I didn’t excel at math, but I don’t feel like it was a huge obstacle in becoming a front-end developer.
As you can see, I’ve only been programming for about two years, which isn’t that much, but I feel like I can already make it easier by sharing my experiences over this time.
I remember that the hardest part was combining all the tutorials, into a more structured learning plan, that could teach me more than the bare minimum. Because of that, I prepared a simple roadmap, that might help you to get a better overview of basic technologies and things you should learn when getting started.
1. Start with the basics — HTML
Well, this is obvious, you always start with the basics. HTML is the backbone of the Internet. It’s not a programming language per se, but it’s a tool that every web developer should master.
What does HTML stand for?
H — Hyper
M — Markup
L — Language
HTML is basically a set of building blocks, that we can use to define the structure of our website. When I explain HTML to people who don’t know anything about web development, I like to refer to basic human biology.
HTML is the bones and the structure. It is the skeleton, of the human body. By itself, it can’t really do a lot, but it defines a structure.
2. Make everything look better — CSS
After creating a basic website skeleton, we can get started with CSS. It stands for:
C — Cascading
S — Style
S — Sheets
CSS is responsible for the visual part. It allows us to specify how elements (HTML building blocks) should look. We can define elements sizes, colours, backgrounds and many many more.
Going back to my biological metaphor, we could tell that CSS is the characteristics of the person. It tells us about skin colour, eyes, height etc.
At this point we get a human being, that doesn’t do anything yet, but has body (HTML) and look (CSS).
3. Start Building Things! (really important)
When starting out, it’s a great idea to copy things that are popular. Try to use HTML & CSS to create a copy of a Facebook post or Medium navigation. Go to Airbnb and copy their footer. It is essential, that you don’t spend too much time on theory, and that you spend it coding.
I recently saw a tweet by Chris Coyer that really resonated with me:
Perfectionism will slow down the process of learning, that’s why we should let ourselves fail sometimes, and gain more knowledge, quicker.
It’s easy to get weighed down by the number of new things you learn. One thing I learned when I was starting out, is that everything will become clear when it’s time. Consistency is the key. If you do something regularly you will achieve your goal. Something will ‘click’ in your brain, and you will get concepts that were impossible to understand just a week ago!
5. Try to collaborate with others
Working with other people is essential to building great things. Julius Caesar couldn’t build his empire all by himself. Here are a few places where you can find people to work with on side projects, learn from or with, and hopefully work with.
- Facebook groups — You will find great resources and fresh news here.
- Meetups (meetup.com) — Great networking opportunities, enhances possibility to quicker find your first job.
- Stack Overflow — Ask your questions, but only those that weren’t already answered! Great to build your online presence, and meet really smart people.
- Github — This will probably be your collaboration hub when working on open source, or personal projects.
6. Get your first job
It just gets easier from here. If you land your first job as a junior front-end developer, you will have people to learn from, and you will constantly learn and use your skills.
You hear a lot about lack of developers. It’s partly true because there is a huge lack of skilled developers. There are a lot of people that have some knowledge and want to become juniors, so there will be some competition when looking for your first job. From what I know there are two key things that will help you a lot in getting your first job.
- Attention to details — This is the moment when you need to care about the quality of your code. When you send over code samples or provide a link to your GitHub account, make sure that the code is clean. HTML should be indented and formatted correctly, CSS shouldn’t have a lot of comments, it should follow some of the good conventions (not essential, but helps a lot), like OOCSS or BEM. If you are asked to code something, make sure it’s pixel perfect. Font size should be correct, spacing and font-weight also.
- Motivation to learn — Show that you are willing to learn new things. Tell about what you are interested in, what are your goals. Show that you don’t do it only for money. Curiosity and openness is a feature that makes great developers great. If you show that you have it, it will make you worth investing in.
7. Keep Learning
Of course, there is still a lot of things to learn. And I mean a shitload… Probably you will still feel overwhelmed by the number of topics that you hear about.
It’s a good thing to know a bit about other aspects of web development, such as backend and databases. Understanding how the web works will clear out a lot of things for you.
Here are a few topics that are worth knowing:
- CSS preprocessors — SASS, SCSS, LESS, PostCSS
- JS build systems — Gulp, Webpack, Grunt
- JS Frameworks and Libraries — Vue.js, Angular, React, Preact, Ember and many more…
- SVG on the web
- Node.js — backend development with JS
- CSS methodologies — BEM, OOCSS, SMACSS, ITCSS and many more
- Semantically correct HTML
- JS Design Patters
- Mastering you code editor — shortcuts and plugins
I strongly recommend that you check out this Web Developer Roadmap for the year 2018. It’s full of great insights into the technologies of web development.
A lot of people say that w3schools are not a good source of information, but I disagree with that a bit. When I was getting started the explanations on this site were much more clear than the ones on MDN.
I would say that w3schools are better for the basic explanation when you are getting started and MDN is the ultimate go-to documentation that is very thorough and from is backed by the known companies such as Microsoft, Google, and Samsung.
When it comes to actual tutorials, I am not going to create yet another list of them because you can easily find that in google, but I can list a few websites that I’ve used and was happy with. You will find a lot of resources on this websites, so I won’t repeat them in the following sections. You will find most of the tutorials you need on those sites.
“Fail Fast, Fail Often”
This quote is a popular silicon valley mindset. Some people say it’s true, some strongly disagree with that. In my opinion, at the beginning of your web development journey, following this mindset, will speed up your learning progress by an order of magnitude.
Remember that learning is a process, and just reading won’t help you that much. Get your hands dirty, and stay consistent with your learning efforts!
Tap the 👏 button if you found this article useful!
The author of this article is Maciej. Front-end developer, working on web applications in a software house. He is interested in many things, even some that are not related to computer science, such as sports and music. You can find him on GitHub or LinkedIn.