The system is the asset, code a liability

On the matter of software development.

Omar Rayward
Building the system

--

When developing software focus on creating the simplest possible system instead of shoe-horning every solution into your language/framework of preference.

Much has been written about the craftsmanship of writing code. Most of it is around how to solve a particular issue in a specific program, language or framework.

The central theme of these essays is that while understanding the programs, languages, and frameworks is necessary, it is much more important to know how everything fits in the overall system.

At the end of the day what matters is that the systems we create can serve our business needs, regardless of the programs, languages or frameworks that we use. By focusing on building the system, we’ll be able to develop faster and cheaper which will eventually lead to more business success and what’s more important: more fun and fewer late nights.

Close to the concept of building the system, growing the asset, it’s also worth exploring the idea of writing less code, removing liability. Via Negativa applied to software development.

Building the system: a “trivial” example

By setting the right data type for a specific field at the database level, we will avoid the need to write application level logic to understand whether we could treat a value as its real data type or not.

A system is composed of hundreds or thousands of these atomic units of logic that if not dealt with the simplest approach, it will make the overall system more complex and challenging to maintain.

The system is the asset

Software applications always contain multiple programs that depend and interact with each other. On top of that we, humans, come with our inconsistent actions continually operating, maintaining and updating those applications.

The system is an ambiguous term that can be applied to a single application, a group of applications, a team, a company, In this publication when talking about “the system,” we’ll be referring to humans, software and their interactions (workflows) involved in the lifespan of software applications.

The underlying assumption when talking about “the system” is that it has more value than the sum of its parts.

Code is a liability

Code is expensive to create and much more costly to maintain. The crux of the matter is that the people creating software move on more frequently than the code base does.

Moving on is not only changing companies, teams or projects but also `using a different set of tools or mental paradigms to solve the same old problems. When moving on, the previously created system suddenly gets much more expensive to maintain.

For the tangible, but especially for the intangible costs of code, we need to write and maintain as little code as possible for our business to succeed.

Publication objectives

  1. Improve our knowledge of software development and architecture. By exposing our understandings on how to build the system, we wish to uncover many flaws in our reasonings and learn from them.
  2. Share knowledge by providing practical advice on how to solve some of the challenges that we all face when developing applications. Some, if not most of the solutions in software development are not technically challenging. When facing a technical problem, once exposed to the right solution, tool, or mental model, the unsolvable now seems manageable. Hopefully, these essays will help with this process.

Not sure where this will lead, we’ll let the journey decide its destination.

--

--