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.