Rabbit Holes and When to Avoid Them
Tags: webdev, programming, productivity, learning
Published: 2024-01-11 12:35:40

If you're a programmer or aspiring to become one, we can likely agree that one of the earliest realizations in our journey - and also a point of near-universal consensus in the tech community - is that we are all destined to be constant learners. Continuous learning, reviewing what we know, exploring concepts in different contexts, and regular practice become almost daily rituals for those committed to a career in tech.

With this unique characteristic related to the field, many problems emerge in our learning process. One of them is the occurrence of rabbit holes — a situation where a developer spends a significant amount of time delving into a specific topic related to the main subject they're currently addressing. The problem lies in the fact that this time is often "robbed" from other important tasks and comes at the cost of neglecting what really matters, or worse, getting lost in unrelated subjects.

The term originates from Alice in Wonderland, where Alice falls into a rabbit hole and finds herself lost in a bizarre and confusing realm. Similarly, when a developer descends into a rabbit hole, they may get entangled in an complex and time-consuming inquiry.

In my opinion, there are two different scenarios that make it easy to understand and face rabbit holes: 

A - when you’re a total beginner or junior dev;
B - when you’re a mid-level or senior dev.

This way, the approaches will be completely different from each other. Let’s begin with scenario A. 

### When you're a junior dev

In this case, you need to understand that rabbit holes are really **dangerous** for you, and you need to avoid them whenever you can. The reason they pose a danger to you is that, as a beginner, it’s much easier to get lost between a lot of topics and concepts. This can lead you to spending time trying to learn all about a subject that you aren’t ready for or that won’t benefit you much. 

It can be tempting to go deep into a topic and feel like you need to become an expert *immediately*. Try to avoid these feelings; otherwise, you’ll just end up overwhelmed. Follow learning guides or roadmap paths like [this one](https://roadmap.sh/full-stack) provided by **roadmap.sh.** 

It’s important to understand that many people put effort into structuring these guides, including everything that matters, in an order and a way you can evolve. This ensures that the things you need to know about web development will be covered exactly when you need to know them. Don’t get out of the trails; stick to these roadmaps as much as possible. Monitor yourself and avoid spending time going down rabbit holes because getting sidetracked can ruin your learning process and [flow state](https://www.betterup.com/blog/flow-state).

### When you're a mid to senior dev

If you’re a more experienced software engineer, rabbit holes don’t represent danger as in situation A. This statement relies on the fact that your experience will act like a lighthouse in the dark, guiding you. This way, you can have a power that doesn't exist in scenario A because your experience makes the difference and can turn a rabbit hole into a truly worthy journey. With more knowledge, it’s easy to discern whether diving into a rabbit hole is productive and will be beneficial or not. However, if you get distracted, it’s easy to gain nothing valuable from a rabbit hole.

### Conclusion

- So, in the end, can we conclude that rabbit holes are bad? Well, no!

I believe that rabbit holes aren’t always a negative thing if you can recognize where, when, and why you’re diving into them. Similar to a game story, try not to perceive them as traps, but as side-quests around the main story. Start thinking that every time you delve into a rabbit hole, you’re embarking on a side-quest. Some side-quests can help you, while others exists just to consume time. The more experienced you become, the easier it will be to identify which rabbit holes are worth exploring and which ones are not.

_Cover photo by [Ray Bilcliff](https://www.pexels.com/pt-br/@raybilcliff/), taken with an SLT-A77V._