9th Dec, 2008

6 comments

Passively Updated Microblogging For Business

Two companies (at least) are trying to apply the concept of Twitter to business intranets. This starts to sound more exciting when you wrap your head around the promise: complete elimination of status meetings.

Yammer and Present.ly are the companies people think of. But I wanted to share what we at CrowdVine (and a lot of other people in tech) are already doing, using a Campfire chat room.

The community around Campfire has a very developed sense of something that Yammer and Present.ly are just starting to realize — most business status can be generated passively.

Instead of intentionally updating my status to say that I’m filling out a work order, that I’m updating a piece of code, or emailing with our favorite client, we have our tools generate those updates automatically. Our status updates flow into the chat as we work, no special actions required.

I’ll quickly describe what this looks like technically, but what I really want is to explain how this works socially. CrowdVine keeps a Campfire chatroom open all day, not because we’re chatting all day, but just to have a place where we can reach each other. This takes the place of being in an office. We use a service, GitHub, to host all of our code. Any time we checkin code, GitHub sends a notice to Campfire (this is a service built in to GitHub). We also use a service, Highrise, to keep track of all of our client history. We have a script, available here, that updates Campfire every time we change a client record. For status updates that don’t fall into those categories, Campfire has a topic function which we update and which leaves an entry in the chat.

The first two types of updates (GitHub and Highrise) are passive updates. They update based on what we’re doing, but without any intentional action on our part. The last update is an active update. We have to make an intentional effort. That’s the way Twitter works.

There are some great buzzwords getting created by this niche. Ambient awareness, knowing what’s going on in your periphery. Asynchronous knowledge transfer, catching up with your coworkers when you have free time rather than going to a scheduled status update. Activity permanence, the ability to search an historical record of your updates (I just made this buzzword up).

People are rightfully jazzed about these concepts. You end up knowing more about the projects you’re working on, while saving time on meetings, and avoiding interruptions.

There’s one more benefit that I’m in love with, momentum. We started out with just the GitHub updates. We’d go through weeks where I was only talking to customers. Jay would be busy on code, filling the chat room with status updates, while I produced nothing visible. I felt like a major tool. Now when I’m talking to customers, I generate just as many status updates. I feel like we feed off each other and I push myself to finish my tasks so I can get the reward of a status update.

I’ve been learning about two concepts on the side, positive-reinforcement dog training and deliberate practice (focusing on the quality of your work, not just the quantity of your work). When I got into deliberate practice I realized that everything I was trying would go much faster if I could have instant positive reinforcement, like Pavlov ringing a bell at the instant that I completed a positive step.

In dog training, you use a clicker rather than a bell. With some treats you can transfer a small positive association with the sound of the click. Then with the clicker you can transfer that positive association to behavior. I’ve heard that some gymnasts are using clicker training to reinforce their movements. A movement completed successfully gets a click from the coach. The click reinforces the brain pathways that produced the movement and the gymnast’s brain is then more able and more likely to reproduce the movement.

The status updates are small rewards, like what you’d get from a clicker, and they reinforce two behaviors that are generally positive.

One, we’re rewarded for completion. A good idea, a chunk of code, a well written email are all worthless unless they are implemented, committed, or sent. Our automated updates tend to only happen when something is completed, a chunk of code is committed, an email is sent, or a client record is updated.

Two, we’re rewarded for breaking tasks into smaller steps. This is especially true of code. Rather than keep code checked out for weeks at a time, we are rewarded for breaking it into independent chunks that can be checked in. You might consider this gaming the system, and it is, but I’ve always been a believer in the Edsger Dijkstra quote, “The competent programmer is fully aware of the limited size of his own skull”. We’re rewarded for incremental work, and incremental work has the benefit of being easy enough to do well.

I heard a story about a programmer who gave up on his team’s campfire chat room because he found it distracting. His work, at the time, was to spend three months, by himself, building a data warehouse. From this story, I can extrapolate some helpful tips. Read the chat log at your leisure. Feel free to scan. Your feedback is not urgently required. It’s not supposed to be a burden.

The depth of ambient awareness, asynchronous knowledge transfer, and what-have-you, definitely depends on how much time people spend studying the updates. But the momentum benefit just depends on the idea that people will see the update, that there’s an audience that’s going to be impressed by your prodigiousness.

I have one more anecdote supporting the power of having an audience. I’ve worked for two companies that had continuous integration testing, a system that would run automated code tests after each code check-in and then send out a notification. The most common time a notification would be generated was when someone was in a rush to get out the door.

