Our Design Philosphy
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
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.
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
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.