In creative endeavours, the techniques of brainstorming are used.

In software development (which is a creative endeavour), brainstorming can be facilitated by:

  • Scapple
  • B-Rhymes.com and Rhymezone.com
  • diagrams
  • markdown / org-mode
  • do something

Scapple

Scapple is a product that appears to be mind-mapping software, at first glance. The UX of Scapple offers significantly less friction than that of most mind-mappers. Friction inhibits creativity.

Rhyming Dictionaries

B-Rhymes and Rhymezone are websites that provide rhyming dictionaries for English words. At first glance, one would conclude that rhymes have no place in software development, but,

  • I argue that “finding the right word” is vital to expressing ideas, even software ideas.
  • Rhyming dictionaries can be use as seeds for brainstorming1, instead of just being used to find rhyming words. Many songwriting workshops discuss brainstorming techniques, but tend to overlook the usefulness of rhyming dictionaries in this regard.

Diagrams

Some of the greatest advances in software development have come about due to containment.

For example:

  • Structured Programming
  • Global Variables
  • OOP
  • Functional Programming
  • UNIX filesystem
  • Statecharts
  • HTML

Diagrams can show containment more readily than text. For example, A contains B in the diagram below.

A
A
B
B

Diagrams can show non-containment more readily than text. For example, B is not fully contained in A.

A
A
B
B

Diagrams can show connections between components.

A
A
B
B
./i/1
./i/1
./o/1
./o/1
./c/2/i/1
./c/2/i/1
./c/2/o/1
./c/2/o/1

Diagrams can show spaghetti connections. Below, the connections cross the boundaries of box A

A
A
B
B
./i/1
./i/1
./o/1
./o/1
./c/2/i/1
./c/2/i/1
./c/2/o/1
./c/2/o/1

Markdown Elision

Emacs’ markdown editor can elide sections of text based on the number of octothorpes (“#”) at the front of the lines.

It is possible to use this hierarchical elision as a way to show/hide layers of software.

[Emacs’ markdown editor is implemented using emacs’ org-mode.]

Do Something

Just working on the details of a solution tends to bring up

  • new ideas
  • new perspectives on the problem.

Designers need to feel free to change their minds.

Designers should use technologies that they are “not wedded to” and should feel that they can throw all of the written code away at any time, replacing it with new code.

I call this FDD - Failure Driven Design.
Most languages encourage designers to keep the code they’ve already written.

This is the antithesis of FDD and brainstorming.

Thinking is hard work, code is cheap.

We need to keep the thinking and throw away the code.

[I discuss how to do this in the FDD essay.]

[Note that, Implementors might choose to keep their code. Designers should not be compelled to keep their code. At present, our GPLs are more suited for Implementors than for Designers.]

See Also

Scapple
B-rhymes
Rhymezone
Failure Driven Design
Blog
References

~/Desktop/blogs 20210718/diagrams-connections.svg

  1. I thank Pat Pattison for pointing this technique out to me.