Skip to content
Category

Software engineering folklore

page 1
spaghetti code
pejorative phrase for source code that has a complex and tangled control structure reminiscent of spaghetti
don't repeat yourself
software development principle with the goal of reducing repetitive software patterns, and replacing them with abstractions that use data normalization to avoid redundancy
code smell
symptom in the source code of a program that possibly indicates a deeper problem
Benevolent Dictator for Life
title given to a small number of open-source software development leaders
Jargon File
collection of definitions from computer subcultures
magic number
sequence of bytes used to identify or indicate the format of a file
heisenbug
In computer programming jargon, a heisenbug is a software bug that seems to disappear or alter its behavior when one attempts to study it. The term is a pun on the name of Werner Heisenberg, the physicist who first introduced the uncertainty principle, and it is a reference to the observer effect, which states that the act of observing a system inevitably alters its state. In electronics, the traditional term is probe effect, where attaching a test probe to a device changes its behavior. The term has been criticized because it confuses Heisenberg's uncertainty principle (to which it owes the n
reinventing the wheel
unnecessarily duplicating a design when a satisfactory solution already exists
dependency hell
frustration of some software users who have installed software packages which have dependencies on specific versions of other software packages
software rot
deterioration of software quality over time due to accumulated bugs or changes in environment or dependencies
Write once, run anywhere
Slogan created by Sun Microsystems to advertise benefits of Java Platform
boilerplate code
sections of code that have to be included in many places with little or no alteration
Turing tarpit
programming language or computer interface that allows for flexibility in function but is difficult to learn and use because it offers little or no support for common tasks
rule of three
a rule of thumb in C++ (prior to C++11) stating that if a class defines one (or more) of destructor, copy constructor, or copy assignment operator, then it should probably explicitly define all three
cargo cult programming
style of computer programming characterized by the ritual inclusion of code or program structures that serve no real purpose
Zero one infinity rule
software design rule
Experimental software engineering
methodology of software-engineering research
Ousterhout's dichotomy
division of programming languages into system programming and scripting
Greenspun's tenth rule
Computing aphorism