On Algorithm Development and Humble Programmers

Have you wondered how to design an algorithm? Or analyze it? Do you know that the “Principles of Algorithm Development” was a Ph.D thesis of Jon Bentley, written as far back as 1976? I did not, either.

I found this, thanks to one of those DDJ Conversations. Jon Bentley’s Programming Pearls is a classic and something that needs to be on the reference shelf of every developer. Here are a snippets of the conversation.

Principles of Algorithmic Design

The principles include generalizing, using high-level and abstract description of algorithms, examining degenerate cases, and employing standard speed-up tricks.

The difference between design and analysis of algorithms

The goal of algorithm design is to develop a good algorithm; the goal of algorithm analysis is to understand how good an algorithm is.

Programming is subtle

Programming is subtle, and we must learn from Edsger Dijkstra to be “humble programmers.” We have lots of tools to use: Precise specifications, formal methods, and extensive tests among them. One of the best tools is the eyes of really smart friends.

I love the conclusion of this interview. It is something to remember.

Dig deep enough, and you’ll find interesting algorithmic problems at the heart of most real systems.