Good Design and Programming Languages - caffeine-suite/caffeine-script GitHub Wiki

Related:

Design Matters

We have an unparalleled opportunity. Apple has finally convinced the world that end-user apps and devices need to be obsessively designed. However, the tools we use to write those apps are anything but well designed, even Apple's. By applying good design to programming we stand to reap massive rewards.

Design thinking is ultimately about productivity. It's about designing a tool to get the job done in the most efficient way possible, over all possible metrics. That includes mental effort and physical effort, but it also includes emotional effort and other aesthetics.

I believe programming languages and tools should be beautifully designed. I believe the most productive tools are also the most beautiful ones. One concrete benefit is flow. Flow is the most productive state possible for programming, but any little thing can trip you out of flow. That is why beautiful design is essential to entering and maintaining the flow state and, ultimately, programmer productivity.

I call this Designer Programming.

Aspects of Good Design

All well-designed things have the following properties:

  • focused
  • beautiful
  • pleasurable to use
  • discoverable
  • minimal

I'm not sure I can name one programming tool I use regularly that has more than one of those traits. I look forward to the day when there are design awards for programing languages, editors, IDEs, compilers, debuggers, and everything else we use in the production of programmed products.

More on my design philosophy: Amazingly Great Design @ EssenceAndArtifact.com

Ratcheting Design

Design is often a ratcheting process. Each little improvement appears trivial or even frivolous. However, after dozens or hundreds of such improvements the whole experience can be radically transformed and improved. Only then can we reach new heights previously unimaginable.

There is a Japanese saying which captures the idea nicely:

Chiri mo, tsumoreba, yama to naru.

Even dust, if piled up, can become a mountain.