Blog

Alexander Bird Software • Blog

Learning to build useful, valuable software as part of a team.
About
2025-09

Software Team Taboos

Strategies for talking about those things that nobody wants to talk about
2025-07

Spike, Revert, TDD

A pattern for practicing TDD when you don't know where to start
2025-06

Adopt, Adapt, or Ignore

A pattern for sharing inventions between autonomous teams
2025-04

Type Narrowing in TypeScript

When the API gives us too much info and we don't want to know about it
2025-03

So DRY it's SCORCHED

How to tank your maintainability by over DRYing your code
2025-03

Readability Requires Editing

How ease of inline/extract refactoring impacts the inevitable readability of our code
2025-02

A Mental Model for Reactive Programming

From City Water Supply to My Kitchen Sink
2025-01

Generating Angular Service Spies

Reducing Keystrokes and Supporting Refactoring
2025-01

Continuous Learning Through Coding Games

Coding Microsites and How We Use Them
2024-10

PowerShell Script: What Changed While I Was On Vacation?

Listing all the git changes across many repos from certain authors in the last week
2024-09

Solving Hard Problems Without Luck

Thirty-One Alternatives to Guessing What To Do Next
2024-09

In Favor of Single-Team Ownership

An argument for independent software teams
2024-08

Angular Testing Patterns

ng On Init, ng On Changes, and mock components
2024-06

Split Pipe

a Refactoring Pattern for RXJS
2024-05

How do I learn and grow as a software developer?

2024-06

Adapter vs Facade vs Bridge

Notes while reading Design Patterns: Elements of Reusable Object-Oriented Software
2024-05

Is a tomato a fruit or a vegetable?

On software encapsulation and tomato taxonomy
2024-04

Group By using Reduce in JavaScript

Not often useful, but when you need it it's helpful to know
2024-03

The Joy of a Low-Hazard Development Environment

Shaping our tools and processes to reduce risk in our work
2024-01

Git Squash

How to combine multiple commits
2024-01

Slingblade

When it's time to abandon your precious idea
2023-12

Sketching Wildflowers and Writing Software

Lessons from a visual artist on tackling overwhelming complexity
2023-11

Motivation Engineering

Technical strategies for tackling overwhelming lists of compiler errors
2023-11

“Jump onto the desk, Harry”

Distributed Monoliths, Harry Potter, and Half-Doing New Ideas
2023-11

Hotspot Analysis

Finding the most maintenance-worthy code in the project
2023-11

Find the Bright Spots

Notes while reading Switch
2023-11

Facilitating a first-time ensemble session

My current approach for guiding a group through their first time ensemble programming.
2023-10

Notes while reading Switch

Leading change requires more than analysis and arguments
2023-06

My Technical Approach

A mind map of things that I focus on at work
2023-06

Optimize for never hearing about this again

Approaches for increasing your tenure without collecting interruptors
2023-01

Mistakes I still make when writing software

(And what I do when I realize I've made them.)
2022-12

"Do you have any questions for me?" (2022 edition)

Questions I ask my interviewers.
2022-12

Architectural Decision Records for Intuitive Decision Makers

How to use ADRs to teach your peers, correct your mistakes early, and equip others to share ownership of what you build
2022-12

Leaders ought to clarify the problem (and not solve it)

What I do to create an environment where everyone gets to do interesting, valuable work
2022-07

Customer-Centric Iterative Project Breakdown

Describing two project archetypes: the tech-centric project breakdown, and the customer-centric alternative.
2022-04

The Natural Micromanager

I've been thinking about how we decide what to do next, and how we share that with others.
2022-03

On Estimates

Let's not take time making guesses that are more precise than their accuracy warrants.
2022-02

Written Narrative Driven Collaborative Discussions

An alternative meeting format for highly abstract or contentious discussions
2021-11

Crossing the WIP per person threshold

How we reduced WIP/person from >1.5 to <1
2021-07

Working Styles Classification

A reductive visual summary of collaborative programming terms like mobbing, pairing, and swarming
2021-04

Organic Adoption and the Build vs Buy Dilemma

An exploration of one dimension in the decision to build custom or to use an off the shelf component
2021-04

Getting Better At Writing Code For Readability

Some things that I have found helpful to grow in writing code for humans to read
2021-03

The "Just Sharing" Principle

an approach (that I've found effective) for telling folks about tools & practices
2020-12

jq cheat sheet

Notes on cool things to do with the JSON processor tool

Hobby Project Index

An inventory of my favourite side projects (for fun & learning).
2020-12

Link Shortener with Route 53 and S3

Can you make a link shortener with just a DNS? Not quite.
2020-11

Introducing Mobbing with Empathy

Mob Mentality Show (guest appearance)
2019-10

Interview Questions

Questions for job candidates to ask interviewers
2019-09

Foundational Software Development Skills

Links to resources and tutorials covering basic, (boring?), but essential skills for a software developer.
2019-09

Getting Help as a Software Developer

Troubleshooting your code and what to do when you can't
2019-06

Reading List

Books I've found helpful or want to read soon
2019-05

Git Recipe Book

Git suggestions for developers first starting on a medium/large team.
2019-05

The Active Code Reviewee

Getting the most from a quiet reviewer
2019-05

Pair Programming Primer

2019-03

Git commit message template

To train me to write better commit messages
2019-03

Architecture Tests in JavaScript

Communicating big-picture architecture with your team with automated tests