19 August, 2007

Scanning whiteboards

In one of my previous jobs, I led a development team for a very large photography company in Rochester, NY. It was standard practice there for there to be a digital camera available in every conference room for meeting participants to use to photograph the whiteboards to capture diagrams, minutes, and so forth. Buying a cheap digital camera, preferably with something like an EasyShare dock to make the process of extracting photos from it trivially simple, had been on my "to do" list for setting up our new office.

Instead, our CTO bought us a pair of PLUS M-11W scanning copyboards. I had used "digital whiteboards" in the past that used magnets or such, and wasn't impressed, but these are actually quite nice. The writing surface is an endless conveyor belt that feeds through a linear array scanner; you write on it with regular whiteboard markers, and it can save the scans to a USB thumb drive, or print directly to a colour inkjet printer. They were a bit of a bear to get physically into our project room and set up, but they've really grown on us, and we routinely post whiteboards from meetings and design sessions to our team wiki.

The down side is that they're only two of the seven whiteboards in our project room (and we're likely to simply cover the walls in our permanent space with 4' x 8' bathroom tile when we move), and are useless for capturing what's on, say, the whiteboard that we use for our status tracking. On the other had, the conveyor belt design means that we essentially get two whiteboards in the same physical wall space, one of which can be rotated out of the way. That has allowed us to do things like keep an updated living design of our main system workflow on one of them, without permanently sacrificing an entire whiteboard.

Would I buy them again for a future team? Probably. They cost about as much as a developer workstation, but scanning takes such little effort, and the scans are of higher quality than a digital camera photo (and free of glare) that we use them all the time, and the ability to keep a whiteboarded design around for later modification practically sells the gadget by itself. And a good magnetic whiteboard of similar area would cost an appreciable fraction of one of our scanning whiteboards.

We're also likely to be acquiring an inexpensive digital video camera with a still frame function very soon, so this isn't really an "either-or" choice for us anyway.

Now we just need to rig them so that they post to our Wiki automagically when we hit the "save" button....

Recording daily stand-up

One of the things we've done on our project that has really helped is to record our daily stand-up meetings with a digital voice recorder and post the recordings to our team Wiki.

Our old CTO was big on written status reports, and asked everyone on my team to spend fifteen minutes every day writing status reports into their news space on our Confluence server. It inevitably takes half an hour to write a "fifteen minute" status report, which adds up to two and a half hours per week per person... or 6% of our capacity.

The next day, right before stand-up, I noticed a USB voice recorder on our product manager's desk. I decided to try making that the "talking stick" for our stand-up instead of the stuffed animal that we had been using. By passing the recorder as a talking stick, we got a good quality recording of each speaker's voice, and the fact that it was a USB digital recorder made it trivial to get the recordings off at the end of the meeting and post them to my daily reports in Confluence.

The recordings have been a huge hit. Our old CTO loved them (though they failed to fend off the written reporting requirement), and they quickly spread to the rest of upper management. Since we finish our stand-up meetings in ten minutes, they're short enough to fit into a busy executive schedule, and because they're recordings, they're asynchronous, and can be listened to between meetings or while doing other tasks. Our CEO is now a regular listener, among others... and other groups that hadn't been standing up are now doing so, having trained themselves by listening to our model. Also, because we can offer the recordings to all interested parties, there's less pressure for "chickens" to be physically present in the meeting, although that's less of a concern for us because we're located in a different city from the rest of the company. (Naturally, the recordings have helped to bridge that distance.)

A couple of weeks ago, I needed to work from home for half a day to take some lengthy phone meetings without disturbing our team, and I had the opportunity to actually use the recording to catch up with what the team was doing. It really worked, and in fact, I picked up some important status information from it that I was able to use in my phone conference with our investors. Having the recordings also gives us a lot of valuable institutional memory, for no additional cost beyond having morning stand-up, which we were going to have done anyway.

Memo to myself: investigate how much it would cost to have a transcription service transcribe our stand-ups... or better yet, look into speech-to-text options.

Coda: We're still doing regular Confluence reports, but they've morphed from a status reporting function (which is now fulfilled by recording stand-up) to a record of technical details to be communicated to other team members. We've kept them, because they've become valuable.

The middle distance of communication

During my last job search, I had a really great conversation with the SVP of R&D for one of my top companies. The company was opening a new office, and our conversation got onto the subject of agile project rooms, which I was proposing to set up for the team if I came on board.

