Minimalism: The crux of software development

Naveen Muguda
2 min readNov 25, 2018

One of the first games I played on a computer was Tetris. It is one of the most popular games ever built. It consists of rotating and moving game pieces as they move down vertically with the aim of creating a horizontal line without gaps.

Now imagine playing the game with pieces instead of the four squared tetrominoes.

Bigger and odd shaped blocks will make the game hard, smaller blocks will make the game too easy. The number of squares ‘4’ seems to be the “sweet spot”.

Decision making often involves sweet spots and software design is no exception. I believe quantitatively and qualitatively the sweet spots tend to be minimalistic.

Instead, we are clearing away all but the most essential things — to make room for that which gives us the most joy. Clear away the distractions so we can create something incredible.” is a quote from a minimalist post

compare that to a definition of cohesion in programming

“In computer programming, cohesion is a measure of how strongly related and focused the various responsibilities of a software module are”

compare the two definitions, cohesion comes from focus and focus comes from taking away or clearing.

Now let’s consider coupling. consider the excerpt from Wikipedia

coupling is the degree of interdependence between software modules; a measure of how closely connected two routines or modules are;[1] the strength of the relationships between modules.[2]

Coupling is usually contrasted with cohesion. Low coupling often correlates with high cohesion and vice versa. Low coupling is often a sign of a well-structured computer system and a good design, and when combined with high cohesion, supports the general goals of high readability and maintainability

comparing this with the definition of minimalism we can correlate minimalist coupling as a desirable trait of software.

The following table shows some of the well-known principles and practices in the field of software development. Note how each of them is basically minimizing along a dimension.

PS: This post is intentionally minimalist

--

--