How to study, practice, and land opportunities as a (Front-end) Developer
A practical guide for anyone starting (or not) a career in (Front-end) Development 💥
On this post
- Studying
- Formal education
- Informal education (aka street JavaScript)
- Practice and apply
- Create experiments
- Build your own site (and/or blog)
- Open pull requests
- Recreate famous libs
- Rebuild pages from famous sites and apps
- Challenge yourself with real company tests on frontend-challenges
- Look for opportunities (or be found)
- First of all: LinkedIn
- After all: Github
- Places with development jobs
- Get prepared
- Research the company
- Interview the company
- Develop soft skills
- Do well on the test
- Don’t give up❗️
- Final bonus
- Don’t compare yourself
- Take care of yourself
- Conclusion
I already wrote a post about what Front-end Developers need to know and another one about 15 things I would do if I were starting my career.
Now I’m going to write a kind of practical guide with a few paths for people who are starting out professionally (or not).
It’s important to say that my main role is Front-end Developer, so I’m more plugged into that market and naturally the tips are biased toward Front-end Development, but they can be adapted to pretty much any area of programming.
I also want to stress that people are different and no journey is going to be the same, so don’t take these tips as absolute truth. They’re just a collection of things that worked for me and for other people I know, but they may or may not work for you.
Studying
Credit:
fulcrumlabs.ai
No secret here, studying is going to be a constant throughout your whole career. Learning concepts, theories, ways of working, programming languages, and reinforcing all of that from time to time is essential.
There are two possible paths, and they’re not mutually exclusive: formal education and informal education.
Formal education
There’s a lot of debate about whether or not you need formal education in programming-related fields. It’s a very individual choice. I know amazing devs who went to college and badass people who don’t have a degree, and my only certainty is that it’s not a decisive factor for a successful career.
Fortunately, more and more companies are dropping the degree requirement, and in my opinion that makes the market more interesting and dynamic. Even so, having a degree is still important, for example, to get a work visa in some countries.
As for learning, I believe it can be worthwhile for establishing and learning more academic concepts about design, programming logic, software engineering, computer science, and so on. Part of that knowledge is going to be super useful over time.
Some examples of degrees are:
- Software Engineering
- Computer Engineering
- Computer Science
Design-oriented programs, like Digital Design and similar, can also be good choices, especially if you want to go deep on topics like user experience and interface development.
Another interesting option is technologist programs (short vocational degrees in Brazil). They’re shorter, usually 2 to 3 years. Some of them are also accepted by companies that require a degree, or for getting a visa in some countries.
As a reference, check out this talk by Afonso Pacifer at Front in Sampa, which for me was one of the best takes on this topic in recent times.
Informal education (aka street JavaScript)
The term street JavaScript (which I took from the video above) fits informal education like a glove. And it doesn’t matter whether or not you have a degree, you’re going to need a lot of informal study.
That’s because what’s taught in universities is not always aligned (and almost never is 😶) with the increasingly dynamic job market we’re living in. So a very well-known phenomenon happens:
People graduate but aren’t prepared to face day-to-day challenges
The upside is that thousands of pieces of content, both practical and theoretical, have been produced in recent years, and better yet, a good chunk of them are free or reasonably priced.
You can get informal education in several ways:
- Taking courses on Udemy, Alura, etc
- Looking up definitions and references on MDN
- Doing exercises on w3schools
- Reading Blogs
- Watching videos on YouTube
- Following issues on FrontendBR 😋
- Asking and answering questions on Stack Overflow
- Etc
There are also some platforms that make studying more playful, a few examples are:
The upside is tracking your progress (which is even visible to some companies) and being able to study by practicing, which makes the learning process easier.
And speaking of practicing…
Practice and apply

