The goal of a software development process is production of software that works, is on time and within budget, and can be maintained and reused. We utilize the iterative process as seen in the diagram to the left. Although there is no one-size-fits-all process, lightweight or otherwise, our approach does emphasize certain values: Speed, Simplicity, Feedback and Iteration. As a small firm we wear many hats and rely on each other's expertise to quickly provide solutions by utilizing the iteration model.SimplicityA process that is too complex will fail. Simplicity is a value to be intensely defended, both in the software and the process. We don't add activities, documents, or artifacts to our processes unless the need for them is critical. We regularly sweep through our processes and remove complexity. Anything that cannot be completely justified is eliminated. A process description should always look too small.FeedbackThe only way to truly control a software project is to continuously measure its progress, compare that progress against the plan, and then adjust the development parameters to correct any deviation from the plan. This is the foundation of our development process.IterationIn our approach, the software development process moves forward in increments called iterations. The goal of each iteration is to develop some working software that can be demonstrated to all the stakeholders, and that the stakeholders will find meaningful. The length of iteration depends upon the kind of project we are working on. However, short iterations are to be desired over longer ones. The shorter the iteration, the less time passes before the team gets feedback. Building software is more than writing code. A software development process must focus on all activities necessary to deliver quality to our customers. A complete process does not have to be heavy. For out clients, we have shown how you can have a small, yet complete, process by focusing on the essential activities and outputs for your project.Interactive prototypes and iterative testing allow us to improve the design quickly before we ever get to the coding stage. Targeting only the confusing parts of an interface for redesign reduces the number of things we need to rebuild and helps make both design and development faster. Lean design is about improving the user experience iteratively!