Glossary

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.

boss

The person or entity that gives you tasks. In some cases this may be the public at large.

bottleneck

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

boxes and arrows

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

busines

A group of people organized for making money.

buy vs. build

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

communication languages

A language designed primarily for standardization rather than execution.

company

A group of people organized reflecting the modern workspace.

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.

garbage

Allocated memory that no longer has any useful meaning.

garbage collector

A system for recycling garbage.

entrepreneur

The initiator of projects.

Extreme Programming

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

heap allocated

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

hitting the wall

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

information hiding

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

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.

logging

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

low-hanging fruit

Big improvements that cost little.

master

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

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.

mere work

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

object-oriented programming

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

printlining

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.

programming notation

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

scroll blindness

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

speculative programming

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

strawman

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

tribe

A group of people you share cultural affinity and loyalty with.

unk-unk

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

vapor

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

wall-clock

Actual time as measured by a physical clock, such as one on a wall, as opposed to CPU time.

wite-paper

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.