Even though theoretical knowledge is important, practice is what will really make you good at something.
Não existe fórmula mágica.
O único jeito de desenvolver novas habilidades, seja programação, seja cozinhar, seja qualquer outra coisa que te interesse, é praticando.
Apenas praticando muito, aprendendo com erros e acertos, é possível ganhar experiência e melhorar cada vez mais.
A few years ago I wrote an article worth reading later (in Portuguese) about how to bring theory closer to practice. Now I’m going to go deeper on that and give new examples and tips.
There are many ways to practice, and I’ll list some of them. With them you won’t only learn, you’ll also build a kind of portfolio that can help a lot in landing new opportunities.
Create experiments
It’s a fun and extremely effective way to practice, because you not only reinforce what you’re studying, you also develop your creativity.
Let me give you an example. In the past there was a boom of new stuff in CSS, a lot of new properties showed up. In 2013 I was loving drawing with CSS and studying JavaScript… and I had always wanted to learn piano, so why not try to build a piano with CSS and JavaScript?
This was the result:
Codepen, for example, is a fantastic place to create experiments like this. Just by browsing around you’ll find amazing ideas that can inspire you to create your own projects.
Throughout my career I’ve done plenty of experiments like this, and you can check some of them on the lab page of this site.
It’s an incredible way to learn by playing.
Build your own site (and/or blog)
Every time I feel like learning (and practicing) new technologies, I rewrite all the code of my site using a new stack.
With this tactic, besides learning new technologies, you also learn new methodologies, concepts, and project architecture. And there’s more: the work of thinking about the layout and the user experience is a phenomenal exercise in itself.
The result, besides the learning, is your personal brand available on the internet. Your site can be (and for sure will be) a great business card for your work. It can say something about your code, your skills, and a bit about how you think.
This is already the third version of my site, and I’ve already written an article (in Portuguese) about those experiences, explaining all the technologies and concepts I applied here. It’s worth reading to discover all the possibilities that can come out of a personal project.
Open pull requests
Opening pull requests on other people’s repositories is another really cool way to practice. That’s because this time you’re not the one deciding which stack or conventions will be used, so you get exposed to new ways of working.

The image above is a screenshot of one of the first PRs I opened, none other than on Bootstrap in mid-2013. Besides being super cool to help a project I actually used, I got some really nice feedback on the code and on the quality of the PR.
It’s interesting to note that by opening Pull Requests you can also develop some soft skills, such as:
- Teamwork
- Flexibility
- Written communication
- Among others
Even your English can get some practice, since a good part of the documentation and code is written in that language.
Besides contributing to open projects that can help lots of people, which is already pretty motivating, this work also stays available on your Github (or similar) for other people and companies to evaluate.
Recreate famous libs
In the so-called real world of the job market, it’s not always a good idea to reinvent the wheel. There are thousands of solutions that address many of the problems in modern Software Development.
But during your studies you have total freedom to build whatever you see fit.
Trying to recreate or reproduce famous libs, or the concepts they apply, is another interesting way to practice.
You’ll understand how things work under the hood and improve your skills in the technologies you chose.
And who knows, maybe the wheel you built ends up better than the original wheel? 😜
Rebuild pages from famous sites and apps
Especially if your focus is Front-end Development, another way to practice is to list a bunch of sites and apps that you use (or like) and try to replicate their layouts.
That way you mainly develop your CSS skills (since you need to replicate real layouts), plus HTML and JavaScript at the interface level.
You don’t need to rebuild the whole project, but it’s worth picking the pages and components you like the most and trying to get close to the original (or maybe even improve the layout and suggest it to the company in question 😂).
Challenge yourself with real company tests on frontend-challenges
This tip is a killer.
A few years ago, I created a repository to collect real (open source) tests from companies in Brazil and around the world.
The name of this repository is:
What does that mean?
You’ll literally challenge your skills on the tests companies use for hiring. Theoretically, if you manage to complete the challenge, you have the technical ability to get approved in a hiring process.
More than that, companies are looking for developers all the time, and if you do a really good test there’s a real chance that company will reach out to chat with you.
And even if that doesn’t happen, you can ask for feedback on the quality of your test, which is very valuable and can help you fix several aspects of your code or your line of reasoning.
Look for opportunities (or be found)
In a professional career, few things are harder than landing your first opportunities.
People don’t know you, they don’t know what you’re capable of, and they often have no confidence to bet on you for that job you liked so much.
And that’s how it is for (almost) everyone:
Início de carreira nunca é fácil.
Entre 2007-2009, enviei milhares de emails desses e fui ignorado 99% das vezes.
É assim com quase todo mundo, se essa é sua situação atual, continue firme, com trabalho e um tiquinho de sorte sua carreira vai ser foda 👊 pic.twitter.com/VqrQOlSqbu
It’s worth noting that I avoid talking about things I have no hands-on experience with, and I have almost no experience with freelancing. So all the following tips are focused on opportunities inside companies, whether on-site or home office.
First of all: LinkedIn
A long time ago, in a land far away, people used printed paper with a summary of their qualifications and skills. That paper was called a Curriculum Vitae (CV).
With the digital age, that paper was replaced by a digital version, usually attached to an email. Time went by and I consider the CV totally unnecessary for digital professions. Most of that information can be found on professional sites like LinkedIn.
That’s exactly why it’s important to have an updated LinkedIn profile. It’s a way to have your professional background available in a format people are already used to.
If your profile is outdated, take a little time to add more recent information about yourself. It can help a lot in hiring processes.
One tip: if you’re in a hiring process that requires sending a CV as an attachment, LinkedIn itself has a tool to generate CVs in PDF format based on the information in your profile.

