Dare to be Different: Challenging the Selection of Mainstream Tech
Interestingly, in recent years it has become a widespread standard to use Angular or React on the frontend and Spring Boot (with Spring Web) on the backend, and to take a client-side rendering approach when developing new web applications.
Interestingly, in recent years it has become a widespread standard to use Angular or React on the frontend and Spring Boot (with Spring Web) on the backend, and to take a client-side rendering approach when developing new web applications.
These technologies and the rendering approach have proven themselves without a doubt, but I've some observations and thoughts on the selection of these mainstream technologies.
The Power of Well-Known Technologies in Management Presentations
I've observed that it often ensures a smooth presentation when explaining this technology choices to management. The familiarity and popularity of Angular, React, and Spring give us additional confidence in our choices.
When we present our well-designed software architecture using these mainstream technologies, managers (and others) immediately feel comfortable. They may ask a few questions during the presentation, which is perfectly normal, but they're usually reassured because they recognise the mainstream technologies we use.
Embracing Alternative (boring?) Tech Stack
For example, what if we proposed a solution that used web components (using Lit) and a Go backend?
Let's say you're working on a project that requires high performance and minimal overhead. If you choose Web Components with Lit, you can take advantage of the native capabilities of modern browsers, resulting in faster load times and smoother interactions.
For the backend, choosing Go can provide exceptional concurrency and efficiency, ideal for applications with high processing needs. Go's lightweight nature ensures that the backend can handle numerous concurrent requests without consuming excessive resources.
This idea may initially raise eyebrows. I observe that the use of alternative technologies is often met with initial skepticism.
The use of alternative technologies is often met with initial skepticism.
If we explain and demonstrate the advantages properly, we may be able to dispel any doubts.
Or we could consider a fully server-side rendered solution using Node.js and Fastify - perhaps a less glamorous tech stack, but still reliable.
Imagine you're building a content-heavy website with extensive SEO requirements. In this case, a fully server side rendering solution using Node.js and Fastify can provide excellent SEO performance by allowing search engines to crawl and index the content efficiently.
By showing how this solution meets specific requirements and accelerates development, we can change perceptions when selecting technologies.
My Guiding Principles for Thoughtful Technology Selection
As an engineer, my guiding principle is to select technologies based on the specific problems we want to solve and the (quality) goals we need to achieve. Every team member should ask themselves, "What problems do we really want to solve with technology x?" This helps us align our decisions with the needs and goals of the project.
What problems do we really want to solve with Angular?
From the perspective of a CTO, tech lead, or software architect, it's about understanding what specific problem we're evaluating or choosing a particular approach or framework for.
It's about understanding what specific problem we're evaluating or choosing a particular approach or framework for.
By asking the right questions, we ensure that our technology selection is aligned with the goals of the software initiative, creating a solid foundation for success.
Ultimately, technology selection should always speed up implementation and make it efficient and effective.
Some additional resources
The frontend architecture and its underlying technologies are determined by the rendering technique. That's why I wrote the following blog post about which web frontend architecture is the best fit.
The Tech Stack Canvas is a good way for elaborating the technologies needed and a good technique to communicate the underlying tech stack.
Comments ()