Blog:

My thoughts on software development.

Categories

I have many interests in software development and I enjoy writing about then. As such my blog doesn't cover just one topic.

Exploitation vs Exploration in Software Development

Today I'm going to explore a question that's been rattling around in my head, "Why does software inevitably get worse over time?". Every software systems I've worked on inevitably decays and becomes difficult to work with, despite everyone's best intentions. Why is this? Well, I've come to believe that this is a systemic effect, resulting from the businesses hyper-focus on immediate profit, causing a mis-balance between exploitation and exploration. ## Exploitation vs Exploration: The [exploitation vs exploration dilemma](https://en.wikipedia.org/wiki/Exploration-exploitation_dilemma) is a key factor in any decision that factors in...
Read more »

DDD EU 2022

Here are my notes from [DDD EU 2022](https://2022.dddeurope.com/schedule/). It was a great conference this year with a focus on models, growth, managing complexity and dealing with legacy. Will definitely review these notes in the near future and see how I can apply them to my work day to day. ## Opening Keynote Speakers: - Andrew Harmel-Law - Diana Montalion - Mike Rozinsky - Gayathri Thiyagarajan **The advice process:** 1. When working on something, get advice from two groups: 1. Those affected by the decision 2. Experts in the area 2. Then it's up to you to decide The goal is to free up decision bottlenecks from making deci...
Read more »

Reward mechanisms: Incentivising quality

Show me your reward mechanisms and I'll show you your problems. I've been thinking a lot about reward mechanisms, how they incentivise us and how they can be gamed. They exist to ensure we're going in the right direction, defining a win scenario as tightly as possible, and if they're poorly chosen they can lead to a company collapsing slowly over time. Like any tool they are both a blessing and curse. ## Reward Mechanisms So what is a reward mechanism? A reward mechanism is a process that encourages certain behaviours by offering a reward at the end. Exhibit the behaviour, get the reward. Typical examples are bonuses at work for r...
Read more »

Using Factories to Write Tests: A Love Letter to Factories

Hello there and welcome to an article I've wanted to write about factories for a very long time. This article is really a love letter to the humble factory. As a pattern it could not be simpler, yet it is the most powerful and paradoxically the most underused pattern when writing tests. An ambitious statement, let's dig in and see where we get. ## What is a Factory Ok, so this seems really basic and I imagine there are a lot of rolling eyeballs right now, but let's go through the definition I'm using, just so we're all on the same page. A factory is something that creates an object in a certain state. Factories return scalar value...
Read more »

Estimating software: How to deal with requests for estimates

A question that often comes up in conversation with other developers is "How do I deal with requests for estimates?". Usually the person asking the question is frustrated, they know that any estimates they create are pure fiction, yet management keeps asking for them anyway. Then they ask the real question; "How do you make them stop?". Well, I usually give the same answer, "You don't.". Instead you need to ask why are they asking for estimates in the first place. What problem are estimates solving for them? Once you understand that you can figure out the best way to help. ## Why we're asked for estimates When I listen to develop...
Read more »

Template Driven Development: Why it doesn't work

Software development is hard, and there have been many attempts to simplify the process over the years, some good, most bad. I'd like to discuss one of the bad attempts, a recurring problem I've seen in software development that myself and my friends have dubbed "Template Driven Development" (the bad TDD). Template Driven Development is the practice of reducing software development down to a series of templates that developers should follow. Developers are given a user story and a rigid schema for how their system should be structured, they are to use a set of pre-defined patterns that they must follow when modelling concepts in th...
Read more »

Introducing DDD to your Company

The following are my notes from the last DDD IE meetup, [6th June 2019](https://www.meetup.com/Domain-Driven-Design-Ireland/events/261668803/), on how to introduce DDD to your company. This post is about the concepts we discussed and discussions we had around the topic. There's some great stuff in here, the kind that can only happens through discussion and collaboration. First off, the meetup itself was structured as half talk, have group discussion, with discussion interspersed throughout the slides. We've done a few of these style of meetups in the past and they've worked out really well. Here are the slides: https://slides.com...
Read more »

Folder Structure and Frameworks: What is exerting control?

Recently I've been thinking about folder structures, specifically how we structure our web apps to encourage the design we want and to enable other developers to explore and understand the codebase. This train of thought was spurred by a problem we faced with one of our apps, which I'll go into shortly. ## Folders Give Context When we open up an application the folder structure is the first thing we see, even before we glance down at the readme. It conveys the hierarchy of concepts and hopefully how they relate to each other. A haphazard folder hurts more than it helps, especially if you have to hop around from folder to folder. Ch...
Read more »

Expert help

Have a codebase where change is expensive and risky?