Yup, that was a Suits reference. It's a great show, make sure to check it out (after reading this post).
🥳 Welcome
Congratulations! You were exploring the dark depths of the web once again and found this blog. Nice to meet you. My name is Bogdan, and I've been working as a junior backend software developer for around six months now.
👉 Let's get to the point
I'd say I had a great start with the first project I worked on (let's call it Project X). Project X was quite challenging and demanding for a beginner, but it gave me an opportunity to grow as I had to adapt and learn new technologies and business logic in a short time frame.
After three months on Project X, I became more confident in my knowledge and even got promoted! Things were going great, but then... the project ended, and another firm took it over. This meant that the whole team working on it had to be transferred to another project (let's call it Project Eco). At the time, I didn't think much of the whole situation.
Colleagues assured me that the new project was going to be much better in every aspect and that we shouldn't worry. After all, Project X wasn't ideal. It had a bunch of problems regarding management, unclear requirements at times, complex business logic, and did I mention a big part of it was written in ancient Java EE with Primefaces handling the UI?
💤 Stagnation
Then, I started working on Eco, which was (and still is)... kind of chill, at least from my perspective. The workload is somewhat lower, and tickets assigned to me aren't that complex or challenging most of the time. While this may be great for someone who has been in the industry for a long time and has experienced "everything," it certainly isn't ideal environment for a junior hungry for more.
I know what you're thinking. You wouldn't trust a junior with designing and implementing the whole system architecture or some similar task that typically requires years of experience and deep domain knowledge. That's perfectly fine. I wouldn't either.
So, time passed, and I noticed I wasn't really growing as a developer as much as I did while working on Project X. I had to do something about that.
🍪 I hope I haven’t bored you with my backstory. If you are still here you are awesome! Please have a cookie.
📝 The Plan
There is one great thing about lack of the workload which is all of the extra time I get to spend on learning various topics. Over the next few months my plan is to learn a lot. While browsing LinkedIn i stumbled upon a post with some tips for becoming a better developer. One of them said ”Learn fundamentals, not frameworks” and that’s what I decided to start with.
My goal is to understand fundamental backend concepts really well and only then focus on concrete technologies and implementations. I want not only to understand these concepts but also the reasoning behind them. Why do we need them? Why are they created in the first place? What are the tradeoffs?
There is this great video (embedded below) by Hussein Nasser that inspired me to take this approach. He also has whole playlist on backend engineering as well as “Fundamentals of Backend Engineering” Udemy course.
Here is the list of some things that I’m going (or wish 😅) to study in the coming months/years:
- Networking & Communication Protocols
- Web Servers
- Database Engineering
- Caching Systems
- Messaging Systems
- Event Sourcing
- DSA & Design Patterns
- Software architecture
Such an overwhelming list! Maybe I am overambitious but shoot for the stars, land on the moon. Time-wise, I don’t want to set any deadlines for myself. I know those things take years to fully understand and master and that no one knows it all so I’ll take my time.
As Hussein said in one of his videos, there’s no such thing as an expert. An expert is someone who knows everything in a particular field and when one says they know everything they are just limiting their own growth.
🌐 Networking
At the time of writing this post I already started my journey. I decided to go with networking first as I’m already familiar with fundamentals thanks to networking class I took in college. I’m pretty sure I won’t be dealing with most of the stuff below layer 7 in my everyday work but I find networking fascinating and it won’t hurt to know how everything actually works behind the scenes.
Software developers often hide behind bunch of abstractions without really knowing how their GET requests are actually sent across the network (trivial example). I believe that comprehensive networking knowledge will make me a better engineer even if I won’t use it everyday. I briefly looked at CCNA certification but I don’t think it’s worth the time at the moment.
You can find a great free playlist that I started with below:
Networking is an excellent starting point as it lays the groundwork for understanding how information flows across systems. While you may not directly apply all networking knowledge in your day-to-day work, comprehensive understanding of the underlying mechanisms will undoubtedly make you a better engineer.
Conclusion
ChatGPT once said:
Transitioning from a challenging project to a less demanding one can lead to stagnation if not addressed effectively. The key is to make the most of the extra time available and focus on continuous learning.
In the end, becoming the best backend engineer the city has ever seen requires a combination of technical expertise, continuous learning, and effective communication. Embrace the challenges, stay dedicated to your growth, and remember that expertise is a journey, not a destination. With the right mindset and effort, you can reach new heights in your career.
Beautiful words my friend, beautiful words.
Top comments (0)