There’s a widely spread misconception among software engineers about the difference between Dependency Injection and Inversion of Control. The two concepts are often perceived at the same thing. I even know about the case where an interviewer asked about the difference in a technical interview and expected “no difference” to be the answer. Dependency Injection frameworks, such as Spring and Google Guice, are also called Inversion of Control Containers¹ (IoCC), which is a misleading name that only adds more confusion.

This article elucidates the two concepts from the Software Architecture perspective. In this article, we will see how these terms…

This article explains how you can reduce the bias of a neural network trained for medical diagnosis on a data set having a low prevalence of the disease.


In medical diagnosis studies, Imbalanced Classification is a common challenge. For almost any disease, a medical laboratory has more patients not having rather than having it. In the training set, having the naturally occurring prevalence of patients with the disease of interest would cause any loss function based model to be skewed towards negative classification¹ as is it is not going to receive enough loss for patients with the disease.

In the…

as they are prone to race conditions.

In ES2015 there were added two short-circuiting Promise combinators: Promise.all() and Promise.race(). As the name suggests the second one is prone to race conditions, but in reality, both of them are.

What’s the problem?

Let’s say you need to create a bunch of resources by invoking some REST API. Then you are going to perform several actions with these resources, and when you finished, you have to make sure that all of the resources are disposed of correctly. …


You should treat your Microservices as if they are Distributed Plugins

Are Microservices just Plugins in disguise?

Microservice Architecture, as defined by Medium engineering team, resides on three design principles:

In microservice architecture, multiple loosely coupled services work together. Each service focuses on a single purpose and has a high cohesion of related behaviors and data.

The core design principles are:

  • Single Responsibility¹ — each service must have just one purpose i.e. single reason to exist
  • High Cohesion — each service must have everything needed for the job and prevent abstractions leaks
  • Loose Coupling — each service must be unaware of all the others

But we…

In this article we will discuss how to define and enforce Architectural Boundaries in Software Systems. You will also see the difference between Dependency Injection and Inversion of Control.

This is my second article in NoUML series. If you haven’t read the first one yet you should do it now as this article uses all the notations and intuition developed there.

Levels of Abstraction

Have you ever heard the phrase “Levels of Abstraction” [1] meaning that not all abstractions are created equal? In my previous article we discussed that abstractions have no inner structure, they are indivisible atoms, dots on a bigger diagram…

One of the core principles behind Agile Manifesto is fundamentally flawed. After reading this article you will understand what’s wrong with it and how to repair the disruption it creates.


The content of this article might seem to be in opposition to common knowledge; but don’t get me wrong. I personally think that Agile is by far superior to other methodologies. It seems to be able to run faster and steadier than others even having one of its legs broken. But it doesn’t mean there’s no room for improvements here. …

After reading this article you will be able to draw Software Architecture diagrams that make sense.

Your coworkers would be able to read your diagrams and reason about your ideas even if they have never heard about NoUML. You will also be able to give a link to this article to your boss who is criticizing you for not using UML.

UML Criticism

UML is often criticized[1] for not giving us the right vocabulary for expressing our ideas about Software Architecture. On the one hand it is too vague to describe our ideas. …

Volodymyr Frolov

Software Architect

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