How To Jeremy

Some thoughts on learning how to Jeremy

Design Consistency

Someone said, possibly Stalin, that “Quantity has a quality all its own.”

I think the same thing could be said for consistency in design. Being consistent in design has its own quality or benefits. I think what we perceive as a good design is one that is consistent. This is what we consider elegant.

The original iPod is a great example of this. If you used other mp3 players of the era they were a mess to use. They had a ton of buttons, terrible displays. They hadn't grasped what the interface should be.

Then Apple came along and did what it used to do best. Which is to truly understand and reduce the problem into a consistent interface.

What did the iPod have? A large display, a scroll wheel, and a button. That was pretty much it.

The design for the majority of the interactions, not the %1 percent. Where most other hardware manufactures will just add a button for some function that you barely use. Everything looked like an afterthought which it was.

UI

There is power in consistency.

From a UI perspective, once a user understands the limited but consistent UI they can work comfortably throughout the UI or across something like an OS then across apps.

New features and updates don't seem out of place. They just appear as a natural extension.

A design goal for UI is to lower the cognitive load for any interactions. Every different part of the UI shouldn't require learning something new.

A consistent design allows the user to extrapolate or anticipate how things will work. You want to delete a file in Mac OS, you drag it to the trash. You want to delete an app, you drag it to the trash.

On Windows you can drag a file to the trash, but what do you do for an app? Search and try to find the uninstaller and go through its propriety process. It is not consistent.

Software Systems

The same thing could be said for software and systems. I think the biggest challenge to building complex systems is ourselves.

The human brain can only grok and retain so much.

As a system grows it tends to keep growing in complexity, most of the time because there was no starting design to build off. Someone just started and worked on the problem. Then something new was needed and that was solved again with no regard to the other pieces.

Pretty soon you end up with a system that is difficult to understand or to reason about. Just like adding an extra button everything is an afterthought.

Our backend is a SQL server feed through SASS that is backed by some off-brand Hadoop cluster and a million stored procedures using Microsoft Cubes (whatever that is).

And the only question that comes to mind, is why?

This is where consistency in your design can stop this madness.

A system that has a consistent design and a consistent method of operating allows everyone to quickly understand it and more importantly start to be productive with it.

It also provides a framework for new features. If you nailed the design from the start then new features or new interactions have a natural place to go. There is no guessing or shoehorning in anything. Good design anticipates future needs.

It also means you have found a true match for the problem. If you don't have a consistent methodology then most likely you haven't correctly solved the problem.

Achieving design consistency is hard. It is much easier to pick a bunch of tools that do a portion and slap them together. It is easier to add another button. But this to me is the highest leverage thing you can do.

This pays the most dividends. Having a consistent design means having a system that is easy to understand and easy to extend. It is like pre pulling the weeds because there was no place for them to grow to begin with.

There is power in consistency.

From a UI perspective, once a user understands the limited but consistent UI they can work comfortably throughout the UI or across something like an OS then across apps.

New features and updates don't seem out of place. They just appear as a natural extension.

A design goal for UI is to lower the cognitive load for any interactions. Every different part of the UI shouldn't require learning something new.

A consistent design allows the user to extrapolate or anticipate how things will work. You want to delete a file in Mac OS, you drag it to the trash. You want to delete an app, you drag it to the trash.

On Windows you can drag a file to the trash, but what do you do for an app? Search and try to find the uninstaller and go through its propriety process. It is not consistent.

The same thing could be said for software and systems. I think the biggest challenge to building complex systems is ourselves.

The human brain can only grok and retain so much.

As a system grows it tends to keep growing in complexity, most of the time because there was no starting design to build off. Someone just started and worked on the problem. Then something new was needed and that was solved again with no regard to the other pieces.

Pretty soon you end up with a system that is difficult to understand or to reason about. Just like adding an extra button everything is an afterthought.

Our backend is a SQL server feed through SASS that is backed by some off-brand Hadoop cluster and a million stored procedures using Microsoft Cubes (whatever that is).

And the only question that comes to mind, is why?

This is where consistency in your design can stop this madness.

A system that has a consistent design and a consistent method of operating allows everyone to quickly understand it and more importantly start to be productive with it.

It also provides a framework for new features. If you nailed the design from the start then new features or new interactions have a natural place to go. There is no guessing or shoehorning in anything. Good design anticipates future needs.

It also means you have found a true match for the problem. If you don't have a consistent methodology then most likely you haven't correctly solved the problem.

Achieving design consistency is hard. It is much easier to pick a bunch of tools that do a portion and slap them together. It is easier to add another button. But this to me is the highest leverage thing you can do.

This pays the most dividends. Having a consistent design means having a system that is easy to understand and easy to extend. It is like pre pulling the weeds because there was no place for them to grow to begin with.