Hi, I’m David R. MacIver. I’m a software developer turned consultant and coach.

I worked for over over a decade as a software developer. First, in increasingly senior roles at a series of startups, then at Google, and finally running an open-source project, Hypothesis, which redefined the state-of-the-art in usability of property-based testing across any language. Many of the big-name Python projects now use it to find bugs in their code, including the Python standard library itself and NumPy. Many companies and smaller open source projects use it too: Hypothesis gets over two million downloads per month, and 4% of developers who answered the 2020 Jetbrains survey said they are using Hypothesis!

I have now mostly handed over the reigns on Hypothesis to others, and now work as a writer, coach, and consultant, focusing not just on software systems, but on the human systems that produce them, and how we can make those human systems better. I provide one-on-one and group support, primarily aimed at helping technical people with people problems including decision support, software development processes, and developing soft skills that help them work better together as a team.

Many companies work like badly maintained software projects: Everything more or less works, but not well. Really serious problems get fixed, but an accumulation of many small problems means nothing works as you’d like it to. The result is a constant drag on teams’ morale and ability to work effectively, and things take longer and seem harder than they should, often without any clearly identifiable root cause.

For example:

  • Code is sitting around in review for ages.
  • Embarrassing bugs routinely reach production.
  • Work takes too long because the wrong thing is being made, or the specifications are continually being revised.
  • Tasks often take much longer to complete than estimated.
  • People constantly feel overwhelmed with more work than they can get done.
  • People feel disconnected from each other and lack a shared sense of purpose, often leading to disagreements about what should be done.

Often these problems feel like they’re just facts of life or are too hard to fix. Even the ones that seem fixable, you don’t ever find time to prioritise because how do you choose between dozens of issues of seemingly equal and minor importance? There’s no looming catastrophe, but it feels like things could be much better, and you feel stuck as to how to get there.

The bad news is that there is no magic fix or methodology that will make all of this go away. The good news is that there are many easily accessible small, incremental, interventions that will make things better immediately, and that by consistently identifying those and gradually implementing over time, many small benefits accrue into large improvements. I can help you find those interventions.

I think of my work as helping people learn to maintain the human systems that underly our software development. These human systems are at least as complex as software systems, but are rarely treated this way. When software has a problem that affects production, you investigate it, debug it, and fix it. I can help you do this.

I offer three main types of service in support of this:

  • One-on-one coaching for people in senior roles. This can be individual contributors struggling with specific issues, team leads, or CTOs. I’m particularly keen on providing ongoing one-on-one coaching for CTOs, as this is among the most interesting and valuable work I can do.
  • Group coaching sessions for teams who are struggling with particular problems. This can be anything, but most often focuses on support for specific decisions (e.g. planning a particular big project, restructuring their work practices) or on helping identify and develop the skills they need for a particular pattern of ongoing problem.
  • 90 minute group classes for helping developers acquire crucial soft skills that allow them to work more effectively as teams. You can see the full list of classes here, but they include topics such as communication skills, decision making, and estimation.

If this sounds like something you could use, let’s talk! Drop me an email at david@drmaciver.com or book a free consulting intro session with me using my calendly.