Custom software development has been a main focus of our business strategy for 20 years. Over the years we have developed a wide variety of software for a broad spectrum of businesses, from CRM applications to accounting, to robotics and industrial, to sophisticated financial engineering programs used by global corporations. Some of our software is designed on a stand-alone platform, but more often it involves a user interface to a database, where data can be delivered to a screen, a series of reports, or to a browser. This can be accomplished either using a client-server model on the in-house local area network, or over the internet. Using web services to deliver this processed data, either for public consumption through the company website, or privately through the company Intranet or Extranet is at the forefront of today’s technology.
Looking over the many projects we have managed, we can trace our success to the application of these five principles:
- Listen carefully and thoroughly understand the whole problem. Then make the plan.
- Fashion solutions cleverly so they can be adapted and re-used.
- Understand that the software development is here to serve the business.
- Don’t rush into the newest technology: make sure a solution is well-tested before you risk it on a client.
- Anything worth doing is worth doing well.
We examine these in some detail:
Every successful engagement begins with thorough and complete examination of the problem, objectives, and an agreement on how to measure success. This requires in depth understanding of the client’s business model. All issues that can possibly impact the project need to be examined before a single line software is written. This is in contrast to the ‘Ready, Fire, Aim!’ philosophy that seems to be prevalent in IT consulting today. In our experience, each day spent in planning saves ten days in coding, testing, and debugging. Projects are delivered on-time, under budget, and above expectations.
We believe very strongly in the incorporation of Rapid Application Development (RAD) methodology in all of our projects. RAD implies the use of object-oriented, or functional modular routines freely throughout the project. The modular nature of these routines has three important advantages. First the code is re-useable. That means that routines developed for earlier projects can be re-used. The advantage here is that the code is already tested and debugged, and is bulletproof. Second, thinking in an object-oriented framework clearly identifies the logical objects in the business model together with their purposes, and relationship with the other objects. Third, since no business today will exist tomorrow without undergoing changes, the modular concept allows easier ‘swapping’ of these objects to allow the model to be more responsive in the future. This is known as component architecture.
The software and solution must be fashioned to mold to the business. By this we mean that business realities like workflow, and user preferences must be respected in the areas of data transfer and reconfiguration, user interfaces, documentation, and training. More importantly, the solution must be a byproduct of continuous interaction and feedback between the business decision makers, and the consultants.
We are conservative and measured in the adoption of new products. Although we have considerable expertise across a wide variety of software languages (C++, VB, Java, X-Base), databases (SQL Server, Oracle, Jet, Informix, etc.) and platforms (Windows, Unix, Mac) the software industry is very good at keeping a steady flow of new products on the market. Only a few of those products survive. Before rushing to adopt the ‘newest’ technology, we need to know that is stable, reasonably bug-free, and that it will emerge in the future as a standard. Let others be the pioneers.
We believe that anything worth doing is worth doing right. As a result, we are fanatical about the quality of the product we deliver to our clients. We think that all software should be robust, intuitive, well-designed, and industrial strength. And, we think it should be designed, as much as possible, with the future in mind. All of our software is guaranteed to work as designed for the life of the project.