After all: Github
Part of the practical tips I gave make use of Github, and you probably already have a profile there, or at least you’ve heard of it.
Opinions are divided, but these days I also think it’s very important to have an updated and active Github profile.
Speaking for myself, I would never refuse to hire or even contact someone for not having open code available. Amazing people would be discarded because of that.
But when a person has activity on open source code, you can get some sense of their technical level. In some cases you can skip practical tests, and even evaluate some soft skills based on their engagement in projects.
Besides, Github is a social network like any other.
Github é uma rede social como qualquer outra, mas voltada para o mundo developer, você pode:
- Seguir pessoas
- Ver as atividades delas
- Descobrir novas libs
- Ver tendências
- Participar dos fóruns (olá @frontendbr 💙)
- E principalmente aprender muito
Faça uso, vale a pena.
I already wrote a really thorough article about how to contribute to open source (which goes way beyond code) and the impact it can have on your career. I talk a lot about Github there, so it’s worth taking the time to read it.
Places with development jobs
Today there are thousands and thousands of places that share or post development and programming jobs in general, but I picked out a few of them.
- frontendbr
- backendbrasil
- cubo.network
- Hipsters Jobs
- Programathor
- Revelo
- trampos.co
- Geekhunter
The upside is that several of these sites already make your profile available for active searches by companies.
Get prepared
Got a positive response for that job you liked so much? Time to get prepared!
Preparation is essential in any field, including development and programming.
Research the company
Knowing more about the company is super important, not only things about its business, but also understanding, for example, what the work environment is like there and reading the opinions of people who work (and used to work) there.
It’s worth checking the company’s website and searching for news online and on social networks.
To see what people think of the company, you can talk to them directly on social networks like LinkedIn or check what was published on sites like Glassdoor.
Interview the company
Hiring processes are a two-way street, so never skip interviewing the company you’re talking to.
Clear up all your doubts, ask things like:
- What technologies do you use?
- What are the expected day-to-day tasks?
- What’s the career path?
- How does the company plan to grow?
- Where does it see itself in a while?
- How’s the revenue?
- How does it make a profit?
- What’s its competitive advantage?
- What are the working hours?
- How flexible are the hours?
- Is there a dress code?
There’s a really nice list with lots of interesting questions in this repository.
If the job is on-site, you’ll spend most of your day in that environment. Even if the job is home office, you’ll interact with the company’s processes and people most of the day.
So don’t skip clearing up all your doubts, and make absolutely sure you feel comfortable by the end of the interview.
Develop soft skills
The days of developers who only coded are fading (thank God). We hear more and more about soft skills in tech environments.
Your participation on several fronts of the business is essential for the company’s growth and for your professional and personal development.
Things like:
- Communication
- Teamwork
- Leadership
- Professionalism
- Flexibility
- Creativity
- Proactivity
- Empathy
- Etc
These skills are essential for any professional, and they’ll be evaluated in hiring processes and in your day-to-day as a dev. And yes, they can really affect your professional success.
The good news is that they’re skills like any other, so even if you struggle with some of them at first, all of them can be improved and developed.
Do well on the test
Practically every company has tests to evaluate people’s level before deciding on a hire. This is important even to align expectations on role and salary.
The tests can be of many kinds:
- Questionnaire
- Practical tests
- Theoretical tests
- Assisted test (pair programming style)
- Group dynamics
It’s actually not uncommon for more than one type of test to be applied in the hiring process.
During the tests, the tip is to always pay attention to what is being asked. Some tests may try to lead you into a mistake, precisely to test your analytical skills.
If the company doesn’t make all the phases of the process clear, sites like Glassdoor can help you understand all the stages and which tests will be applied.
And again, repositories like frontend-challenges can be an incredible ally at this stage, as I mentioned earlier.
Don’t give up❗️
We’re in a hurry, a big hurry, but a career is built over many years and, believe me, it’s going to have ups and downs. That’s natural. Every moment of sadness and joy matters for your growth as a person, which will also impact your professional growth.
So if you don’t do well in your first hiring processes or you don’t get selected, don’t get discouraged!
Try to understand where you didn’t do well and always ask for feedback from the people who interviewed you.
Knowing how to move forward and learn from mistakes is essential for building a solid career.
Final bonus
And if you made it this far, there are still a few things worth saying:
Don’t compare yourself
Sua evolução só deve ser comparada com a de uma pessoa:
- Você mesmo ontem
Ter outras pessoas como referências pode inspirar e abrir caminhos. Mas tente não se comparar com elas, pode fazer mal.
Somos universos com seus próprios acasos, histórias e contextos. Isso muda tudo.
Every step, no matter how small, matters in your growth. But they’re your steps and your growth.
We all carry our own universes inside us, and nobody else in the world will have a story just like yours.
That said, even if you know people who suddenly are (or seem to be) in a better position than you, don’t use them as a benchmark to judge your own progress. That can really do a lot of harm.
So yes, have people as inspirations and examples, that can help you build your own paths, but always compare yourself only with yourself.
Take care of yourself
Contribuir com comunidade dev é fodástico, mas nunca se esqueça de cuidar de você.
- Sua carreira
- Seus estudos
- Seu desenvolvimento pessoal
- Sua saúde
... Sua vida!
E quando cuidamos da gente, ficamos muito melhores pra ajudar e contribuir com outras pessoas e comunidades.
I talk a lot about open source. But take it easy.
Despite all the amazing philosophy around open source and dev communities, you need to take care of yourself first.
What do I mean by that?
Communities are addictive, and it’s super common to take on lots of responsibilities when we first get involved.
We want to create content, give a thousand talks, write a bunch of posts, and organize events. Many times, we want to do all of that before even having a job, having professional stability, or even taking care of our mental health.
That’s why I suggest focusing first on your professional and personal development. That way you’ll be well enough to maybe help other people with your work.
Conclusion
All the tips in this article were developed through lots, and I mean lots, of mistakes over the last 10 years.
They’re not absolute truths, and what worked for me may not work for you or other people. But part of what was presented can help a lot in building a solid professional life.
As complementary reading, in case you haven’t read them yet, I suggest taking a look at the two articles I mentioned at the beginning of this post:
I hope you liked it, and I look forward to your comments.
Catch you later! 😁