Research shows the limit to code re-use. How much can be reused depends on the problem domain.

Fallen tree reminds a log-log plot for rank/frequency. (by R.Suzi)

Software development values reusable code in many different forms and sizes. While the hype of achieving high reusability is over, the goal of producing reusable software has not disappeared. Most common ways to code reuse are software libraries and frameworks. It is (hopefully) a normal practice in the development of software products and projects to set aside frequently used functions so development time (including testing and future maintenance) is saved. Good practices like clean coding also advance code reuse by suggesting to decompose…


Low viscosity, easily-maintainable systems are a dream of software developers. Here a generic design approach to such systems is described. Everyone experienced enough will recognize the pattern and start applying it.

Photo by Claudio Schwarz | @purzlbaum on Unsplash

The foundational ideas here are not my own. I’ve familiarized myself with them while trying to understand the essence of what a framework is some years ago. References are given at the end in Sources of Inspiration.

The ideas presented here are somewhat above the level of programming paradigms, meaning, that they are applicable in many of them. …


There are a lot of discussions whether software developers need math to do their work. And the popular view is they do not. Here I challenge that assumption.

Photo by Gayatri Malhotra on Unsplash

First of all, I would like to clarify which kind of mathematics helps every software developer to be really good and versatile. I am not talking about math-heavy software development here, so in my personal observation, encountering mathematical problems may be a rare event. 95% of time developers (seemingly) are concerned with something else, especially, when they are engaged with the higher level programming languages. In those 5% of occasions it’s still quite manageable. For example, from time to time we may need to do a topological sort or implement some graph algorithm. It’s enough for a team to have…


Photo by Aaron Burden on Unsplash

Here is my approach to solving problems of many kinds, be it programming, mathematics, design or psychology of communication. This article only scratches the surface of a much deeper set of cognitive strategies, but I hope most readers will find something new and useful to their life situations.

What does “generic” mean?

Wiktionary’s definition provides many senses for the word, but here I will pick the first one: “Very comprehensive; pertaining or appropriate to large classes or groups as opposed to specific.” Creators can also note that the word comes from a Latin word “genus”, which has “birth, origin” as one of it’s meanings…

Roman Suzi

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store