Silly names and buzzwords in software development

My personal ranking of terms that are in my opinion incorrect or overused: DevOps (as a role): DevOps is about culture, it was not meant to be a role! From my experience, there is almost no (or very subtle) difference between DevOps, Administrator, Operations. Why not sticking to the old good term Administrator?Quality Assurance (as … Continue reading Silly names and buzzwords in software development

High code coverage does not guarantee high quality software

Let's look at an academic example: function CalculateQuadraticRoots(a, b, c) { delta = b*b - 4*a*c d = Math.Sqrt(delta) x1 = (-b-d) / 2*a x2 = (-b+d) / 2*a return [x1, x2] } function Test_CalculateQuadraticRoots() { result = CalculateQuadraticRoots(1, -1, -2) Test.Assert([-1, 2], result) } The code has 100% code coverage, yet it works (without … Continue reading High code coverage does not guarantee high quality software

Concurrency – beyond the basics

Most of the programmers are aware of the typical issues of concurrent computing: Race conditionDeadlockStarvationLivelock All of the above are caused by improper synchronization. The need of additional concurrency abstractions Let's see the following pseudo-code: value = "not assigned" isCompleted = false func A() { while !isCompleted { } print value } func B() { … Continue reading Concurrency – beyond the basics

Professionals say “no”

Today during one of technical meetings, I have learned that professionals are assertive. When something is not correct, they clearly articulate it. What is probably the most important: they say it calm and unhesitatingly. Professional software developers should always be able to say 'no', when management wants to make shortcuts or even hacks. These almost … Continue reading Professionals say “no”