Stuart Grigg

Software Developer

Profile picture of Stuart

Hi, I'm a Software Developer based in South West England. I love programming, and love it most when it's done to make an impact.

Experience

My professional experience includes building monoliths and microservices, utilising a variety of database technologies, and creating modern web-based frontends. I like simple systems that can be iterated upon easily and remain maintainable in the long run.

A team needs great software development processes alongside great programming. I have worked in an agile environment, and have held the role of scrum master. My experience has led me to value a process that minimises the time from having an idea to delivering an impact.

I hold a bachelor's degree in computer science from the University of Cambridge. My degree gave me a broad-range of knowledge across the whole of computing, and I completed a dissertation in the area of machine learning with natural language.

In my spare time I have made small contributions to open source projects including VSCode Go, SQL Boiler and Material UI.

Technologies

Below are some of the technologies I have enjoyed working with.
  • Golang - I have programmed extensively in Go, mainly building web backend services. I like how the language's opinionated nature leads to a consistent codebase across a large team.
  • Typescript - Being able to write statically typed code for the browser is a massive productivity boost. Types give me so much more confidence when building on top of other people's code.
  • React - I have done a large amount of React development and have found it to be much more productive than AngularJS, which I have also used professionally. It's great to be able to build UIs in a functional rather than an object-orientated style.
  • Kubernetes - Working with containers and Kubernetes allows you to avoid the fragility of long-lived servers. I am not sure if Kubernetes is appropriate for all projects, but it does provide a feature-rich platform for building larger systems that may need elastic scaling.
  • Django - "The web framework for perfectionists with deadlines" is an apt description. My experience has taught me that for some use cases Python and Django allow you to deliver value quicker than a full single page application with a custom backend.

Recently Read

These are some software focussed books that I have read and would recommend.

Designing Data-Intensive Applications - Martin Kleppmann - A comprehensive guide to building modern data systems. Kleppman explains the perils of scaling a system past a single node and provides lots of guidance on how to overcome them. He questions the need for distributed transactions in these systems. The book describes a dataflow architecture, where services communicate over a stream processor rather than RPCs to maximise fault-tolerance and minimise coupling.

Implementing Lean Software Development - Mary and Tom Poppendieck - This book contains a great number of practical tips for software development teams. My notes on the book can be found on GitHub.

The Learn Startup - Eric Reis - Reis describes how anyone creating products or services under uncertainty can be classed as an entrepreneur, and hence can apply his techniques for building a successful startup. He suggests iterating on ideas quickly with robust measurement and metrics to quickly gain knowledge of the space the product is in. I particularly liked the section on picking the correct metrics that reflect how the product grows, such as churn rate for a product aiming to be sticky, rather than vanity metrics such as absolute numbers of visitors.