Designing a Scalable Deployment Pipeline

Anyone who’s led a product engineering team knows that a growing team requires investments in process, communication approaches, and documentation. These investments help new people get up to speed, become productive quickly, stay informed about what the rest of the team is doing, and codify tribal knowledge so it doesn’t leave with people. One thing […]

Why Estimate Bugs and Chores in Your Backlog?

When we’re running a client’s project using our Atomic Process, our team will assign an estimate of points to each item in the product backlog. In general, we classify backlog items into three buckets: Features (new or enhancements) Chores (dev work not resulting in tangible product changes) Bugs (fixing unexpected behavior or regressions)

Transparent Project Management with Burn Up Charts

Uncertainty is inherent to software development — it’s impossible to precisely predict how long individual tasks will take. And that makes it very difficult to manage software projects using traditional project management tools. Bottom-up estimates and Gantt timelines created before a project starts are helpful for setting initial milestones and budgets. But once development is […]

Prioritizing Refinements – Choose Wisely

As software craftspeople, we constantly reach for sublime elegance in our work. Just beyond every module rewrite or subsystem refactoring is the paradise of ultimate modularity, configurability, and simplicity — somewhere we never quite arrive. However, we shouldn’t fall prey to actually believing that given the necessary time to implement every abstraction, refactoring, and re-organization […]

Winter Bike Commuting

I’ve been commuting to work on a bicycle year-round in Grand Rapids, Michigan since 2005. I’m lucky to work at a place that’s so supportive of bike commuting, enabling me to ride in year-round for the past 8 years. Winter riding, in particular, is what I find most enjoyable. No one should feel that snow, […]

Simple Passive Code Generation

TL;DR – Here’s a rake task you can use to easily generate classes: desc 'generate a class in lib/ and a spec in spec/lib/ for name=underscored_class_name' task :genclass do require 'erb' filename = ENV['name'] raise 'must specify name=underscored_class_name' unless filename classname = filename.camelize class_file_template = ERB.new <