Primarily medium to large business applications built on Internet and client-server technologies.
Although most companies make good use of many off-the-shelf applications, from word-processing and spreadsheets to accounting, and enterprise-wide applications like Customer Relationship Management, Enterprise Resource Planning, etc., virtually all have areas of need not met by these applications. Every organization is unique in many ways—perhaps in the specific services or products it offers, in how it is managed, or how it relates to customers, and so on. Each one has certain areas where it operates in its own way, for its own reasons, distinct from everyone else. It is in these areas where custom software can be very effective in controlling costs, enhancing revenue opportunities, and improving the efficiency and reliability of business processes. These are the areas where we understand how custom software can really benefit an organization, and where we have been successful creating effective, reliable applications.
We have deliberately chosen to work in a wide range of industries. Your one-of-a-kind needs are what interest us—our professional pleasure comes from giving you software that is from beginning to end a bullseye for you—not some compromise based on modifying an off-the-shelf application.
Like every business undertaking, software development has its own patterns of risk. Recognizing and dealing with risk is a normal and essential aspect of creating software.
Although each project has a unique risk profile, here are typical types of risk encountered in software development:
These kinds of risk are addressed in two ways.
First of all, the whole purpose of development methodologies and project management disciplines is to facilitate successful outcomes without falling prey to these risks. This is discussed in detail in the Principles, Development process, Project management and Rules of programming sections of this website.
Secondly, each project has its own unique set of risks, which should be explicitly addressed from the beginning. The development plan should identify these risks and describe how they will be evaluated and avoided. For example, suppose that for a given application there is potential for a "fatal" performance problem related to network architecture or database structure. In this case, small testbed applications should be built early so that actual performance can be measured before significant resources are invested. If risks like this are identified in advance, steps can be taken to guide development around potential problems without unnecessary waste of resources.
There are many aspects to project cost, but let’s take it from this point of view: “For a given finished product, how can I as the client minimize total cost?”
Here are some of the more effective things you can do:
Probably the most fundamental things are to stay involved, stay close to the project, and don’t give up on your vision of what the application should be.
Sometimes managers believe that once a project is pointed in the right direction, they can pull back a little and “everything will be all right.” Everything may be all right, but even it is, many small issues and decisions arise over the course of the project, and you should be aware of these. Small inputs from you on a regular basis can, by the end of the project, make a big difference in the finished product.
From time to time there will be a feature in your application that someone, perhaps a developer, perhaps one of your stakeholders, will resist or want to change. Sometimes it should change, but other times the only motivation is “to make things easier” for the developers. If it’s an important feature, someone needs to be the advocate for the overall quality and integrity of the finished application. This is something you should do when it seems appropriate.