Career / Frontend / Learning
Starting a Frontend Career Through Self-Study (Without a Bootcamp)
Note: I’m trying out a Trakteer page for donations to support my blog/writing, (supports almost all digital wallets) https://trakteer.id/hanipcode . Please support me if you...
Note: I’m trying out a Trakteer page for donations to support my blog/writing, (supports almost all digital wallets) https://trakteer.id/hanipcode . Please support me if you enjoy this post
In this post, I’ll try to explain how to start a frontend career through self-study and with almost no cost at all. Is this the best way? Of course not. Some people benefit from the social side of a bootcamp, where they can learn together. But others actually learn more effectively on their own. Well, this guide is for people in that second group.
Basically, I think the timeline for starting a frontend career should look something like this.
The Attitude of a Software Engineer
Before getting into the material, I’ll first talk about the attitude an engineer should have.
A Desire to Learn
It’s no secret, you won’t survive in the IT world if you stop learning. A software engineer has to be willing and able to keep learning. Frontend development moves especially fast. If you stop learning, your career is guaranteed to stall right there.
Curiosity
A software engineer also needs to be curious. This is what allows you to spend hours working through the bug-solving or bug-fixing process. If your curiosity runs out quickly, you’ll give up sooner and turn to quick-fix solutions.
Be Willing to Read (RTFM: Read The F*cking Manual)
A software engineer has to be willing to read. At the very least, read source code and documentation. Asking something that is clearly already covered in the documentation will often get you roasted by the software engineering community. But that’s fair enough—just so you know, engineers aren’t exactly thrilled about writing documentation either. They already went to the trouble of writing it, and you still won’t read it. Sheesh.
A Willingness to Share Knowledge
If you look around, successful engineers are often the ones willing to share. Almost every well-known dev has a blog or is active in a community—take Dan Abramov (inventor of Redux) and Kent C. Dodds (PayPal engineer, creator of downshift), for example. They all write or participate in communities. In fact, writing and being active in communities also helped advance their careers—for instance, Dan Abramov and the creator of Babel were eventually recruited by Facebook.
Mastering the Fundamentals
What are the fundamentals of frontend? In frontend, there are HTML/CSS/JavaScript(JS).
HTML
HTML is a markup language used to structure website documents. So learning HTML is a must. It’s even better if you apply HTML best practices such as semantic markup and start learning SEO.
beginner:
- Menyusun dokumen website dengan html
intermediate:
- Semantic HTML5 (utilize tag tambahan seperti main, nav, section etc)
advanced:
- mulai pelajari tentang SEO (meta tag, viewport tag, etc)
CSS
CSS is a styling language used on websites to make them look better. CSS is a very broad subject because it’s also closely related to UX. Here are the learning stages
beginner:
- memahami property property pada CSS
- mampu melakukan styling tata letak sederhana
- mengetahui tentang selector (Id, class, select attribute, etc)
- mengetahui tentang specificity (ID vs class vs tag vs important)
interemediate:
- mmebuat animasi sederhana dengan css
- mengetahui tentang pseudo classes (:before, :after, :nth-child)
- mampu styling dengan framework css
- mengenal basic css preprocessor seperti sass/less
advanced:
- mengenal lebih dalam css preprocessor (function/mixin/etc di sass)
- Mengenal konsep strukturisasi CSS (BEM, OOCSS, etc)
JS (JavaScript)
JavaScript is a programming language that, in the context of frontend, is used to make websites interactive. The scope of JS is actually very broad, so I’ll simplify it here
beginner:
- memahami bahasa pemrograman javascript (varriable, type, control flow, looping, etc)
- mampu menggunakan vanilla javascript untuk interaksi interaksi simple (jQuery jg masih oke, tapi kebanyakan yang bisa dilakuin jquery udah bisa dilakuin vanilla javascript sih)
- meemahami DOM
intermediate:
- mempelajari konsep Functional Programming dasar seperti closure, higher order function, etc (most of frontend framework mmeilih jalur FP)
- mampu menggunakan Frontend Framework (just pick one React/Vue/Angular)
- Mengenal static typing untuk JS seperti Typescript / Flow
advanced:
- Mengenal engine browser seperti V8
- Mengenal event loop dan microtask
- mengenal lebih dalam frontend framework (misal advanced pattern seeperti Render Props, HoC, di React)
- Mengenal design pattern
- mengenal lebih jauh konsep konsep FP (currying, monad, etc).
Additional Skills/Concepts
Here are some additional skills/concepts you need to master to support your frontend career
beginner:
- git basic
intermediate:
- clean code
- scrum (Jira/ trello board at leeast)
- structuring git project (branching/git flow/tagging, etc)
advanced:
- Design Pattern
- Design System
- Technical Leadership
Learning Path
So, how do you start learning? My first piece of advice is to be patient. Learning the basics will definitely get boring
Learn the Basics
First, learn the basic parts of HTML/CSS/JS above. The expected output is that you can build a very simple website and understand the basics of JavaScript. At this stage, focus on learning the fundamental concepts instead of going through tons of tutorials. Even if you do follow a tutorial, make sure you’re also trying to understand the underlying concepts. Once you understand the concepts, if you want to take the optional internship step, start building a portfolio and a GitHub account. You can learn Git concepts along the way too. It’s a good idea to manage every portfolio project you create with Git and push it to GitHub.
(Optional) Start an Internship
If you’ve learned the basics and truly understand the concepts, you can start trying for an internship at a startup or software house. Here’s what you need to prepare if you choose this path
- portfolio
- akun Linkedin
- akun github (berisi portfolio)
- blog (nilai plus)
Learn Intermediate Skills
If you choose the internship path and the company where you intern happens to use a JS framework, you’re pretty lucky because you can kill two birds with one stone. If not, this phase might be the most fun part of learning. Your knowledge is starting to grow, but you haven’t yet faced the reality that you still know very little haha. Learn a frontend framework. My suggestion is to first get familiar with all of them conceptually, then choose the one you like most. After learning, build lots of portfolio projects to prepare for the next phase
Start a Full-Time Junior Dev Job
Just like with the internship option, here are the things you need to prepare. Of course, you’ll need to be better prepared than when applying for an internship. This is also the ideal phase to start a blog or share with the community, because you already have enough knowledge to share. It will also build your personal brand and increase your chances of getting a job.
- portfolio
- akun Linkedin
- akun github (berisi portfolio)
- blog (nilai plus)
Keep Learning and Growing Your Career
Once you get a job, keep learning and growing your career. Start getting into advanced topics. You really won’t run out of things to learn—the things I listed are actually still only a small part of it. And keep moving forward in your career as a frontend developer.
Typical Career Path
Here’s a typical career path for a frontend developer. It’s not the same at every company, but it generally looks like this:
- Intern FE Engineer
- Junior FE Engineer
- FE Engineer
- Senior FE Engineer
- FE Team Leader
- FE Tech Lead
- FE Architect (Principal Engineeer) / Engineering Manager (Frontend)
Free Learning Resources
Here are some resources that might help
W3Schools
https://www.w3schools.com/ is an interactive website where you can learn
Eloquent JavaScript
A free JavaScript book, https://eloquentjavascript.net/ is highly recommended for learning JS
YDKJS (You Don’t Know JavaScript)
A free JavaScript book if you want to read it on GitHub here
JavaScript Indonesia Facebook Group
Note: Maintaining this blog takes time. If you find this post useful and would like to donate so I can keep writing, you can visit my Trakteer page and make a donation (supports almost all digital wallets) https://trakteer.id/hanipcode . Please support me if you enjoy this post