WhoBuilt

Things That Don't Scale, The Software Edition

Feb 16, 2022· 26 min· 194K views·Watch on YouTube

Speakers

Michael Seibel, with Y Combinator, and Dalton Caldwell discuss software startups’ practical ways to make products work before building scalable systems.

Find the 90/10 solution

Seibel and Caldwell frame the episode around Paul Buchheit’s question: how can you get 90% of the benefit with 10% of the work? Buchheit began Gmail by reading his own email through an existing Google Groups interface, then added features as he needed them. When a coworker wanted to use it with his own email, Buchheit built that next step.

Scale one problem at a time

Caldwell recalls seeing Facebook’s early servers in a Santa Clara data center, with separate servers and databases for each university. The setup relied on copied code and school-specific instances, which avoided scaling one database across every school at once. Seibel describes a similar shortcut at Justin.tv: making popular pages static during traffic spikes so the video could keep playing.

Make imperfect features work

Caldwell contrasts Friendster’s expensive calculation of users’ extended networks with Myspace’s simpler labels for friends and extended connections. Seibel describes Imeem using video files and a Flash video player to play audio, and Twitch using a brief delay to distribute celebrity streams across enough video servers. These workarounds delivered useful features before the team built more complete systems.

Use users to solve urgent constraints

Twitch reduced video delivery costs through free peering with internet providers, and blocked access for viewers whose provider would not peer, asking them to contact the ISP. The team also built a community translation site where volunteers translated product strings. Seibel says multiple translations could be compared, and the approach eventually translated the product without paying a translation company.

Launch, learn, then scale

Seibel shares a secondhand account that Google’s web indexing batch process failed as the web grew, leaving search results stale for months. He says this pressure led to MapReduce, which broke crawling and indexing into parallel tasks. His closing advice is to launch, observe what breaks, and fix those problems; teams earn the opportunity to build scalable systems by first making something people want.

Takeaways

  • Ask what delivers most of the benefit for a fraction of the effort.
  • Add product features in response to what real users need next.
  • Separate workloads or simplify features when one system cannot handle demand.
  • Use community contributions when a paid solution is out of reach.
  • Launch early, then prioritize fixes based on what actually breaks.

Mentioned in this talk

Search inside this talk

What was claimed 12

  • built
    creator, original lead developer
    “he's known as the inventor of Gmail”
    0:03inPaul BuchheitYouTube
    Verified11 sources· Talk, Web· archived
  • feature
    Paul Buchheit: 90/10 solution: get 90% of the benefit for 10% of the work
    “How can you get 90% of the benefit for 10% of the work?”
    YouTube
    Unverified1 source· Talk
  • feature
    Gmail: Early access was limited through invites because server capacity was constrained.
    “They didn’t have enough server space, so they had to build an invite system.”
    YouTube
    Unverified1 source· Talk
  • uses
    Meta uses MySQL
    Separate database server for each school in its early architecture
    “They had a separate MySQL server for every school.”
    YouTube
    Unverified1 source· Talk
  • feature
    Meta: Early code and database instances were separated by school.
    “Completely separate database instances, and then have them talk to each other.”
    YouTube
    Unverified1 source· Talk
  • feature
    Twitch: Could make a page static during traffic spikes so it could be cached while video and chat continued separately.
    “We had a button that could make any page on Justin.tv static.”
    YouTube
    Unverified1 source· Talk
  • feature
    Twitch: The website communicated audience size to the video system so it could pre-populate enough video servers before showing the stream.
    “All the website has to do is communicate that information to the video system.”
    YouTube
    Unverified1 source· Talk
  • uses
    Played music files encoded as FLV video with a Flash video player.
    “Every music file played on Imeem was actually a video file, an FLV back in the day.”
    YouTube
    Unverified1 source· Talk
Show all 12 facts

Related talks