Summary
Many people don't feel satisfied in their current job, or search for a backup source of income in case of unemployment.In my perception, programming is not as difficult as one might think.
This blog post goes over the stack and skills necessary to start learning web development today.
Who this blog post is for
This blog post is designed for people...- ... that are dedicated and ambitious. You don't have to be a nerd to code, all answers are on the internet already. You only have to be willing to follow your goal and sacrificing your time and energy for the project you're working on.
- ... that are creative and search for a valve to express it. When you can code, you can literally build anything you want. It's like Minecraft, just a bit less visual.
- ... that search a new direction in their life and / or career. It's never too late to start coding. Digital services will always be needed. You think that no-code tools, AI or cheap programmers will take away your job? Maybe IT is not for you then. Some fear the flood while others learn to ride the wave.
Soft skills
Frustration tolerance
For me this is the most important soft skill. There will be moments where it just doesn't work. Where you sit in front of your screen and could go nuts. At least for me (lol). Sometimes programming is draining. Especially when the client doesn't value or understand your work. In such situations you gotta learn to stay in inner peace.Fun solving problems
The world of digits is not for everyone. However, programming is just a problem solving tool. With every new feature you code, you solve a problem. The problems are not that difficult when you split them into smaller chunks. Almost all answers are on the internet already. But since solving problems is literally everything you do, you should have fun doing it.Open minded and hungry mentality
You are a better programmer when you're open to new ideas and technologies rather than avoiding them.What I don't want to say with this quote is that you should learn dozens of technologies. There should be some kind of specialisation. You don't have to master every Javascript-Framework, it is sufficient already when you chose to become expert in React.js.
What I do want to say is that you should never stop optimizing yourself and your stack. You should never reject a technology, idea or concept just because you're not familiar with it. For instance, I see some fellow React devs being stubborn and not giving other frameworks (*cough* Angular) a chance, even though their might be cases where Angular is much better suited than React.
Social abilities
Programmers are rarely introverted nerds who are locked in their basement and have no contact with other people. As a freelancer in particular, contact with customers is essential for the success of the project. Therefore, you shouldn't shy away from contact with people.Eye for aesthetics
As a web developer, you build websites, i.e. digital business cards. If you're not interested in making the product look aesthetically pleasing and outstanding, then don't even start web development in the first place.Hard skills
HTML, CSS and Javascript
When you visit a website, you're actually requesting a ressource from a server. You can imagine it like a dialogue:You: "Hey server, gimme the ressource that is associated with https://www.borispoehland.com"
Server: "Aight, lemme check bro. ... *looks up* ... Found it! There you go mate! ... *sends back HTML, CSS and Javascript* ..."
Now that this is clear, it's only logical that in order to master web development, you have to master HTML, CSS and Javascript:Server: "Aight, lemme check bro. ... *looks up* ... Found it! There you go mate! ... *sends back HTML, CSS and Javascript* ..."
- HTML defines the structure of the webpage
- CSS defines the look of the webpage
- Javascript defines the logic of the webpage
It is essential to understand that you have to start learning these 3 technologies before anything else.
Important: Nowadays, almost no industry projects are coded with standard HTML / CSS / Javascript anymore. Instead, so called frameworks are used, among others React, Angular and Vue.
Still it is highly recommended that you learn "pure" HTML / CSS / Javascript before you dive into these frameworks. This video explains the reason very well.
Still it is highly recommended that you learn "pure" HTML / CSS / Javascript before you dive into these frameworks. This video explains the reason very well.
Ressources
- HTML beginner course (free)
- CSS beginner course (free)
- JavaScript beginner course (free)
- JavaScript full course (paid)
Version Control (Git)
Let's say you coded your first project. Now you get hired by a company, where multiple people work on the same software project. How are they exchanging their code? By sending it to each other via WhatsApp?Of course not! The magic concept they're using is version control. You upload your code to a so called repository, where collaborators can fetch your latest changes. You can also roll back in history or work on different "versions" of the repository aka branches.
I can highly recommend you to learn Git after you got familiar with the HTML / CSS / Javascript basics.
Ressources
- Git beginner course (free)
- Learn Git branching (playful and free)
More hard skills
The list is not done yet. However, it's important to learn one step at the time. Don't stress yourself. Put your expectations down.Important: Especially in the beginning you could sit multiple hours a day on a simple bug or feature because you're stuck.
Don't let that destroy your motivation. It's completely normal and belongs to the learning process. Always keep in mind: You will not make the same mistake again!
When you learned HTML / CSS / Javascript and Git, you're already in a good position. I'll leave some ressources here in case you'd like to go forward from there:Don't let that destroy your motivation. It's completely normal and belongs to the learning process. Always keep in mind: You will not make the same mistake again!
Ressources
- Typescript ("stricter" Javascript, very useful and preferrable over plain Javascript)
- Haikei (create various backgrounds, free)
- Gimp (free photoshop alternative, useful for graphics on your website)
- Real Favicon Generator (create favicons with support for all modern browsers, free)
- Usability heuristics (consider them when designing user interfaces)