Fusionbox Development Philosophy
Posted by ivy on Dec. 1, 2014, 5 p.m.
Our philosophy mandates that our process be:
Continuous: It is a fallacy to believe that you can build a perfect product. You can build a product that is well suited to a moment in time, but it will soon need to adapt to fill new needs or changing perspectives.
Incremental: Software development used to be characterized by “biting off more than you can chew”. A developer starts work on a thing, but then pressure starts developing from the client, the project manager's time frame, the designer needs help with something, the QA person wants tests written. Ultimately the developer is pulled in too many directions, architecture goes out the window, bugs start creeping in, scope starts sliding this way and that. Limiting work-in-progress means that each thing gets done and gets done well.
Evolutionary: Subscribing to an evolutionary approach to software development means letting the software grow naturally out of requirements. Thinking that we're making easier-to-use software, we all want to anticipate potential shortfalls and write in the fix for that deficit during development. But what we've learned about software development is that you cannot anticipate how the software will be used. Very often what you deemed as a high priority deficit, is not actually missed by the user at all. Focusing on the core features of the software and letting the customer guide future development is easier, less expensive, and results in a better product.
For successful development projects, you must first gain agreement on the problem in the following ways:
1. Gain agreement on the direction for a solution
2. Gain agreement that the solution solves the problem
3. Agree to overcome any potential negative ramifications
4. Agree to overcome any obstacles to implementation
Starting with these agreements, helps both the development team and the client come to consensus quickly. And, by following the above philosophy, we are able to control quality, expectations and scope creep.