I've become a TS/JS Senior that doesn't know anything about other paradigms. What to do ?
# I've Become a TS/JS Senior That Doesn't Know Anything About Other Paradigms. What to Do?
After five years of full-stack development, predominantly using React with TypeScript and JavaScript, I find myself in a rather perplexing situation. While I consider myself proficient in building applications and navigating various frameworks, I realize that my understanding of other programming paradigms, particularly Object-Oriented Programming (OOP), is alarmingly shallow. This post is a reflection of my journey, my current dilemma, and the steps I’m contemplating to broaden my horizons.
## The Comfort Zone of JavaScript and TypeScript
In my career thus far, I’ve primarily focused on JavaScript and TypeScript, especially in the realm of front-end development. The ease of use and flexibility offered by these languages allowed me to quickly become comfortable with frameworks like React. My ability to pick up new technologies has been one of my strong suits, but this specialization has come at a cost: a lack of foundational knowledge in other programming paradigms.
### The Glaring Knowledge Gap
Recently, I was confronted with an uncomfortable reality. When discussions shifted towards OOP concepts, I found myself struggling to keep up. Terms like **singleton**, **factory**, and **repository** were met with blank stares. Although I had studied OOP in the context of Java during my academic years, the details have faded away, leaving me with very little to draw from.
Moreover, as I delve into widely acclaimed books like *Code Complete* and *Clean Code*, I realize that they are rich with OOP concepts that I am not familiar with. The more I read, the more I feel the urgency to bridge this knowledge gap.
## Considering a New Language
To address this deficiency, I’m contemplating learning a new programming language that emphasizes good practices and OOP fundamentals. My initial thought is to explore a language that is strongly opinionated and encourages a structured approach to building applications.
### The .NET Developer Roadmap
I stumbled upon the [.NET Developer Roadmap for 2024](https://github.com/milanm/DotNet-Developer-Roadmap/blob/main/NET%20Developer%20Roadmap%202024.%20Minimal.pdf), which seems like a promising starting point. The roadmap outlines a clear path to becoming proficient in .NET, a framework known for its robust architecture and enterprise-grade applications.
This roadmap could serve as a guide to not only grasp OOP concepts but also understand how they apply in a real-world enterprise context.
## Seeking Recommendations
I am reaching out to the community for advice: What strongly opinionated languages or frameworks can you recommend that enforce good practices and help in writing enterprise-grade backends?
### Insights from Fellow Developers
Here are some valuable insights I’ve gathered from fellow developers as I embark on this journey:
1. **Transitioning from Frontend to Backend**: One developer shared their experience of moving from a JavaScript-heavy background to working with Java and C#. While it was initially daunting, they found that stepping outside their comfort zone led to significant professional growth. They are now considering a shift to Angular and Java, further expanding their skill set.
2. **Design Patterns Resource**: Another insightful comment pointed me towards [Refactoring Guru](https://refactoring.guru/design-patterns/catalog), which offers a comprehensive catalog of design patterns with clear illustrations. This resource could be instrumental in deepening my understanding of OOP principles.
3. **Front-End Perspectives on OOP**: Interestingly, a comment expressed a preference for collaborating with developers who are less focused on OOP in front-end development. This highlights the diverse perspectives in our field and the varying degrees to which OOP is valued or implemented in different contexts.
## Conclusion
As I navigate this journey, my goal is to cultivate a well-rounded skill set that incorporates not only front-end technologies but also a solid understanding of OOP principles and enterprise-grade backend development.
The path ahead may be challenging, but I’m excited about the possibilities that lie in expanding my knowledge. If you have any recommendations, resources, or insights on how to effectively learn these paradigms, please share!
Let’s embark on this adventure together and grow as versatile developers in this ever-evolving tech landscape.