Framework fatigue or just a desire to build something solid?
Look, let's be real: the web development community sometimes feels like a fashion runway. Every week a new framework comes out promising to be 20% faster, 50% lighter, and, of course, the ultimate 'killer' of whatever we were using yesterday. I've gone through that phase of wanting to try everything, jumping from Astro to Qwik, flirting with Remix, and keeping an eye on the latest from Next.js. It's fun, I won't lie. But after years of fighting bugs in production at three in the morning, I've reached a point where I value things that used to seem boring to me.
My 'love-hate' relationship with stability
I remember perfectly when Angular (the Google one, the 'serious' one) started losing popularity to React. Everyone said it was too heavy, that mandatory TypeScript was a barrier, that RxJS was incomprehensible... And I, who have always been a bit of a restless soul, had my doubts too. But over time, I realized a universal truth in our industry: what today is called 'verbose' or 'rigid,' tomorrow is called 'maintainable' and 'scalable.'
I keep choosing Angular for my big projects not because I don't like what's new, but because it gives me a peace of mind I don't find elsewhere. When I step into an Angular project I haven't touched in two years, I know exactly where the routes are, how services are managed, and what to expect from dependency injection. In other ecosystems, going back to an old project is like trying to read a journal you wrote while drunk: each one has a different structure, different state libraries, and a way of organizing folders that depended on the developer's mood that specific Tuesday.
Why does the opinion of an 'opinionated' framework matter to me?
Angular is what we call an 'opinionated' framework. And watch out, because this puts a lot of people off. It means the framework tells you how you *should* do things. At first, it's annoying; it feels like it's clipping your wings. But you know what? In a team of ten people, having the framework decide for you is a blessing. You save hours of useless meetings discussing whether to use Axios or Fetch, or whether the folder structure should be by layers or by features. Angular has already made those decisions for you, and they were made by people who know much more about software architecture than I do.
Plus, there's the integrated ecosystem. You don't have to go around searching for which form library is the industry standard this month. Angular gives you a form system (both reactive and template-driven) that is, quite simply, the best I've ever tried. You have the official router, the HTTP client, animations... everything designed to work together. It's like buying a car that already comes with an engine, wheels, and a steering wheel, instead of a kit of parts where you have to decide which brand of brakes you want.
What I’ve learned after many 'ng builds'
I've learned that development speed isn't just measured by how fast you write your first 'Hello World.' It's measured by how long it takes you to implement a complex feature six months after starting. And that's where Angular shines. Its type system with TypeScript (which is now standard everywhere, but Angular was the pioneer in requiring it) and its dependency injection make refactoring almost a pleasure. Well, I'm exaggerating—refactoring is never pure pleasure—but at least you don't feel like you're going to break the whole house of cards by touching a single card.
And let's not kid ourselves, Angular has evolved a lot. If you got stuck on version 4 or 5, you have no idea what it is today. With the arrival of Signals and Standalone Components, the framework has become much more agile. It's still robust, but it no longer feels like trying to move an ocean liner with a wooden oar. It's more... let's say it's a luxury cruise with state-of-the-art engines. It's still big, but it moves with a surprising elegance.
// An example of how Signals are changing the game in Angular
@Component({
selector: 'app-contador',
standalone: true,
template: `
Current count: {{ contador() }}
`
})
export class ContadorComponent {
contador = signal(0);
incrementar() {
this.contador.update(v => v + 1);
}
}Final Thoughts: Pragmatism Over Hype
At the end of the day, my job isn't to use the 'coolest' tool to show off on Twitter. My job is to deliver software that works, that's secure, and that isn't a nightmare to maintain for whoever comes after me (or for myself a year from now). Angular offers me that solid ground to build on. Is it perfect? Not even close. Does it have a steep learning curve? Of course. But once you reach the top of that curve, the views are spectacular and the security you feel walking its terrain is priceless.
If you're just starting out, don't be blinded by the shine of new libraries. Try Angular, give yourself time to understand its architecture, and you might just discover that the structure that scared you at first is actually your best ally. In the end, what we're all looking for is a bit of order in the chaos of web development, and Angular, with all its rules and ceremonies, is the best librarian I've ever met.