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.

Handling Protocol Buffers backwards compatibility between versions 2 and 3 using C#

13 November 2016

You will inevitably be pushed towards upgrading your protocol buffer messages to Proto3, particularly if you want a client that supports .Net Standard that .Net Core. This can be done, but there are a couple of speed bumps along the way.

What's so bad about monoliths anyway…?!

3 October 2016

Don’t get me wrong - I am an advocate of decomposing functionality into autonomous services. My reservation is that you need to have a lot of prerequisites in place before you can start leveraging microservices.

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.

PolyBase import and export between Azure SQL Data Warehouse and Blob Storage

13 August 2016

SQL Server Polybase makes it easy to load data into Azure SQL Data Warehouse by letting you define groups of files held in Azure blob storage as relational data tables.

Migrating .Net framework applications to .Net Core

9 August 2016

Migrating existing applications to .Net Core is not a trivial undertaking so you need to be certain of the potential benefits before you start.

Designing an event store for scalable event sourcing

29 July 2016

Event sourcing can scale very nicely, though this does depend on a number of key design decisions for the underlying event store.

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.

Is “Serverless” architecture just a finely-grained rebranding of PaaS?

2 June 2016

Serverless computing makes bold promises of development without having to worry about environments, scaling or deployment. Haven’t we been here before?

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?

What do we actually mean when we say business logic?

14 April 2016

In most cases “business logic” just refers to the poorly-defined “gloop” that sits between user interfaces and databases in layered architectures.

API gateways and the dangers of creeping middleware scope

23 March 2016

An API gateway can solve many generic problems in an API infrastructure, but you do need to define a clear remit and protect against creeping scope.

Data design for event-driven architecture: autonomy, encapsulation and ordering

1 February 2016

When you’re implementing an event-driven architecture, the design of your events is absolutely critical to realize the benefits of loose coupling.

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.