Skip to content

Latest commit

 

History

History
38 lines (22 loc) · 2.2 KB

ch2.md

File metadata and controls

38 lines (22 loc) · 2.2 KB

Metaphors for a Richer Understanding of Software Development

The Importance of Metaphors

A good metaphor is simple, relates well to other relevant metaphors, and explains much of the experimental evidence and other observed phenomena.

How well you understand the metaphors determines how well you understand software development.

How to Use Software Metaphors

A software metaphor is more like a searchlight than a road map. It doesn't tell you where to find the answer; it tells you how to look for it. A metaphor serves more as a heuristic than it does as an algorithm.

  • algorithm: give you the instructions directly.
  • heuristic: tells you how to discover the instructions for yourself, or at least where to look for them.

The most challenging part of programming is conceptualizing the problem, and many errors in programming are conceptual errors.

How to use?

  • Use them to give you insight into your programming problems and processes.
  • Use them to help you think about your programming activities and to help you imagine better ways of doing things

Common Software Metaphors

  • Software Penmanship: Writing Code
  • Software Farming: Growing a System
  • Software Oyster Farming: System Accretion

As a metaphor, the strength of the incremental metaphor is that it doesn't overpromise

  • Software Construction: Building Software

The building-construction metaphor could be extended in a variety of other directions, which is why the metaphor is so powerful.Many terms common in software development derive from the building metaphor: software architecture, scaffolding, construction, foundation classes, and tearing code apart. You'll probably hear many more.

  • Applying Software Techniques: The Intellectual Toolbox

A good craftsman knows the right tool for the job and knows how to use it correctly

Because metaphors are heuristic rather than algorithmic, they are not mutually exclusive. You can use both the accretion and the construction metaphors. You can use writing if you want to, and you can combine writing with driving, hunting for werewolves, or drowning in a tar pit with dinosaurs. Use whatever metaphor or combination of metaphors stimulates your own thinking or communicates well with others on your team.