Good Software Starts With Good Design

Good Software Starts With Good Design

How would you design Google Spreadsheets?

Let’s say you're creating Google Spreadsheets from scratch: computer will create the code magically, you just need to design the software.

Where would you start?

The easy way is to copy Excel. The difficult way is to innovate and create something else that fulfills the same need, in a better way.

The reasonable way is to build a better mousetrap — make a spreadsheet that looks familiar but implement something to differentiate it, like the sharing and collaboration.

You start with the core elements— rows, columns, and cells — your bread and butter.

Everything else is a design decision and is under question: functions, sharing, toolbar, buttons, colors…

Design mode means nothing but questions

  • How to make it easy for a first-time user?
  • How to get out of the way so a regular user can get things done efficiently?
  • How to give power to an advanced user?
  • How to optimize the experience for each one without hurting the other?

  • What do users want to achieve? What features to implement so they can achieve it?
  • How do I organize features on the main menu? How to separate and group them? Based on what?

  • Where to put Spelling?
  • Should I put an option to delete a spreadsheet in the main menu?
  • Should you copy by default both the formatting and the value, or just the value?
  • What should be the default width and height of a cell?

  • What if someone wants to print a huge spreadsheet?
  • How to name features and elements in the interface (like formula bar or named ranges)?
  • What font is easy on the eye when you work a lot?

  • What about colors? Should I limit the color palette and why?

  • When does the user need to name the file (if at all)?
  • What part of the interface needs to be emphasized and deemphasized?

  • Is the default scrollbar good enough?

  • What functions do I need to implement, besides SUM and AVERAGE?
  • When to display error dialogue? What to write in it?

  • Does my user need data validation, conditional formatting, concatenation…?
  • What spreadsheet software is my user familiar with? Why would they switch?

  • If we put auto-save, how to handle it when a user wants to discard all the changes?
  • What to put in the context menu?

  • What features need shortcuts?
  • What to put in the toolbar? How to group and order it?

  • What should be the default collaboration options? How fine should the control be?

  • What to put in Help?

  • How does the app integrate with other apps?
  • What if someone wants some esoteric feature that no one else needs?
  • How to handle empty slate during user onboarding?

  • How to represent text wrapping as an icon?

  • How should the complex process of creating a chart look like?
  • Should a spreadsheet have infinite rows?
  • How to delight the user?

This isn’t even a 1% of what goes into software design

Every good software needs to start with a good design. And the design is never done.

We spent a year and a half designing ActiveCollab and there is still room for improvement. When we say improvement, we mean tiny details that maybe an average user doesn’t notice, but we do. But at least we have a strong foundation on which to improve.

Want to know how we redesigned ActiveCollab from the ground up, guided by UX principles? Here’s how: Redesigning ActiveCollab