If you're just starting out on your coding journey, it's tempting to follow a lot of tutorials. They show you what to code, they teach you the concepts, and you get to code along with them. Sounds great, right?Â
The problem with tutorials, is that most of the knowledge doesn’t really stick with you. You feel productive because you’re writing code. But if the concepts you learn don’t get time to manifest in your brain, it’s not worth much. This is what’s often referred to as being stuck in tutorial hell.
I’d wager all developers have been there at one point. But there is a very actionable way to get out - to gain real, meaningful practice and really improve your skill set.
It’s called building projects. On your own.
Building projects forces you to face certain challenges and actually learn how to problem solve. It also helps you get familiar with the ins-and-outs of whatever programming language or framework you’re building with.
I think most people see the value in this, but it also raises a very important question that a lot of junior developers face: What should you even build?
Luckily there’s some great ressources out there to help with that.
One of my favourites is this GitHub repo with app ideas for Beginner, Intermediate and Advanced level. Each project has a description with specific user stories you can implement, including bonus features if you’re feeling adventorous.
There’s also this great list of public APIs that you can use and build on top of. This is a perfect opportunity to pick a topic you’re interested in - like books, finance or gaming - and build a small UI on top of that. This will teach you how to work with API’s for fetching data (including handling loading/success/error states) which is something you’ll be doing all the time when working as a developer. Consider picking one without Auth to get started quickly.
There’s also this neat article on how to gain practical experience as a web developer. That includes stuff like building websites for free for non-profits, contributing to open source or starting your own side project.
But building real projects like this isn’t just great for improving your coding skills. It also gives you something to put in your portfolio, that you can show off when applying for jobs. The ability to take a problem description and turn it into a fully-fledged solution, that can be shared online, is a great skill to have. Companies are always looking for people that can take a project from it's early stages all the way to completion. It's also a great conversation topic during interviews, where you get to talk about how you implemented certain features and why you made certain tradeoffs.
All of this is not to say that you should stop doing tutorials at all. Tutorials are great to learn the basic syntax of a language, or understand the idea behind a library. Tutorials are also nice if they show you how to implement a certain isolated feature, like an animation or an algorithm.
The problem with tutorials is that nothing ever goes wrong in them. And that's not what happens in the real world.Â
That’s why I also recommend to take the idea / topic from a tutorial and adapt it into something else. For example, if a tutorial is teaching you to get some data about books from an API and display those in a list, switch it up! Use another API from the list above, and create a list of movies instead.
This is especially useful as a beginner, when creating an entire project from scratch can be challenging. Modifying tutorials tends to be easier, and you’ll still learn valuable lessons by changing the topic, adding features, and running into problems. And solving these problems (without an instructor to hold your hand) is where the real learning happens.
Links worth checking out
Senior web developer lessons. This reddit thread prompts senior developers to share their best advice and valuable lessons so others can learn from them. There’s a lot of great advice in there, like always being curious, not being afraid to ask questions if something is unclear, and writing readable code (instead of clever code).
LLRT: Amazon’s JavaScript Runtime. An interesting and very recent release, this new lightweight JavaScript runtime (by Amazon) is designed to be much faster and better support Serverless applications. The benchmarks look impressive, and it’ll certainly be interesting to follow this project - but don’t stress about diving into it with Node and Bun still being the most important players in this area.
Aceternity UI. This collection of components is very similar to ShadCN UI that I’ve previously shared in the newsletter. Basically it’s a lot of ready-made, super slick components you can copy paste into your own project and then tweak to your liking. Aceternity has a special focus on animations and creating really sleek UI’s, so it might be a nice candidate for some of those side projects you’ll obviously be building after today!
Thanks Mads!
Thanks for sharing about Aceternity and the Reddit thread!
Cool UI library and a ton of nice learnings from the senior web developer thread!