Douglas Parsons

Tolerances: How Formula 1 pistons can teach us to be better developers

Why do Formula 1 car pistons cost around 1,000 times the amount of a typical road car piston and what can this teach us about programming?

3 popular technologies that I will strive to never use again

There are a lot of different technologies out there. More than anyone could possibly explore. The de-facto position is to look for technologies that are popular, following the logic that “if enough people like it, it must be good”. In my experience, this isn’t always the case though.

Creating challenges: three ways to improve the technical assessment

I’ve been reflecting on ‘what makes a good engineering assessment’, and I’ve come to the conclusion that a good assessment – as part of recruiting – should pay careful attention to three main things.

Testing is important: three ways to easily improve test quality

It’s no secret that testing is important. We rely on tests to describe intended behaviour, catch any subtle bugs and prevent regressions in our code. But why are tests always such a pain to write well?

Three unusual qualities we look for to hire amazing developers

The qualities we do look for are probably considered unusual compared to most software engineering outfits. Let's take a look at the three we use to ensure a good fit for working at Shamaazi.

Don't Write Utils: how to become an amazing programmer by naming carefully

I hate the word ‘utility’. It says absolutely nothing. And yet, I come across it in so often when programming. It can take different guises too: ‘common’, ‘shared’, ‘lib’, ‘pkg’, ‘tools’, etc. These names can appear both as filenames or as directory names and drive me insane when they do.

3 amazing REACT HOOKS to keep your code organized neatly

Here are the three React Hooks I have found the most useful for producing websites in the cleanest, simplest way possible. They manage localStorage, sessionStorage, authentication and asynchronous tasks.

How to write IMMUTABLE code and never get stuck debugging again

Lets look how walruses eating cheese can explain how immutability works, why you should care, and why the counterarguments against immutable code aren't worth considering.

Write better code and be a better programmer by NEVER USING ELSE statements

I've written production code in a huge variety of languages, through Haskell, Scala, Go, Python, Java or JavaScript. Across all these, I noticed one significant trend: I pretty much never use the ELSE statement. Here's why.

Why EFFECTIVE COMMUNICATION is the key skill for being an awesome programmer

Programming is all about communication. And yet, communication is a difficult thing to get right. Here's why it's so important, and how to communicate better.

Avoid COGNITIVE OVERLOAD when programming in 4 simple ways

Programming can be an arduous activity. You have to remember what you are doing, the context and inner workings of a system, the building blocks of the language you are using. All while coming up with creative solutions to problems. All this can lead to COGNITIVE OVERLOAD. Luckily, there are some simple steps we can take to avoid this.

Learning programming is DIFFICULT

Have you ever wanted to learn how to program, or to learn a new concept? Have you ever come across a technology you wanted to play around with but had no idea how to get started?

The DRUG of online tutorials

Programming tutorials all sell you a dream. A dream of untapped skills. A dream of potential. But they all have the same problem.

Go Logger - Why we wrote our own

At Shamaazi, we found the existing Go libraries for logging overcomplicated and not neatly doing what we wanted. Instead, we wrote our own. Here's why.

A Trick to Help With Reference Data

I've continually made this same mistake with reference data. It's a mistake that's incredibly common, and easy to avoid. Here's the simple trick I've found.

Task - An easy to use tool to simplify your build

At Shamaazi we've been using a tool called task. It's incredibly powerful and incredibly useful for organising and performing repeated jobs. Let's explore what it's capable of.

You should only write USEFUL tests

A common mistake is to test every piece of code you write. This can be harmful and unnecessary. Let's explore why.