Pleasure in the job puts perfection in the work.

Aristotle

The development of software is divided into many stages; however, this does not mean that it is a linear process or that the stages are completely autonomous—they blend together during an iteration and during a project. It is, though, for our purposes often easier to discuss the stages of development by fabricating a level of autonomy, keeping in mind that the borders between are neither solid nor final.

User Experience Design

The mock-up is the first step in writing software. This is a proposal for user interface design that contains very little graphic design, but instead proposes the user workflow correlation with the human interaction in order to demonstrate to the customer what the system will feel like.

The mock-up is a way of displaying a clear vision of the project, as well as discovering usability problems before any code needs to be reversed. The customer is always involved with this step, and is shown the proposed designs in order to create a dialogue between the designer’s realization and the customer’s intention. This process sets the groundwork for the most important piece of information regarding software: how people will use it. From this point, the user experience will fully direct the mock-up, and a diagram of some sort is produced. Ideally, we will use the actual wire frames that will be employed later in development. Other options include images or flash, depending on who creates them and what technologies are available.

Skinning up an application is like adding a design to the top of a frosted cake; although the inside is complete, and there is a coat on the outside, it lacks a certain impressive, finished quality without a picture of a racecar on top. This phase includes graphic design and information architecture. The software that was written provides a canvas to which graphics are now strategically and creatively added.

Implementation

The implementation of the product is where most of the code is written. The unit of implementation is a story card. First, a developer and a customer work together to write an acceptance test which starts the communication channel for the story. After the acceptance test, the developer will test drive the behavior of the story. While writing the behavior, the developer stays in contact with the customer and makes changes to the specified as agreed upon. This continues until the acceptance test is passing and the customer is satisfied with the feature and signs off on it.