The Quest: Finding new ways to build better software systems
The goal is to deliver as much value with as little code as possible, which exemplifies the JustSolve Group mantra: “Writing the least amount of code required to Solve the problem at hand”. Let’s look at the techniques, tools and frameworks for achieving more with less.
In my previous article, we broke down the ideological difference between “low code” and “less code.” We established that while low-code solutions democratise software development, they come with limitations, particularly with respect to the development of sophisticated, complex core systems.
Each line of code added to a system contributes to the complexity and maintenance burden of that system. For those reasons, the goal is for teams to deliver as much value with as little code as possible. In this part, we’ll look at the techniques, tools and frameworks that make it possible to achieve more with less.
Shifting Mindset
Embracing a “minimalist coding” philosophy is foundational. It’s anchored in a gravitation toward clarity, prompting you to identify the indispensable elements in your code, and then discard the rest. Is there a more succinct solution? Can a tool achieve this outcome with less code? Am I building something unique and valuable or rehashing solved problems?
Every line of code must be viewed for the potential value it delivers and the future burden it represents. Reduce that burden by avoiding or removing code when you can be leveraging the work of others.
Adapting Processes
This lean toward “less code” doesn’t stop at individual developers but permeates the software development life cycle. Think of code reviews not as critique sessions, but as collaborative efforts to streamline, clarify and simplify. Similarly, refactoring should be seen as a routine exercise to use new knowledge to improve old code. A less cluttered, more streamlined codebase is like a well-organized workspace: It makes it easier to get things done. Automated testing works hand-in-glove with this, acting as a safety net. It allows you to trim away at the codebase and replace components while ensuring the new version performs as expected.
Frameworks and Tools to Move from Low Code toward Less Code
Modern frameworks offer a significant enhancement to development productivity, primarily by reducing the amount of code written to perform common tasks. Additionally, the underlying code of the framework is tested and maintained by the community, alleviating peripheral maintenance burdens. The same goes for code generators; they’re not merely about avoiding repetitive keystrokes, but about ensuring that the generated code itself is consistent and efficient. In addition to this, we are starting to see technologies in the AI and automation space offering new support to developers, allowing for more productivity.
As we go through this section, we’ll first look at tools that help with frontend development. After that, we’ll zoom in on tools that I think show off the benefits of the “less code” approach.
Frontend Tool Alternatives to Low Code
Many options exist for frontend development, and while several are well known, the space moves rapidly and new tools become available often. This constant fluctuation in tools can make the space seem fickle, like teams are following trends, but the reality is usually different. These newer entrants tend to solve new problems, solve existing problems in a new way or optimise for a specific niche. They’re built with the hindsight of the established tools, often using them as the foundation for enhancement or with interoperability to help adoption.
For example, Next.js builds on React, adding opinions and features that help create web applications. It assists with common challenges like serving a mix of static and server-side-rendered content, page-based routing, data fetching, middleware, and many other tasks.
Recommended by LinkedIn
Next.js leverages the file system to provide automatic routing, eliminating the need for a separate routing configuration. This dramatically simplifies the code, making it easier to understand and maintain. Next.js also facilitates backend development by allowing developers to create custom router handlers for APIs.
By comparison, Astro is more focused on content, with features that ensure high-performance page-load times for sites like blogs, portfolios, e-commerce or marketing. Astro’s partial hydration feature is a game-changer in reducing the code shipped to the browser. Unlike traditional frameworks that hydrate the entire application, Astro only sends the necessary JavaScript to the browser, drastically reducing load times.
While Astro provides its own component framework, it’s also interoperable with others like React, Svelte and Vue.
Other tools focus on build-time improvements, hosting and previews, accessibility, automated testing, type-safety or any number of other tasks peripheral to developing sites and apps.
Exploring and choosing tools that are appropriate for your circumstances, rather than those most familiar, can drastically affect your applications with very little investment.
Backend Tool Alternatives to Low Code
At times, the pace of change for backend tools has been quite leisurely. Recently, however, this space has been far more energetic, and it’s been easy to miss the full spectrum of new tools. As with front-end development, these new options tend to solve new problems or build on existing options to enhance productivity and stability further.
Failing to explore these options leaves teams working on low-value, undifferentiated work or assuming that past challenges remain unsolved.
For example, Supabase, which builds on PostgreSQL, along with a number of other open-source tools, offers a full suite of backend development tools for building and hosting APIs, data persistence, functions and authentication, all enhancing the PostgreSQL database.
Another area of progress is in Infrastructure from Code, also known as self-provisioning runtimes. They’re tools, frameworks or platforms that remove as much of the undifferentiated work of building applications as possible, allowing teams to focus on just the code specific to their product. Some emerging options in this space include Nitric, Encore, Shuttle, Ampt and Wing, each with a variety of approaches to the problem and their applicable niche.
Adapting to Change
In an era where agility and efficiency are paramount, “less code” isn’t just about writing fewer lines. It’s about harnessing the best tools, practices and mindset to deliver more value with less effort. As the technology landscape continues to evolve, it’s imperative for developers and teams to stay curious and adapt.
The changing landscape of tools and products isn’t about following trends; it’s about abstraction, efficiency and offering new ways to build better systems.