“If houses were built the way software is built, the first woodpecker would bring down civilization.”
Gerald P. Weinberg
The above quote while funny also has a basis in truth. Too often there seems to be a disconnect between the solutions being offered and what customers want. Vendors constantly add new features trying to out feature the competition, forcing clients to upgrade or rapidly lose support. The situation with software is similar to the domestic auto industry in the 70s and 80s whose product was based on new fancier features with little concern for quality. The Japanese with their focus on simple, reliable transportation found a ready market for their vehicles. They also didn’t fail to innovate, but rather focused their efforts on features that their clients needed and wanted.
BoxBrite measures success in creating solutions not in the number of cutting edge features incorporated. but on longevity and value to the client. Longevity also means how reliable and maintainable is the solution and does it continue to maintain its value over time. There will be times when our solutions incorporate leading edge components, but only where it improves the reliability or value to the client.
Rather than listing a bewildering array of languages (i.e. features) that we are skilled in, we prefer to list the profile of a typical solution:
- Elegant and simple not fancy and complex. Our experience has shown that fancy and complex tends to cost more and break more often.
- Focus on performance. This doesn’t mean insist on a high-end client server database solution when a local database will do, but rather design the solution in such a way that users don’t experience performance problems doing their work.
- Prototyping and phased deliverables. We recognize that clients often won’t know what they want until they see it. Rather than fight this we focus on delivering prototypes and early phased deliverables when changes are still possible. There is little value in delivering exactly what was initially described if that no longer will meet the need.
- Heavy emphasis on automated testing. Although taking the time to think through how to automate testing takes some up-front effort during design and development, the industry has clearly shown the benefits later in the
project more than pay for it. This is especially true if enhancements are added to the solution, where you want to ensure no existing functionality has been broken.
- Adaptable processes. We have chosen to base our solution development processes on the Microsoft Solutions Framework. This framework has the needed flexibility to adapt to each client’s situation while having the advantage of drawing on experience of processes used by an industry leader.
- Technology choices driven by client’s need. Since we have experience in a broad range of languages and tools, you will find the technology choices are based on what is appropriate for the solution not what language we are most skilled in. Too often we have seen solutions poorly implemented because the available resources had a limited toolkit available.
- No need for post-implementation fixes. For us a job well done is a boring implementation, followed by a lack of fixes, patches etc. We’ve seen far too many solutions the require heroic efforts from everyone during testing, implementation and in the period immediately after. For us, boring is not the hallmark of an easy solution, but rather a well designed and implemented one.