This is a glossary of terms as used in this essay. These do not necessarily have a standardized meaning to other people. Eric S. Raymond has compiled a massive and informative glossary[HackerDict] that rather surprisingly can pleasurably be read cover-to-cover once you can appreciate a fraction of it.


Slang for unknown-unknown. Problems that cannot presently even be conceptualized that will steal time away from the project and wreck the schedule.


The insertion of statements into a program on a strictly temporary basis that output information about the execution of the program for the purpose of debugging.


The practice of writing a program so that it can produce a configurable output log describing its execution.

divide and conquer

A technique of top-down design and, importantly, of debugging that is the subdivision of a problem or a mystery into progressively smaller problems or mysteries.


Illusionary and often deceptive promises of software that is not yet for sale and, as often as not, will never materialize into anything solid.


The person who sets your tasks. In some cases, the user is the boss.


The people with whom you share loyalty to a common goal.

low-hanging fruit

Big improvements that cost little.


The initiator of projects.


A group of people organized for making money.


A group of people organized for making money.

scroll blindness

The effect of being unable to find information you need because it is buried in too much other, less interesting information.


Actually time as measured by a clock on a wall, as opposed to CPU time.


The most important limitation in the performance of a system. A constriction that limits performance.


A unique piece of information from which all cached copies are derived that serves as the official definition of that data.

heap allocated

Memory can be said to be heap allocated whenever the mechanism for freeing it is complicated.


Memory which is being taken up by objects your application no longer needs.

garbage collector

A system for recycling garbage.

memory leak

The unwanted collection of references to objects that prevents garbage collection (or a bug in the garbage collector or memory management system!) that causes the program to gradually increase its memory demands over time.

Extreme Programming

A style of programming emphasizing communication with the customer and automated testing.

hitting the wall

To run out of a specific resource causing performance to degrade sharply rather than gradually.

speculative programming

Producing a feature before it is really known if that feature will be useful.

information hiding

A design principle that seeks to keep things independent and decoupled by using interfaces that expose as little information as possible.

object-oriented programming

An programming style emphasizing the the management of state inside objects.

communication languages

A language designed primarily for standardization rather than execution.

boxes and arrows

A loose, informal style of making diagrams consisting of boxes and arrows drawn between those boxes to show the relationships. This contrast with formal diagram methodologies, such as UML.

lingua franca

A language so popular as to be a de facto standard for its field, as French was for international diplomacy at one time.

buy vs. build

An adjective describing a choice between spending money for software or writing it your self.

mere work

Work that requires little creativity and entails little risk. Mere work can be estimated easily.

programming notation

A synonym for programming language that emphasizes the mathematical nature of programming language and their relative simplicity compared to natural languages.


A document meant to be the starting point of a technical discussion. A strawman may lead to a stickman, tinman, woodman, ironman, etc.


An informative document that is often meant to explain or sell a product or idea to an audience different than the programmers of that product or idea.

results matching ""

    No results matching ""