Programming is the activity of determining the "program", or set of needs that a building needs to fulfill.
In order for a design to succeed, in must be rooted in a thorough understanding of the user's needs, the constraints and other goals of the project.
While many requirements in the program are often stipulated at the outset by the client, many needs and constraints may not be immediately obvious. Without a thorough up-front exploration of the program, a significant need or constraint may not be discovered until later in the project, when it will be much more expensive and time-consuming to address.
A less obvious, but equally important failure is not recognizing more subtle needs - things that may be ignored by everyone throughout the project, and may never be realized. It is attention to these more subtle needs throughout the design process that makes the difference between an okay building and a great building.
Any project should begin with a thorough examination of these needs, goals and constraints, to form as complete as possible an understanding of these issues.
This includes an examination of who the users of the building will be, what use they will make of the building, what rooms/spaces they need, what mood the building should create, and any other goals of the project.
It also includes an examination of constraints, such as
cost, zoning and building code restrictions, and locally available
materials.
During the programming phase, it is normal to identify what rooms/spaces are needed. For each space, consider at least the following requirements:
- Who will use the space
- Use(s) of the space; what activities will take place there
- How private or public should the space be
- Which other spaces should be adjacent or most accessible from that space
- What type of mood should the space create
- How large should the space be
It is also important to gain a thorough understanding of the site at this stage; to get a deep understanding of the character or "genre" of the site.