Ron Jeffries has said "code never lies, comments sometimes do". What makes comments sometimes lie? Usually the reason is that we don't keep them up to date. In this blog post I have written about few commenting anti-patterns and how to avoid lying comments.
"Make it a practice to present and discuss each implementation at one-third completion", wrote Adam Tornhill in his excellent Software Desing X-Rays book. Since reading that book I've been thinking about it, and I wrote why I strongly agree with it. Practically it improves code quality (which I value really high).
The year 2018 included exceptionally lot of new "tech stuff" for me: Azure, Azure DevOps / VSTS, Git and Docker. Especially learning Azure took a lot of time from my "learning budget" in 2018. Besides those, I managed to read a lot of tech books, more than I've ever read. I can say in 2018 I learned especially much. In this blog post, I will go little details about what I learned in 2018 and take a quick look at my new programming language for 2019: Angular/TypeScript.
This book is about the famous State of DevOps Reports; some kind of recap from years 2014-17. In this blog post I've summarized what are the impacts of continuous delivery according it. "Continuous delivery improves both delivery and performance quality."
I wanted to recap this series about SOLID principles. In my opinion SOLID can be summarized with two things: "Code against interfaces, not implementations" and "write small classes/interfaces". If we follow those two things, our code would be close to SOLID.
"Program to an interface, not an implementation" is a famous quote by Gang of Four. Even if it is not the definition of the dependency inversion principle, it is really close to it. Another related quote is by Robert C. Martin: "depend on abstractions, not on concretions". While writing this blog post I concretely learned what these quotes practically mean.
Interface segregation principle (ISP) says that clients should not be forced to depend upon interfaces that they do not use. Practically that means that we should have rather small interfaces with just few (or even one) methods than fat interfaces with many methods. In this blog post I will explain what ISP is and what relationship it has with Liskov substitution and single responsibility principles.