Problems with mutable shared state are often discussed in a concurrent programming context. However, those who are lucky enough to avoid concurrent programming can still fall in trouble because of mutable shared state.¬†First pitfall is a global variable. Everyone knows global variables are bad. Although in software design there is no absolute truth or principle,…Continue Reading “On mutable shared state”

I am still fascinated when I think about the invention of a subroutine. It was the transition from a huge list of commands (ancient program) to the set of subprograms glued together for achieving some computation purpose. The mechanism of subroutine was invented to support the developer in his/her procedural abstractions design. The developer back…Continue Reading “Procedural abstraction vs code container”

In this post I would like to dig a little bit into philosophical topic, trying to use some analogies between classical engineering disciplines and software development to explain why clean code and automated testing became so important and widely used in software industry. It is very common today to consider software development to be a…Continue Reading “Why clean code and automated testing are so important for software engineering?”