Application development is a balancing act between need and resources. An application needs to deliver the desired result but it also needs to come in on budget. A critical aspect of making that judgement is to understand the expected benefit from the proposed application and its perceived value. Will the application (or modification to an existing application) save employee time? Will it bring in more business or cut costs? How much? Application development is an investment and you demand a return on that investment (ROI).
The key to any development project is understanding the problem. Clients often do a pretty good job of outlining what they hope to accomplish. But it is always necessary to dig a little deeper. Understanding the underlying business is critical. What kind of business is this? What are your priorities and how are they achieved? We need to know who will be affected by the new software and how it relates to other systems in your office. As we explore the problem with you we look for things you might have missed.
With this information in hand we sketch out the basic details of the solution and show you how it will work. It is important to create a roadmap to work from. This is also crucial to the estimating process. As we flesh out the design the following elements go into our thinking:
Ease of use - An application should be as simple to operate as possible. Simple applications require less training and are easier to integrate into your existing systems. We work to use your own terminology throughout the program wherever possible. We avoid busy screens and reports. Our goal is to create software that is "obvious in its nature".
Use common tools - We use tools from major vendors that we feel confident will continue to be available and be supported. Also, due to their popularity, these programs have been thoroughly tested by the user community and debugged by their vendors.
Build for the future - While building an application to meet your immediate needs we structure it to be extensible so that you can add on to it in the future if needed.
Keep it simple & affordable - We create solutions that are within the scope of the problem. Not every nail requires a sledgehammer. We look to minimize the size of the solution that we create. This keeps it affordable and allows us to deliver it in a timely manner. It also tends to lead to a more elegant and efficient system.Other Considerations
Institutionalize Best Business Practices - When we create systems we know that the new system will likely be in place for many years. This is a good time to look at how you conduct business and optimize your work flow. Managers sometimes complain that employees are shown how to accomplish a particular task but that over time they modify the process making it less efficient or even leaving out important steps. We call this "Process Drift". This is your chance to lock in the best methodology by letting the computer inforce the process.
Normalization - Normalization is a set of principles that professional database programmers adhere to when designing systems. Internally we add to that and say that, "as much as possible, data tables should reflect the real world nature of the data." This allows for maximum extensibility of your systems and usability of your data.
Data Warehousing - Years ago when data storage was expensive and computers less powerful it was considered good design to minimize the amount of data an application stored. But current thinking now tends towards a "save it because you may need it someday" philosophy. So it becomes increasingly important to gather and organize your data so that it can be easily searched. New government regulations even mandate that email and other routine data be kept on file.
Backups - How you're data will be backed up and if necessary restored is an important consideration when designing a system. Before a system is launched the backup system must be put into place.
Security - In most cases databases should be password protected. Often data is restricted to users in a multi-layer security scheme. Access over the internet must be carefully considered and risks weighed. Security even extends to the physical security of your server which should preferably be behind a locked door.
Applications that Inform - We look for opportunities to place key data in front of users on screens and reports that will subtly keep them aware of the big picture or warn them of impending problems.
Standards & Portability - Our work is well written, documented and adheres to common programming standards. In most cases you will be provided with the complete source code. This means that other professionals will be able to work on your programs should the need arise.