u/mVirtuoso21

How to convince my company to create a new UI and refactor some backend microservices?

I'm not sure this is the right sub. Sorry!

UI part:

I've been at my company for more than 2 years. Our UI is about 5 years old (maybe even more) and is basically created from a template. We use angular. I've been responsible for upgrading it. I started as L1 (junior), and I've been promoted to L2 (mid level) 4 months ago. First time I upgraded it from version 11 to 15, then 17, then 19. I made sure to keep it up-to-date as much as possible. However, since our UI is huge (more than 20 modules), it can be hard, and we have windows of time when we can upgrade. Moreover, since multiple developers contribute to the code, it's hard to keep up with all the code that's added/changed, even after distributing guides about what's new and how to's... This makes using any new angular features hard. For instance, there's only one component that uses signals (and I created said component), no one uses the new control flow syntax (@if, @else...)...

Our UI looks hideous (at least to me), it can be slow sometimes, and it can eat a lot of memory. It has multiple overlapping libraries (ng-bootstrap, angular material...). There are other things that make it bad, but I won't go into much detail.

I've discussed the possibility of creating a new UI with my team leader (either from scratch or from a template). He didn't disagree, but since there's always work and higher priority tasks, he said this isn't our main concern right now, and he pointed at the possibility of never changing it. And we all know the good old saying "if it's working, don't touch it", and another saying "if the customer's happy, we don't have to change anything".

Microservices part:

For backend, we use spring boot. My team leader and I recently upgraded the java version from 8 to 21, and the spring boot version from 2.7 to 3.5. However, we're also not using java 21's new features, like records (I know this is from java 17, but still), sealed classes, virtual threads... Nevertheless, even though this isn't a huge deal (as it's a bit cosmetic), since we use microservices, it would be easy to refactor each one at a time, especially since parts of the code actually require refactoring. There are lots of places where the code becomes spaghetti 😅. It would be nice to tidy things up while using new features.

For context, my team is responsible for the main code, while other teams take my team's code and make adjustments based on customer's needs (every team has their own repo).

PS: currently, we have a huge amount of work, and some employees (like me) have temporarily switched to another team because of that. I'm only asking you guys so that I can talk about this with my team leader when I'm back on my original team, but I wanna be prepared.

My questions: as a L2 developer, how can I convince my team leader to discuss the possibility of a new UI with our CTO? And how can I convince him to refactor at least some microservices? Granted I've already told my team leader our UI looks bad, its performance is bad as well, and creating a new UI and using angular's latest features will 100% be an improvement.

I'm fine if you agree with my team leader/CTO. I understand our codebase is huge and creating a new UI/refactoring microservices which affects other teams would be a huge pain. I'm only here asking for advice, and know what is best.

Also, I'm asking these questions as I don't feel like I'm growing as a developer. It feels like I'm falling behind as I don't get to use any of these 2 frameworks' new features. I know I can look them up and follow a tutorial, but it's hard to do so because of the lack of time.

Edit: TLDR: I’ve maintained and upgraded our outdated Angular UI (now on v19), but it’s bloated, inconsistent, and hard to modernize due to overlapping libraries and poor design. I believe a fresh UI would improve performance and developer experience, but my team leader prioritizes other tasks and leans on “if it works, don’t change it.”

On the backend, we upgraded Java (8 → 21) and Spring Boot (2.7 → 3.5), but we don’t use new language features. Our microservices have spaghetti code that could be refactored gradually, improving maintainability.

Questions are above the TLDR section.

reddit.com
u/mVirtuoso21 — 3 days ago