There are two approaches to creating consistent programming code. For the same quality, one requires more skill and less time, while the other is the other way around.

Photo by James Wheeler on Unsplash

Here I understand the word “coherent” in the sense of “forming a unified whole” as well as “logical and consistent” (from The easiest way to make the codebase coherent is to build it from a single root, avoiding duplication and repetition from the very beginning.

The power of coherence

For example, it is the usual goal of refactoring to change the code to a more compact form, where repeated code has been “factored out”. While…

Software development will become harder with time. Don’t stop developing yourself.

Photo by Possessed Photography on Unsplash

Making software is essentially formalizing real world knowledge using formal systems. Real world includes everything we are surrounded with. Software developers write code to solve real world problems. For this, they are acquiring domain knowledge, organizing it, and expressing it in a rigorous way so computers can algorithmically process the knowledge, apply it to input data and produce output data.

One good example to illustrate the above is the concept of a city map. Map depicts a part of the real world using geometrical shapes and signs. Anyone with…

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.

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…

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