-
Dependency Inversion Principle
In one of my previous articles I made a brief introduction to the SOLID principles for Object Oriented Software Development In today’s article, I’d like to cover the Dependency Inversion Principle (DIP) in more depth, starting by explaining what it is, how it’s supposed to be used, and what are its concrete benefits. What Dependency…
-
Collaborating Through Code Reviews
In my last article, I discussed how we can prepare our code to run effective code reviews, but that’s only part of the picture. Many developers start their careers without really knowing what code reviews are for. We’re taught how to make code “work”, not how to work with others to make that code better.…
-
Preparing Code for Effective Code Reviews
Many developers start their careers without really knowing what code reviews are for. Whether we studied at university or joined a coding bootcamp, the focus is usually on learning algorithms and writing code that “works”, while quality and collaboration are seldom covered. It was the same for me when I was at uni. I was…
-
Sequencing Tasks In Collaborative Teams
Having to take on multiple responsibilities at once may be overwhelming. People are really bad at multi-tasking on brain-intensive activities, so finding a way to meet all these expectations may be daunting. The most immediate solution to this is to do one, and then the other, in sequence. Although this is reasonable in some cases,…
-
Why Skipping Unit Tests Is A Bad Idea
Unit tests were introduced about twenty years ago with the intent of improving software quality. They can be tedious, so developers (especially junior developers) tend to avoid them. It is well known that there is a learning curve associated with writing unit tests, and mentoring is essential to build this skill. While working in a…
-
Why Avoid Decision Paralysis
Sometimes we struggle with very minor decisions in different settings. A common example of this is when we want to watch a movie and we have not picked one after one hour of scrolling. When we don’t make a decision, we’re deciding not to decide. Sometimes, this is the worst decision we can make. Decision…
-
Play For The Team
During my career I’ve seen many teams of different shapes and sizes, and I’ve noticed that the most effective teams are those where people actually care more about their teammates than themselves. Takehiko Inoue shows this very clearly in his best seller manga Slam Dunk, which also happens to be my favourite. This manga follows…
-
De-risking A Rebuild
My team recently started working on a product rebuild from the ground up. All software development projects have some inherent risks. In my opinion, the main risks of this project are: To manage these kinds of risks, teams often turn to frameworks like the Project Triangle, as I explained in this article. However, that doesn’t…
-
Project Deadline Estimation
When we estimate how long a project will take, we need to start with a fundamental understanding: we will always be wrong. No matter how much experience we have or how carefully we analyse the work, unforeseen factors will influence the outcome. The goal of estimation is not to predict an exact completion date but…
-
The Paradox of Agile Estimation
In the world of software development, Agile is recognised for its flexibility, iterative feedback, and embrace of uncertainty. Paradoxically, most developers are still expected to estimate when a project will be completed. In this article, I’ll explain why we estimate, how Agile was born, and how this paradox arises. Why We Estimate Software developers who…