The physical side of the software process
March 23, 2009
When folks talk about the “Software Development Process”, there’s usually a lot of talk about gathering requirements, or tracking issues, or verifying business logic, and so on. Whether waterfall or agile, the discussions on development processes almost always focuses on tools and concepts. Methodologies.
Over the years I’ve grown suspicious of any and all promises attributed to methodologies. If there was a single best way to develop software, we’d have all settled on it years ago and everybody would build this stuff the same way and nobody would be making thousands of dollars selling books on “The NEW Software Development Methodology” or running enormous conferences to explain their NEW Software Development Methodology.
But to be honest, I’ve found the biggest gains in productivity and general developer happiness rarely come from methodologies or tools. Bug trackers are all basically the same. Each developer has their favourite IDE that they’re most comfortable using.
The biggest gains I’ve ever found come from PHYSICAL improvements. I blogged on my own blog about the value of a couch when I was project managing. I remember when a shop I was working at brought in some consultants who relied on sticky notes for virtually everything, and what a tremendous value that was. I’ve also blogged about the design of the whiteboard and why it’s so important in collaborative design work.
FreshBooks just moved into a shiny new office. It’s a beautiful place, high-ceilinged and open, with lots of meeting space and all that. We’re very happy, even if construction is still ongoing around us and gets a little (a lot!) noisy at times. But it was a chance to design an office just the way we wanted it, which meant:
Lots of whiteboards! They’re not all properly mounted on the walls yet, but we have nearly a 1:1 ratio of developers to whiteboards. Massively useful tools, even if it’s just for posting silly cartoons on. The ability to just say, “Look, here’s what I’m thinking,” and draw out a diagram or a couple of circles or whatever is huge and it’s easy to think you don’t need it. There’s simply no such thing as too many whiteboards.
Meeting spaces. We were kind of hurting for meeting room space in our old office, but the new one gives us a lot of options. There are quiet nooks where a couple of folks can gather and a few proper meeting rooms of different sizes for intense sessions where you need everyone to focus (and whiteboard!). My estimation is that you need at least one meeting room per ten employees.
Open spaces. The office is a wide-open room, which I know some folks don’t like (Hi Joel!), but at FreshBooks we’re all chipping in on handling phone calls, or helping out vetting one of Saul’s crazy ideas, so it’s important to us that everyone’s available all the time. There’s an unexpected side effect of this: if you hold a meeting of some type in such an open space, EVERYONE can see it happening. We do a daily stand-up with all the developers every day at 10:30 — just a quick go-round of what everyone is doing today. Back in our old office the development team was separated in different rooms so not everyone could tell at a glance that the stand-up was happening so there was always some rigamarole around getting everyone organized. In our new space, folks can SEE the meeting happening and they jump up to get in on things. It’s natural and automatic and makes us all more productive.
Getaway space. There’s also a big lounge/kitchen area away from everyone’s desks where you can just get away and kick a ball around, grab something to drink or take a nap on a comfy couch. The kitchen is big and spacious, so lots of folks can get to putting meals together without clonking into each other. Interesting conversations happen here — there’s an ongoing plan to become international jewel thieves that we flesh out a little more each week — and it’s important to have space that facilitates pointless encounters because you never know where inspiration will strike.
Space is SO important. There are so many fantastic ways to improve a team’s productivity that don’t involve purchasing expensive software licenses or hiring high-priced consultants. A $500 couch or a $200 whiteboard or even just a $5 pack of sticky notes can do more for your team if you implement it properly.
Anyone else got stories about low-tech solutions for high-tech problems?