The best process is owned by its team, but everyone has to start somewhere. That’s why I drafted this, a template for Atomic Object’s Agile process. It’s designed to be a starting point for our maker teams as they come together to tackle a new project.
Agile backlogs should be oriented to a client first, team second, and product last. At Atomic, our teams range in size from two to eight developers. Teams larger than eight generate too much communication overhead and require too much effort to manage the backlog.
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 […]
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)
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 […]
Making custom software products is extremely difficult and rife with risk—technical risk, business risk, etc. The Product Manager’s job is to see the big picture, manage the risks, and help the whole team make smarter decisions.
During the past few months, I’ve taken on the daunting task of collecting some of the important software development lessons we’ve learned at Atomic over the past decade into a body of writing about the size of a handbook. The goal is to capture the ideas in a way they could be easily shared with […]
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 […]
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, […]
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 <