One company sent the notification by email. The other sent the notification to a campfire chatroom. For some reason, people at the email company seemed to check-in broken code all the time. People at the Campfire company almost never did. It’s hard to prove, but I believe the reason is that people at the second company were afraid that the notification would generate negative comments from the other programmers about what a lazy, inconsiderate programmer the person was. At the email company, it was as easy to ignore an email as it was to respond, and if you were going to respond, easier to respond to the culprit rather than the group. So there was less social pressure.

These notifications were a special kind of passively generated status. They said, “I’m screwing up right now.” You don’t want to generate that status.

The anecdote about broken tests is one reason I prefer my business microblogging tool hacked into Campfire. It’s nice to be able to talk about or respond to some of the updates. The other reason, is that it fits into a work flow rather than adding another place that I need to check.

If you’re a programmer, then Campfire is definitely ready for you. Almost every service you use has a Campfire hook. Check GitHub for a lot of tools including Backpack, Basecamp, Continuous Integration, Twitter.

21st Mar, 2008

10 comments

Take the Next Step, Paul

In college I had a wonderful Humanities professor who insisted on making us write short essays so we could practice writing succinctly. After each essay she would personally sit down with us and critique our logic (and our grammar!). Her feedback to me was almost always the same, “your argument is logical and supports your conclusion but you need to take the next logical step. What does your argument imply?”

I was never able to take the next step, even when pressured. And she never took it for me. It would be fair to say that I hated her during these meetings.

Today I ended up quoting her while reading Paul Graham’s “You Weren’t Meant to Have a Boss.

Paul’s thesis is that typical big business drains the life out of its employees because we weren’t meant to work in such large groups. It’s unnatural. To truly live, we need to be in groups small enough that we have room for creativity and freedom of action. That’s the way nature intended.

I agree. Jay and I talk all the time about how much more fun we’re having at CrowdVine than any of our other programming jobs. We’re free to build product. Programming isn’t just a job for us, it’s our hobby and passion. Being in a small group for the first time really is bliss. We’re not the only ones saying that either. Talk to people who’ve been much more successful than us like 37Signals or SmugMug. They’re not just successful, they’re happy.

So while I agree with everything Paul wrote, I found myself screaming, “take the next step, Paul!”

He’s a venture capitalist. He’s promoting programmers joining startups. Venture backed startups start as everything he describes–small companies that are great places to work and learn. But they only stay that way for a few years.

By definition the startups are either going to grow into an awful company with bosses or be acquired by an awful company with bosses (or fail). The startup founders are either going to turn into bosses (which Paul correctly points out isn’t very rewarding either) or they’re going to turn into employees with bosses.

The logical step that Paul couldn’t take is that he’s wrong for being in the venture business. The venture business depends on an ecosystem of bosses. Even if his founders feel like they’re getting a fair trade for a few unhappy years at a big company, they wouldn’t have the option of either growth or acquisition if other programmers couldn’t be pursuaded to work “unnaturally.”

The difference with companies like 37Signals and SmugMug (and CrowdVine) is that while they have the same natural working conditions, they’re structured so that those conditions don’t have to end. If Paul really wants to create good jobs he should turn YCombinator into a small business incubator.

Great discussion of this on Hacker News including responses from Paul. One commenter there made a big fuss that I was technically incorrect to call Paul a venture capitalist. True he’s a new un-labeled form of investor who’s using his own money and experience, and not using money from a venture fund. However I stand by my argument, which is based on the exit pressures which are very VC.

3rd Oct, 2007

1 comment

Now with OpenID


Jay added OpenID to CrowdVine two weeks ago. I’d wanted to hold off until the libraries and UI kinks got worked out. But when we noticed that Simon Willison, one of the FOWA conference chairs, is an OpenID fan we decided we better include it as a feature of the FOWA CrowdVine.

It was a pleasantly surprising experience.

  • Jay used the open_id_authentication plugin and Ben Curtis’ Rails, OpenID, and Acts as Authenticated tutorial. It was just a couple hours of work including research.
  • We stole the 37Signals UI patterns of toggled OpenID fields. The link is visible enough to people who want to use OpenID but not so confusing to people who’ve never heard of it. Thanks 37Signals (and also for Campfire, Basecamp, and Highrise which we also use).
  • 7% of our new users are using OpenID. That’s a lot higher than I expected (although our users are pretty tech-oriented).