Two of the best teams that I've ever been on were an agile project co-located in a single room, and a "virtual office" project with no two team members in the same city. With the co-located team, it's obvious that sitting around the same table makes it easy to just speak up to talk to someone, or to overhear a conversation between pairing partners. In the virtual office case, it seems counterintuitive that we had good team communications (and jelled well), but it was so obvious to everyone that we absolutely had to make an effort to pick up the phone regularly and talk to one another.

I've worked in plenty of cube farm environments, where team members would sometimes go for weeks (or between weekly staff meetings) without ever having a conversation about pressing technical issues. It's easy to get complacent about a coworker being just down the cube aisle, or over in the next row, and then never get around to walking over and talking to them. As flimsy as cube partitions are for blocking out noise and distractions (i.e. they don't), they do create a barrier to communication that people need to spend some energy to overcome, and without the reinforcing effect of being obviously remote, it's one that's easy to let drop.

Joel Spolsky is big on giving all of his developers private offices with doors that they can shut. Leaving aside the extra real estate costs involved in doing that, that seems like an even easier way to let intra-team communication fall into that "death zone" in the middle distance. Certainly, cubes that let in noise and interruptions are far worse, but while private offices allow each individual developer to have more "flow" time to work independently, that's very much optimizing for the wrong thing -- what matters is the team's output, and that's largely a function of effective communications.

Communicating with people right next to you is easy. Communicating with those far away is important enough that you won't skip it. It's the middle distance where the danger lies.

18 August, 2007

Manager-flavoured blogs that I read

I'll have a separate post at some point about technical blogs that I read, but since I'm a relative n00b at being a manager (I had a matrix-y job with a management component for a year, and 5+ years as a team lead, but this is my first stint with "the M word" in my title), I've been concentrating lately on trying to learn as much as I can about good management practices.

Some resources that I've found helpful:

Joel on Software -- Part technology, part management, all good reading. Joel and I part company on the subject of agile project rooms (he hates them; I see them as a best practice), but there's a lot of good advice there, especially about hiring and retention.

Rands in Repose -- His Management Cheat Sheet is a great introduction, and the rest of the blog is well-written and packed with neat insights.

Manager Tools -- Now we've left the technology world entirely in favour of the world of management. This podcast is a gold mine, and they've probably forgotten more about good management than I've learned yet. Some parts are less relevant in a specifically technical setting (in particular, the one-page resume they recommend absolutely won't cut it for an individual contributor position in software), and some can stand some adaptation in an agile environment like we have, but it's generally great stuff.

Marc Andressen is always a fun read. He goes into the economics and business needs of startups more than into line management.

Other recommendations for good resources for new managers would be gratefully appreciated!

The M Word

Back when I was a teenager working summer jobs at startup companies and corporate MIS departments (they called it "MIS" back in those days, when dinosaurs (OS/MVT; 8-bit micros) roamed the earth), I marvelled at tales of senior programmers (there were "system programmers" and "application programmers" and even "programmer/analysts", but we hadn't become "developers" or "engineers" yet) moving "up" to management later in their careers. What self-respecting geek, I wondered, would do such a thing? Who would ever give up the joy of writing code in order to push paper around?

Fast forward to now, and you guessed it -- I've been promoted to management. Much to the surprise of my teenage self (and if I could have ten minutes to talk to my teenage self, boy howdy would I ever have optimized my intervening years around a different set of assumptions), I really enjoy the management side of my job, almost as much as I love writing code. All of the crappy, annoying things that used to come down from management in previous jobs that made my life so miserable, I actually get to do right here... and that's exciting.

Dave Thomas recommends learning a new language every year. "Manager-speak" certainly qualifies as a language (and a "programming paradigm") all its own. And just like other languages, I've started to notice some neat hacks as I've been learning this one. Hence the point of this blog.

I also get to still write code, thankfully... which is mostly a mad scramble to keep up with my team technologically, since I only get about 50% of my time (in a good week) to spend on code rather than on management, and that number looks to only go down as I advance. Not only am I no longer the best developer on my project -- any project -- it's now very important that I not be, because I'm going to be away from the code at least half the time, and can be a significant roadblock if I'm the information silo. Thankfully, I was clueful enough to hire the best people I could find. We're doing some really cool things technologically, and it's really a fun project to work on.

Anyway, welcome to my shiny new blog. Isn't it shiny?