December 13, 2025
Learn to build with a top-down approach
Learning a new development skill always seems hard. You may want to build a static website, a full pledged Web application, or a mobile one, but learning about the underlying technologies can make you feel scared. It’s because there is a fundamental problem in how we learn those skills sometimes. Here is what I advise to all my friends or colleagues that want to build something they never did before.
High-level vs low-level
Everyday, when we want to achieve something, we rely on something that we don’t fully understand or know about. When you want to draw, you might not know how your pencil is engineered or made of. When you want to go somewhere by car, you rely on a lot of technologies that you don’t know about to just make a few meters. That’s the same principle for development.
When you want to build something new, you can decide the amount of complexity you outsource to something that already exists. If you decide to use a lot of already existing technologies and rely on them, you are taking a High level approach. If you decide to build those foundations yourself, you are taking a Low level approach.
Motivation comes from High level
Motivation is key when learning something new. If you spend a whole day trying to make a mobile application and barely manage to create a splash screen, you are gonna loose it. This will increase drastically your chances of quiting as well as your fear of learning for next time.
It’s mainly because of the assymetry between creating and consuming. It’s easy to be a critic of mobile applications, as we are surrounded by them. We learned with our personal experience what makes a good one. When we build something and judge it, we do it with the same lens. Therefore, when we build something quite disappointing by our standards, we loose motivation.
By choosing tools and frameworks that increase the level you are developing at, you save time and increase quality. This helps a lot keeping the motivation to learn and progress in your journey.
Learn by using a High level approach
That’s why I advise to always start by learning with existing tools that will help you get something done quickly. It may not be perfect, maybe not customizable enough, or maybe under delivering on its promises, but what matters is to have something that you can feel is going in the right direction.
I had roommates in engineering school that wanted to learn to develop a web application and started with HTML / CSS courses. They spent 6 months trying to get a bare website working, and it was not pretty. You did not have any interactivity, and it was really ugly. They were the first to see this and be disappointed of course. They thought building websites was too hard and wanted to quit. Instead, I gave them a VueJS course, and helped them boostrap an application with a design system (Vuetify back in the days) so that they could start easily. After a few hours, they had a prototype of what they wanted to build. This gave them motivation to continue for 6 months.
Of course, if they knew that VueJS existed I think they would not have bothered to learn HTML / CSS first. This demonstrates that knowing what is the highest level you can get is vital if you want to learn something new.
When you want to build something, start by searching all the frameworks that could help you achieve this. Instead of trying to understand what are the technologies needed (Kotlin for Android for example), try to understand the ecosystem around it that could help you get a higher level. Finding tutorials, reading blogs, and keeping up-to-date with new technologies via X, Bluesky or Hacker News is also part of it.
In the end, what matters when you want to learn to build something is to search first for any mean that can makes it easier for you so you can keep being motivated.
Then go down
I then advise to learn by going deeper. Once you know how to build with High level tools, it’s best to let some of them go and understand what is going on inside. This is important to understand what you are doing and helps in a lot of various way:
- Understand the internals of your foundations
- Troubleshoot issues by yourself
- Customize and tweak the foundation you are relying on
- Change totally the foundation for something else
- Explain what you are doing, in interviews or to colleagues
This is for me the best way to improve your skills and knowledge. If motivation falls down, you can always go a bit higher to achieve something.
You can start diving by trying to recreate libraries you are using, reading their source code, or trying to achieve something unconventional that is not widely documentated. The goal is maybe not to be able to recreate everything from scratch, but to at least understand what is going on.
It’s the same principle with your car: it’s a useful skill to understand how your engine works. It can help you in certain situations, like when it breaks down. But learning to make an engine from scratch is an order of magnitude more complex and will prove less useful in your daily life.
It’s a piece of advise I give to everyone that wants to learn to build something: start from the top, and then dive in the bottom. It’s quite common for online courses to do it the other way around, by first explaining how TCP/IP works because learning React, but I think it’s fundamentally flawed as all students that want to build something will loose motivation.
Some people are genuinely passionate about the low levels and will embrace this method, but for a lot of people I know, building is more important than theory.