Fractals are everywhere, from nature to software development – This thought struck me when I was listening to one of those corporate telephone meetings with 15+ people on the line where none of the participants really pays attention to. Except for the speaker, I guess.
You asking what fractals are? Fractals are abstract mathematical objects that commonly exhibit similar patterns at increasingly small scales. There are artificially created fractals like the Mandelbrot set or Menger sponge (see below), but natural fractals can be found in snowflakes, clouds, and tree branches too.
What the hell all of that has to do with software development? Bare with me, I will tell you in a minute.
The enlightenment came to me when I was listening to my bosses boss describing future plans and how the firm is keen on “finding synergies”. Finding synergies basically means trying not to reinvent the wheel every time some new functionality is required, but instead use something that already exists.
When we programmers write a function or a method we do it because there are some steps which we would like to execute together over and over again. Common functionalities are then coupled into classes and libraries for better re-use. When writing an application we try to break it down into multiple components where ideally none of the functionality is duplicated. Building a platform consisting of multiple applications or services is no different. One of the purposes of using a microservice architecture is to segregate well-defined functionalities into services which can be utilized by other services. When you have multiple independent systems under your firm’s umbrella it makes sense to investigate how could existing solutions deployed to new departments to address similar needs. In other words: finding synergies. In my eyes, all these use cases represent the same thing on a different fractal dimension.
I was sitting at my desk and I felt like I was Buddha under the fig tree. This is when I realized that under the surface programmers have more in common with high-level management than a lot of us initially might think. And that the end of the day software development obeys the same laws of nature as trees, clouds, or snowflakes.