Glossary

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

    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.

    logging

    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.

    vapour

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

    boss

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

    tribe

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

    low-hanging fruit

    Big improvements that cost little.

    Entrepreneur

    The initiator of projects.

    business

    A group of people organized for making money.

    company

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

    scroll blindness

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

    wall-clock

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

    bottleneck

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

    master

    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.

    garbage

    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

    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.

    strawman

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

    white-paper