All Posts

Decision-Making in Autonomous Teams: A Step-By-Step Guide

Why do we need this? One of the most difficult aspects of a leadership role is striking a balance between giving direction and encouraging teams to make decisions for themselves. While experience may suggest that a particular solution is likely to be the most effective, it’s unlikely to be successful unless the team commits to it. There’s also a chance that better solutions exist, and given the right environment, teams will often discover these themselves.

Functional Design Patterns in Scala: Monads

Learning (and subsequently trying to explain) monads has become something of a rite of passage in functional programming. Burrito analogies aside, the most helpful description I have come across is given by Noel Welsh and Dave Gurnell in Scala with Cats:

“A monad is a mechanism for sequencing computations.”

Scrap the Boilerplate in Scala with Lenses

Case classes provide a convenient way of working with immutable objects in scala. Manipulating fields within them can be tedious, however. In this post, we will look at how lenses can be used to abstract over this complexity while preserving the benefits of immutability.

Functional Design Patterns in Scala: Monoids

Monoids are used to describe an aggregation pattern: whenever we need to combine values of a particular type, a monoid instance helps abstract the mechanics of the aggregation from the program’s business logic. In this post, we will use the LCD Digits kata that we tackled previously as a motivating example for applying this pattern. The goal here is to transform a sequence of input digits into a string resembling their representation on an LCD display.

Interactive Kotlin with kscript and fswatch

Experimenting with snippets of code and getting rapid feedback is a good way to get up to speed with a new language or library. I’ve been playing around with Kotlin and Λrrow at work this week, so have been looking for tools that help achieve this workflow. Worksheets in IntelliJ provide some of this functionality, but personally I prefer the immediacy of a text editor and the command line for this kind of thing.

Agile Estimation For Distributed Teams

The teams I’m working with use Planning Poker to estimate the size of user stories. This has proved to be an extremely useful activity, and we rely on it to plan upcoming work. In the past, we used special card decks for this, which worked well when everyone was based in the same room. However, with team members now distributed across two continents, this quickly became less effective. To address this, we initially tried running the sessions over a conference call, using group chat channels to record votes on the items being discussed.