Blog: productivity

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.

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 »

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 »

Domain Driven Design for Everyone Else

I've been talking a lot about Domain Driven Design (DDD) lately, be it at meetups or with clients, so I thought I'd write down my thoughts and see if it helps. Now, lots of people have written about DDD from a technical perspective (see the end for links), so I'm not going to do that, instead I'm going to discuss DDD from a non-technical perspective. This is DDD for everyone else. ## Solutions Always Overrun Designing and building a solution is not a trivial problem. It never goes smoothly, and even if it's completed on time (which is never) the solution is usually ineffective and needs to be changed, often drastically. This lea...
Read more »

Communication styles - Working effectively as a team

This idea for this article came from a twitter thread by [@ErynnBrook](https://twitter.com/ErynnBrook/). The t...
Read more »

Expert help

Have a codebase where change is expensive and risky?