Dev Camp 2019

Luke Canvin

At OCC, dev camps are a way for us to experiment with new technologies, create prototype products, and bring back recommendations to the wider company regarding the new tools and techniques we've been able to evaluate.

We take a small team of developers off-site for a week to work on a brand new system, using new technologies that we've identified as being potentially valuable and that might otherwise be tricky to evaluate clearly.

Objectives

Why run a dev camp? Dev camps have a number of objectives, some technical, some business-oriented and some developer-oriented. We've run dev camps in the past and these are the aspects we value most about them:

  • To evaluate new technologies that may be of use to OCC
  • To give members of OCC’s product development and Innovation Delivery teams the opportunity to work together
  • To provide material that we can talk about in Show & Tells, blog posts, talks to external groups, etc.
  • To provide a break from the day-job to work on a new and interesting project for developers that have shown motivation in keeping up with new technologies
  • To produce a prototype system that may be of value to OCC

Our key tenet is to prioritise learning, which really helps with decision-making during the week. Our aim is not to necessarily end up with a polished product, but to have learned as much as possible to bring back to the company.

The challenge

This year we will be building a web application that allows a hospital to manage the self-referral of patients looking for a second opinion on a diagnosis of life-limiting illness.

We'll be selecting a small but challenging slice of the full requirements for such a system. This will involve the generation of user interface based on how the hospital has configured their referral forms, and handling the workflow as that patient is assessed by the various teams at the hospital, and eventually given a report containing the second opinion.

Technologies

This year we have selected one key new technology to evaluate for each layer of the web application:

Client-side - Blazor

Blazor is of great interest to us with its promise of a full C# web application framework and the code efficiencies that brings with it. In little over a year, Microsoft has taken Blazor from an experimental project to a fully supported part of the ASP.NET framework and the .NET community is already responding with open sourced components and examples of what can be done.

For us, the key value from Blazor will be the ability to share C# DTO and validation code between the client and server, completely removing the need to write duplicate JavaScript code for the client-side.

Server-side - Event Sourcing

The Event Sourcing pattern, most famously described by Martin Fowler, is a method of persisting changes to a system's entities as a series of state-changing events. By replaying these events, the system can reach the current state of the entity.

For us, the key value from Event Sourcing is that not only would we have an inherent log of every change made, but we can easily find the state of the system at any point in time, or even retrospectively change a past event and replay the subsequent ones to reach a new state. These mechanics could be useful to our chosen challenge, but are likely to also be very useful to our Local Government finance products.

Data store - Azure Cosmos DB

We have a great deal of experience using Microsoft's SQL Server and its associated tools, but Microsoft's Azure Cosmos DB offers a large number of potential benefits. Cosmos DB can elastically scale throughput and storage whilst offering incredibly fast data access. It also supports a variety of APIs including SQL and MongoDB.

For us, we're keen to explore the "no-SQL" features of Cosmos as, in a system with user-defined fields/forms, we will have few strict schemas, and SQL Server is not really geared up to supporting that as efficiently.

Getting started

As I type, the team is well into their first day, set up in a seminar room at the Said Business School in Oxford. There'll be a post soon with an update on what we've been up to in day 1.

You can follow along here on the blog. All the posts will be tagged with dev camp.