Programming is the process in which the architect, working with the stakeholders, identifies the qualities and quantities of functions and related spatial requirements. General information such as square footage and height requirements for each room (function) type is typical. Another important aspect of programming involves identifying the relationships between functions.
The most important aspects of the stakeholders' needs are identified and defined in this process, yet somehow many projects appear to have essentially omitted this step in the hurry to "complete" the job. When programming is not treated as a prerequisite before the design phase begins, it unfortunately becomes very obvious immediately after the completion of construction.