REWRITE!

Speaker: David H. Hansson (@dhh)

Transcedent Software

  • Legacy software has infinite value
  • Code is infinitely maleable, and can continue to be updated
  • Myth!

37 Signals

  • 2004 – 2011: Growth was great
  • 2011: Things started creaking. BaseCamp usage started declining, started developing tons more products than they could support. They wanted to make other things because they didn’t like working on BaseCamp anymore.

Imagine software as a physical object. If you start with a table, can you “refactor” it into a chair? Probably not. Nor can you with software.

Most companies only look at the value of change for new users, not the cost of the change for existing users.

Value of Change: 8
Cost of Change: 10
Net Gain: -2

For BaseCamp, they were keeping the libraries up-to-date, they were updating the interface, they were refactoring the code, they had good test coverage–overall they had very little technical debt.

The problem was customers no longer wanted the same software.

Software to most people just gets shit done. It’s not their teddy bear. They don’t love your software–except for a small vocal minority. Most users think of your software as a tool like a fax machine.

Compete With Your Best Ideas

  • You have to make a change when things are doing good
  • Potential customers rarely tell you what you need to do next
  • Getting all your feedback from existing customers results in biased feedback
  • It’s easier to justify improving what exists than to start fresh
    • Seems less risky
    • This is how they started rewriting BaseCamp

Rewriting

  • You aren’t starting from scratch, you’re starting from a vision of what you want to do and opinions on how to do it right
  • Don’t start from making a list of features you want and don’t want to include. This makes you design for a local maximum
  • Instead, reinvent the software from scratch to aim for a new global maximum

Sunsetting

  • Nobody has positive thoughts about any company that sunsets software or removes features for software they are using
  • Problem with sunsetting and moving customers to a new version is that you are forcing your customers back into a new buying decision, back into the market
    • This is the worst strategic decision ever–asking all your customers “do you want to buy us again?”
  • Solution is to honor your legacy

BaseCamp Experience

  • After lauching revamped BaseCamp, new sign-ups doubled, so it was a smart decision to rewrite
  • But they continued to support their old customers with the old application
  • When they want to “sunset” a product, they turn off new signups, but continue to support the old product (Ta-Da List)
    • People stop using the product at the same rate they did when they allowed new signups. There wasn’t a mass exodus.
  • Just did their 2nd re-write of BaseCamp. Rails 5 is basically BaseCamp 3 extracted. Going to launch next month.

In order to be sustainable, you need to reinvent yourself to acquire new customers. Yet you need to continue to serve your existing customers. That’s what creates long-term companies.

Don’t worry about old bugs; there will always be old bugs. If you only listen to existing customers, you’ll keep being stuck with your old software.

 

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>