Popular !== Useful: The Case for Smart Software Development
Tags: javascript, programming, react, softwaredevelopment
Published: 2023-05-16 11:03:03

---
title: Popular !== Useful: The Case for Smart Software Development
published: true
date: 2023-04-27 22:02:07 UTC
tags: javascript,programming,react,softwaredevelopment
canonical_url: https://fagnerbrack.com/popular-useful-the-case-for-smart-software-development-797fc13cec76
---

### Popular !== Useful: The Case for Smarter Software Development

In programming, what’s popular doesn’t necessarily equate to what’s best. The reason for this is simple: economics. Society rewards those with the reach and influence to make things popular rather than those who create useful solutions based on merit. This often leads to a situation where the programming tools and techniques that are widely used are not necessarily the best fit for the majority of use cases.

![](https://cdn-images-1.medium.com/max/1024/1*J_9z8b6kUU0_MhRLuZ-V2w.jpeg)

Take Facebook and React as an example. React is a popular choice for building websites, even when it’s not the best fit. People often choose React because it’s associated with a successful company rather than because it’s the best tool for the job. But the success of a company like Facebook is largely unrelated to the technology they used; it’s due to their business product and market fit.

[This is an interesting](https://www.spicyweb.dev/the-great-gaslighting-of-the-js-age/) take on the issue, although I'll try to focus more on the potential solutions.

So, what’s the smart way to develop software? It starts with building a strong foundation of knowledge within your team. Gathering people with different experiences and a broad knowledge of available tools and techniques can provide more options to solve problems as they arise. Over time, your architecture can evolve to incorporate new tools and technologies if and when needed, rather than starting out with everything from day one.

> The smart way to develop software starts with building a strong foundation of knowledge within your team.

A modular approach is one key to building software that is easy to change and delete. Building components that are separated ensures that changing or deleting one component will not break another. This also means that your code is more easily adaptable to change in the long term.

On the other hand, it’s important not to ignore the value of tooling when it’s needed. Failing to use the right tools can lead to issues such as [over-engineering](https://fagnerbrack.com/how-to-accept-over-engineering-for-what-it-really-is-6fca9a919263), but doing nothing when the situation calls for it can lead to a [prototype becoming the permanent solution](https://fagnerbrack.com/how-to-prevent-falling-in-the-trap-of-the-next-big-project-618fe7cc4ce9).

In short, the key to smart software development is knowing what’s popular but not blindly following the crowd. Instead, build a foundation of knowledge within your team and make decisions based on merit rather than authority or popularity. By building a modular architecture that is easy to change and delete, you can adapt to changing circumstances and ensure that your tool is always the best fit for the job.

Thanks for reading. If you have feedback, contact me on [Twitter](https://twitter.com/FagnerBrack), [LinkedIn](https://www.linkedin.com/in/fagnerbrack/) or [Github](http://github.com/FagnerMartinsBrack).