KISS principe - foundation of software deesign

:: software, lifestyle

In this article I describe what I think is the most fundamental principe of software desigh - KISS principe. Keep It Simple, Stupid!

An idiot admires complexity, a genius admires simplicity, a physicist tries to make it simple, for an idiot anything the more complicated it is the more he will admire it, if you make something so clusterfucked he can’t understand it he’s gonna think you’re a god cause you made it so complicated nobody can understand it. That’s how they write journals in Academics, they try to make it so complicated people think you’re a genius. Terry A. Davis, a schizophrenic programmer

Complexity is an uttermost enemy of system

Each system consists of elements and connections between it.

Complex tools do not work

You really cannot make things done with bloated, over-engineered tools. ### They are nearly impossible to build Once I’ve found git repo with C program that I had to use, but there were to binary release available in repo, so I spent 6 hours building it. I hated every second of it. ### They are nearly impossible to run You have to arrange specific set of config files, installed programs and command line arguments to start it. There are 5 Python build tools that I know about: venv, conda, poetry, hatching and pip, each does something(a lot of something, in fact), each downloads files on local machine, uses resources like ports, each does shit ton of things I do not know and don’t really want to know. It is reasonable for a program to use resources, but it is not hard to imagine program, that doesn’t not work properly because tiny part of functionality is broken. It happened to me that python script refused to launch because library that showed download progress wasn’t available for whatever reason (see how brittle complexity is??!) so I had to edit source code. Example no.2: to install packages using venv, you have to run: shell python3 -m venv .venv source .venv/bin/activate python3 -m pip install -r requirements.txt and after that your terminal looks like that: img.png So, to install required packages to venv, bash has to be involved. And some veired ‘activate’ script has to be used. And each component might break.

  • suckless terminal that sucks time
  • ricing is stupid
  • Don’t waste time on things you don’t need