Development process

When does refactoring become rewriting?

19 June 2017

Refactoring describes a very specific and controlled technique for improving code. The problem is that it is often used to describe wholesale changes to code bases that should be treated as a rewrite.

Using Docker to build and deploy .Net Core console applications

12 April 2017

Using Docker with .Net Core is initially straightforward, but to get beyond basic image building you will need to handle more than the simple scenarios demonstrated in quick-start guides.

Architectural governance can be used to foster innovation. No, really.

3 April 2017

Governance doesn’t have to be all about byzantine process and suffocating approval boards. It can be used to provide clear permission for teams to innovate.

Forget code coverage – test design should be driven by behaviours

19 December 2016

Test coverage statistics are much loved by management teams and code quality tools. They tend to associate a high level of coverage with robust, well-managed code bases. Wrongly, as it turns out.

What's in a name? Three-lettered acronyms and their impact on development culture

20 September 2016

Three-lettered acronyms can be a useful tool for providing brevity, but they can also give rise to a coded language that contributes to a cold and impersonal development culture.

Should microservices share technologies and platform capabilities?

28 June 2016

Should agile teams be encouraged to share capabilities or be given total autonomy over their technology choices? For larger organisations this can become a trade-off between economies of scale and speed of delivery.

How do you foster technical excellence in an agile development culture?

22 May 2016

Technical excellence is one of those slightly nebulous phrases with many different interpretations. In an agile context this means removing constraints and it is more than just a team responsibility.

Managing services that don't have clear code ownership

5 May 2016

How do you organise code ownership for services that do not align conveniently with team or organisational boundaries?

Informatica Cloud development best practices

18 January 2016

Informatica Cloud is a powerful environment but a pretty unforgiving one. Here are some best practices that I have picked up from implementing the platform.

Most software architecture diagrams are useless

11 August 2015

The best architecture diagrams act as a map - if an architect can’t express a system clearly and concisely then they probably don’t understand it properly.

Deploying a Windows Service remotely with Powershell

12 June 2015

As with any deployment automation, there’s a fair amount of duct tape and chicken wire involved in deploying a Windows Service remotely.

What role do architects have in agile development?

12 March 2014

Agile principals encourage self-organising teams to take ownership of solutions. This doesn’t leave architects out in the cold, but it does require a more engaged role based on influence rather than governance.

Lean development’s “last responsible moment” should address uncertainty, not justify procrastination

21 February 2014

Deferring decisions to the “last responsible moment” can help you to adapt to the inevitable uncertainty that comes with agile development. The risk is that it can become an excuse for uncertainty that undermines development velocity.

Agile velocity is not a measure of productivity

12 August 2013

Agile does not necessarily lend itself to management reporting. The few metrics it exposes are designed to support internal planning rather than external measurement. It can be tempting to re-purpose velocity as a measure of productivity, though this will only distort team planning without saying anything meaningful.

Sharing APIs in an organisation: challenges and pitfalls

4 June 2013

Sharing services and APIs can appeal to a desire to reduce duplication and improve development efficiency. It’s a worthy ambition though the journey there can be littered with costly traps for the unwary.