You’re reading Signal v. Noise, a publication about the web by Basecamp since 1999. Happy !

David

About David

Creator of Ruby on Rails, partner at 37signals, best-selling author, public speaker, race-car driver, hobbyist photographer, and family man.

And then the music stopped

David
David wrote this on 44 comments

Remember way back to, oh, six months ago when champagne was popping and markets were roaring? Back when companies with no or few profits could premiere on the world stage to grand applause by merely converting a dollar into fifty cents? Those were the good times of boom, boom, pow.

It’s amazing how quickly everyone has gone from rocking out to that tune to loathing those same beats. But that’s exactly what’s happened to the pop stocks of just a few minutes ago. Here’s a brief recap of just the last six months for three former stars:

  • Zynga peaked at $15 in March, it’s now trading at $3. $8 billion has disappeared from its market cap.
  • Groupon hit $25 in February, now it’s at $8. That’s another $10 billion in market cap lost.

So between just these three, some $40 billion has been extracted from the market caps that pension funds and other last-sucker-in-line investors bought into. While, in the process, soured many on the idea of the public markets and enriched investment bankers hawking the toxic stocks. Hey, at least someone got out while the going was good.

Can someone kick the radio? We need a remix to get this party started again. Or we could, you know, change the channel and start valuing stocks based on fundamentals.

Nah, on second thought, fuck that. I hear Twitter is going for a $10B IPO. This Time It’s Different!

Note: Clarified the $40B extraction.

New Basecamp: Available 99.99% of the time since launch

David
David wrote this on 17 comments

We launched the new Basecamp on March 6. Since then we’ve deployed 891 new versions with all sorts of new features, bug fixes, and tweaks. Through all of that we’ve had just six incidents of either scheduled or unscheduled downtime for a total of 19 minutes offline.

Today, that means we’ve been available 99.99% of the time since launch. That’s worth celebrating! Our fantastic operations teams consisting of Anton, Eron, John, Matt, Will, and Taylor have worked tirelessly to eliminate interruptions and they deserve our applaud.

Since we count “scheduled” downtime the same as “unscheduled” (have you ever met a customer who cared about the difference?), that has meant making good progress on stuff like database migrations.

In the past, when we focused mainly on unscheduled downtime as a measure of success, we wouldn’t think too much of taking a 30-minute window to push a major new feature. Not so these days. Thanks to Percona’s pt-online-schema-change, we’re able to migrate the database much easier without any downtime or master-slave swappero.

So three cheers to the four 9’s! Our next target is five 9’s, but that only allows for 5 minutes of downtime in a whole year, so we have our work cut out for us.

You can follow along and see how we’re doing on basecamp.com/uptime.

Levels of aspiration

David
David wrote this on 31 comments

Debates over technology, technique, and process often go nowhere because the participants are arguing from different levels of aspiration.

You’re unlikely to convince someone they should switch to programming Ruby for its beauty, if they’re merely looking to make a living as a single consultant serving local businesses in Schaumburg, Illinois.

Questions such as “does this run on my existing web host?” or “will my clients want something their nephew web designer hasn’t even heard of?” matter far more. Their aspirations are local, finding something that (sorta) works, and getting paid.

It’s easy to snub your nose at that if you have grander aspirations, but there’s a lot of software to be written in this world, and we need all sizes and shapes to get it done.

The third largest landscaper in Schaumburg is probably operating from the same level of aspiration as our single consultant, so there’s a great fit.

You can think of these levels of aspiration in terms of both geographical and technical hierarchies. Here’s a take on what a hierarchy of technical aspirations could look like for programming:

You can imagine a similar hierarchy for the geographical angle with the levels being Local, City, Regional, National, Global.

The key to a fruitful debate is to first establish at what level the person you’re talking to resides, and then use arguments from the next level up. But if they’re entirely content with where they are, then it’s probably better to live and let live.

To help someone move up the hierarchies, they have to have an intrinsic desire to do so. Arguments like “but it works” or “it gets the job done” are tell-tale signs of someone happy at the lowest level of the technical hierarchy and your cue to just quietly back out of the debate.

From 4 to 32 people in eight years

David
David wrote this on 51 comments

It’s taken us eight years to assemble the fabulous ensemble at 37signals. Here’s how we’re split across specialities (counting Jason as a designer and me as a programmer):

“Other” currently constitutes Noah on data, Shaun on video, and Andrea as the office manager.

This year we’re probably going to hire at least two more people for support (we’d love to offer true 24/7 coverage) and one person to help with conversion. No plans to hire any more people in design, programming, or operations at the moment.

A good day's work

David
David wrote this on 17 comments

It’s easy to convince yourself that working until your eyes bleed and your fingers cramp is simply what must be done when starting something new.

