System Design Philosophy
There are a number of methodologies and approaches for developing new systems that organizations follow in order to improve the chances of success. Some of these are out of the text book (OOP, RAD, RUP, AUP...), others are hybrids that best suite the given organization. The discipline required for these prescribed methodologies undoubtedly improves the effectiveness of the development team much like discipline in the army produces a better fighting force.While the chances of project failure are lower with a proven methodology, failures still do occur. In other cases a project is deemed to be a success because a computer system was delivered, but it's adoption causes subsequent stress on the organization. This stress is caused by a mismatch in the functionality delivered by the new system and the functionality actually required by the organization. For enterprise class systems, an organization can loose some edge when this happens. Employees are not as effective and things take longer and cost more to get done.
Having played various roles on scores of system development projects over my career my humble observation would be that there are 4 key elements to project success:
| Budget | Resources and Timelines |
| Work Flow | User Experience |
| Algorithms | Application Inteligence |
| Technology | Hardware and Software |
Budget
Staying on budget means following the project plan which should be as simple and low risk as possible. The two big things that often blow the budget are the unexpected (such as using a very new technology that is not quite ready) and scope creep (such as changing the deliverables without adding necessary resources).Work Flow
Work flow is a term for the steps required to perform a business task. Recording information from a phone call with a customer could be a good example. This is a business task that happens many times a day. If it takes 8 mouse clicks, a list box, and 3 text fields to do this when it could take 2 mouse clicks and 1 text field then much time is being wasted when you factor in the number of employees that perform this task and how often they do each day.The most effective systems are optimized to minimize the effort required for the most often performed tasks. Ideally things should occur automatically - which unfortunately is not feasible in all cases. So next to automatic system operation is having highly streamlined work flow for the most frequently performed tasks. Human interface designers should become familiar with the 19th century mechanical engineer Fredrick Taylor and his micro-motion studies in manufacturing settings. A similar approach, when used with computer human interfaces, leads to more efficient software that takes less time and effort to operate.
Algorithms
Algorithms refer to the way a system thinks. Better algorithms can make a system run on smaller hardware and use less bandwidth. Smaller hardware means less power consumption and a greener system. The trade off is that better algorithms cost more and take longer to develop. However they can be justified by lower ongoing operating costs.Technology
The technology of a computer system refers to its underlying hardware and operating system. Intel, Microsoft, Windows, Linux, Apple, HP, SUN, Oracle, IBM, SAP, and so on. Generally speaking all these technologies are more or less equivalent. One could argue fine points where one has an edge over the other in specific areas, but overall they are comparable.Another observation that can be offered is that in the long run it is best to stick with one technology platform - if at all possible. Microsoft based operations should not buy Apple computers or Linux systems. Windows based operations should only buy more Windows computers. An enterprise's economy of scale with respect to IT support is eroded with each new technology brought into the mix. The staff on board that can handle Microsoft issues cannot not handle questions about Apple or Linux. Now more staff with the needed skills are required, which pushes up overheads. So unless that non-Microsoft system does something really amazing - stick with Windows.
The exception to this is SAAS (Software As A Service) where the application is hosted and supported by a web service provider and accessed over the Internet. No mater what platform an enterprise uses, it could be very interesting to take a look at what is being offered in the SAAS realm and migrate if the business case is there. It is very hard to compete inhouse with SAAS services. Incorporating them, where it makes sense, will lower an organization's ongoing operating costs.