-
Proficient vs Senior
I recently read a post in LinkedIn claiming that the difference between junior and senior developers is how we check if a number is even or odd (I was unable to find that post again to share the link). According to this post, junior developers would do something like: And that instead, senior developers (like…
-
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…
-
Premature Code Optimisation
When trying to solve a complex technical problem, it’s easy to get caught up in concerns about performance before anything’s even running. I want to share a story about a time when I introduced what seemed a reasonable idea to solve a transformation problem, but ended up in the middle of a long-running debate about…
-
Reducing Uncertainty With Genetic Algorithms
Recently, I needed to find a formula that predicted how often an event happens based on a percentage value. The challenge was to make sure the formula worked well for all reasonable inputs, without giving unrealistic results. In his book “How to Measure Anything: Finding the Value of Intangibles in Business”, Douglas Hubbard explains how…
-
The Time Management Matrix
Time is our most valuable resource because it is limited, and we cannot get more of it. If we manage our money, we should certainly manage our time. In The 7 Habits of Highly Effective People, Stephen Covey presents a key framework for understanding how to use our time effectively: the Time Management Matrix, also…
-
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…
-
Dysfunctional Teams
I recently finished a book titled The Five Dysfunctions Of A Team, by Patrick Lencioni, and I found that the concepts it presents are so interesting that I should write about them. This article is not intended as a substitute for the book. I hope that after reading this article you get a copy and…
-
The Fallacy of “No Time”: Embracing Decision-Making for Better Productivity
I have frequently heard someone say they wish they had more time to do all the things they have or want to. If we were talking about reading every book ever written, then yeah, that’s life. There’s just not enough time in a lifetime to do that. Instead, today I’ll discuss the case when we…
-
SOLID Design Principles For Object Oriented Software Development
Writing good software is not just about having it working with all tests passing. This is not enough. We also need to ensure that what we write can be easily changed. Many systems fail because they can’t be changed. I know of a company that acquired a system to complement its offering. Although the system…