You can dangle yourself the carrot that it’s just until you get out of the first hole: “Once we’re live, it’ll all calm down and I’ll be able to relax”.

But that’s rarely how it goes. The reality is that you’re never going to be done. There’s always more work. New initiatives, new customers, new competition, new technology, new ideas.

Unless you learn to set healthy boundaries early on, human biology will set in and carve those habits into your psyche. Double so if you enjoy success. You put in all this pain, it worked, and now you can enjoy the pleasure; it’s too tempting for your brain to pass that up as anything but causality.

One pattern to help yourself fight the mad dash for the mirage of being done is to think of a good day’s work. Look at the progress of the day towards the end and ask yourself: “Have I done a good day’s work?”

Answering that question is liberating. Often, if the answer is an easy “yes,” you can leave your desk feeling like you accomplished something important, if not entirely “done”. And should the answer be no, you can treat it as an off-day and explore the 5 why’s.

It feels good to be productive. If yesterday was a good day’s work, chances are you’ll keep the roll. And if you can keep the roll, everything else will probably take care of itself.

You only get one chance to be a beginner

David
David wrote this on 26 comments

When you’re new to something, all the pain is out in the open. You stub your toes until they’re black and blue on things the veterans have all learned to avoid. This is both a curse and a gift.

A curse because it’s hard to make progress when you’re constantly getting snagged. Frustration is high and defeat feels scarily near. You might well give up entirely before you know the dance of the natives.

But a gift, too, because you have the clarity to make things drastically better. You won’t miss the non-sense the veterans have long since accepted as the norm. Once you’ve acclimated to the temperature of the pot, you’ll get boiled alongside all the other frogs. But until then, you’re in a magical position to make great strides. To propose radical solutions, deliberately ignorant ideas that just might be brilliant.

This is the time to do the impossible, because you don’t know enough to know what can’t be done yet.

All the oxygen trapped in a bubble

David
David wrote this on 54 comments

There are many good reasons to be concerned about whether the internet industry is in another bubble. Once shaky, unproven businesses hit the NASDAQ, the chance that granny is going to lose her pension fund goes up big time. That’s the direct economic consequence that you’ve probably heard already.

What hasn’t been discussed as much are some of the secondary effects that a bubble has on the industry. Like how it gets harder to hire good people as a consequence. Sure, you may have heard of The War for Talent, but it’s much deeper than that. This is not simply about the latest tech darling not being able to find programmers in the Valley.

When bubbles inflate as fast as the most recent one, support infrastructure can’t cope. There just aren’t enough programmers, designers, operations people, and other warm bodies to man all the hot air balloons. So you have a predictable effect: Rapidly increasing demand for an only steadily increasing supply. Thus, inflation.

All this new demand is being fueled by the endless flows of cheap cash being pumped into the Valley (and everywhere else it can go). So the circle goes like this:

And every time we do a round, more talent gets trapped in the bubble, chasing things that can be flipped for the most money. Now in theory this is all good and well. Resources are allocated to the pursuits with the most economic value. So if Instapintora is worth $2 billion, of course they deserve to be able to hire 1,000 web builders, right?

That’s the same argument you’ll find for bridges to nowhere and other pursuits void of inherent economic and public value. Sure, people are being employeed, money is changing hands, but come Monday morning, the hangover is that we spent a bundle to build a lot of shit that’s not going anywhere.

As a result, we missed out on doing other worthwhile things. All those smart and talented heads, and all those benjamins, didn’t progress the economic base in a way we’re going to care about tomorrow. And that’s a damn shame.

Keynote by David from RailsConf 2012 on progress, curiosity, fear, and the danger of easy-bake ovens.

Making shit work is everyone's job

David
David wrote this on 71 comments

“Oh, that’s not my job,” is the sound of doom. Maybe not imminent doom, but doom indeed. It’s the magic inflection point when a company becomes too big (even if only psychologically) for any single employee to give a rat’s ass about job numero uno: Making shit work.

No profession is immune. You can have designers who oh-thats-not-my-job to get the JavaScript they wrote to work, programmers who cry for operations to make their slow code run on time, operations people who refuse to answer customer complaints from their network outage, and on and on. Once the mentality cements, everything is eventually someone else’s job, and they’re being a toad for inconveniencing you with it.

And besides, it’s easy to put it on somebody else, right? Everybody else’s job is easy!

Departmental hedges grow fast and tall if not trimmed with vigor. It’s the natural path unless you take steps to fight it.

That’s why, at 37signals, we all chip in when lots of customers have questions after a new product launch and customer support is overwhelmed. It’s why programmers will wake up in the middle of the night if a sql query tipped over and needs an urgent rewrite until faster servers can arrive.

Don’t let your company culture become one where certain people are too good to do the jobs that need doing. Making shit work is everyone’s job.