Breadth vs. Depth: Which Learning Path Should You Take?

Struggling to decide between mastering your current tech stack or exploring new tools and languages? This blog post breaks down the pros and cons of breadth vs. depth in developer learning, with real-world examples to help guide your growth path.

As a developer, continuous learning is more or less part of the job. Because our field is relatively new compared to the majority of other professions out there, the landscape of software development is always changing. It seems like every day, there’s a new language or framework or a new tool that claims to improve your efficiency to the point that you can become the elusive “10x developer” (read more about that in our blog post, Breaking the 10x Developer Hype: Your Path to Rockstar Status).

Frustrated man in a hoodie slams his keyboard repeatedly at a desk, then throws his head back in exasperation. “PRTG Network Monitor” logo visible in the corner.

Due to this, it can be really difficult to keep up with the times if you’re not making a conscious effort to grow your skills and knowledge in this space. As of writing this, I have nearly 9 years of professional development experience. So, even though I’m not exactly a seasoned veteran yet, I do feel I have a pretty good grasp on what has and hasn’t paid off for me when it comes to the learning efforts I’ve put in outside of work, and I hope to share some of those learnings with you.

Depth: Learning Inside Your “Work” Stack

Excited SpongeBob sits on the floor with arms raised, singing joyfully, “Indoors, indoors, indoors!” with a peanut, chip, and tissue in front of him.

An obvious place to focus your learning efforts would be the same tech you use daily at whatever company you work for. Staying within the scope of what you work with on a regular basis provides a great way to deepen your knowledge and understanding of the types of things you use and run into frequently. This is especially valuable when starting out as a developer or transitioning to a new stack.

On the flip side, sticking to only learning things you are already familiar with can limit your growth as a developer. Deepening your knowledge in a particular area is beneficial, but eventually, you’ll start to hit a threshold where the time you’re investing in learning more and more about it is less and less helpful. You basically run into a situation where you’re getting diminishing returns on your time investment.

Breadth: Learning Outside Your “Work” Stack

Bilbo Baggins runs through the Shire, waving papers in hand, excitedly shouting, “I’m going on an adventure!”

A less obvious but very beneficial path would be learning things that you don’t use that often (or at all) at your work. This may seem a bit counterintuitive, but there are a handful of benefits to looking outside your norm when it comes to learning on your own time.

First, learning outside the scope of your daily work can be a great source of new and fresh ideas for tackling different scenarios that might come up from time to time. Whether that be a new language or something like a new approach to automated deployments, the things you learn along the way can influence your approach to the problems you face at work, even if you never plan to use the exact same technologies.

Secondly, depending on how variable your work environment is, there’s also the possibility that the things you’ve learned on the side might become directly applicable to a project you end up taking on at work. This comes down to random chance, unfortunately, if you don’t get much say in how your organization works, but if you have the ability to share your thoughts and ideas to change the direction of technology adoption, then this is a great way to test out new stuff and potentially get your organization to move to something new.

(Disclaimer: just because something is new doesn’t make it better)

Case Studies

As mentioned earlier, I wanted to share some of my own experiences to shed some light on this topic. Below are some recent examples of how my learnings outside the typical BizStream stack have paid off for me.

Linux Hosting

Since BizStream has primarily been a .NET shop since its inception, pretty much every project I’ve been on in the past has been hosted in a Windows environment. Whether that be On-Prem with IIS or in Azure App Services, that’s the world I’ve been most familiar with over the past seven years, and it’s what I would default to when hosting my personal projects that I had built outside of work.

However, a little while ago, when I started on my journey with Vim (read my previous blog post, Why Every Developer Should Learn Vim), I realized that Docker runs so much better on Linux. I really started to enjoy working with Linux-based systems. This led me to want to start using Docker on all my personal projects and host them on a Linux VM running Ubuntu.

All the experience that I was gaining from changing up my hosting approach wasn’t being directly used at BizStream for quite some time; it was really just me having fun trying something new.

But recently, with .NET Core becoming increasingly widely used (especially for us now that we’re doing Xperience by Kentico projects), our ongoing efforts to provide headless CMS options, and Next.js being a top contender for those types of projects, there’s been a lot more opportunity to leverage the skills and knowledge I’ve built up in this area.

A recent example of all of this coming in handy was when we needed to help get a site deployed to a Linux VM that didn’t have any prior CI/CD setup, just a Dockerfile in the root of the repo and a docker-compose.yml file on the server. Hopefully, you can see where this is going…

I was able to help out due to the knowledge I had built up on my personal time. This made it so we didn’t have to re-platform them over to another hosting solution, which would’ve been a much bigger lift when they just needed a deployment to fix some issues on their site. I even got to use my Vim skills when we needed to make some small tweaks to the docker-compose.yml file as part of our changes.

Learning C

For the entirety of my professional development career, my work has been with high-level languages like C# and Javascript, and the lowest-level language I’ve ever worked with was a C++ class back in college. This past December I decided I would attempt to see how far I could get in the Advent of Code challenge with all my solutions being written in C.

I unfortunately didn’t get to devote as much time to this as I had hoped, but I still managed to solve 8 problems (the first 4 days worth) using nothing but C.

It took me quite a while to wrap my head around solving many of those problems with the limitations that come with a low-level language. I didn’t realize how much I relied on things like dynamic length lists, Linq, and simple things like having an integer array as a parameter to a function (well, the last one is accomplished with pointers in C, but that’s a whole other fun topic). I also had to be very explicit in my memory allocation, which isn’t usually something I need to think about when writing C# or Javascript code.

While I haven’t needed to write C code at BizStream since then (and most likely never will), I did at least gain the experience of needing to find new ways to solve what are typically simple problems. When I’d come back to these high-level languages after writing a handful of C, it got me thinking about ways to make my code more efficient by being a bit more aware of the space complexity of my code.

Final Thoughts

Although I’ve spent the majority of this blog post discussing why I think focusing on the tech you don’t normally use in your daily work is more beneficial to your overall growth as a developer, I want to make it abundantly clear that I think anything you do outside your typical 9-5 work is awesome, and strongly believe it will help you to grow faster than those who don’t put in the extra effort. Being a developer and staying on top of the ever-changing landscape can feel daunting at times, but hopefully, you went into this field and stuck with it because you enjoy the learning process, and continuously strive to be a better developer today than you were yesterday.

About the Author

Ben Buurstra

Ben has always loved technology and computers but was a bit of a late bloomer when it comes to coding. He wrote his first line of code during his freshman year of college, afterward, he became completely hooked. After just one semester, Ben was working as a programming tutor for his college and doing tons of web development projects. When Ben isn’t working on a side project you’ll find him spending time with his wife and their dog, or playing video games with friends.

Subscribe to Our Blog

Stay up to date on what BizStream is doing and keep in the loop on the latest in marketing & technology.