Writing a Successful Control System
Dec 29, 2011 11:22 AM, By Patrick Barron
The scope of work and managing customer expectations.
An experienced programmer should be able to offer alternatives and other methods to accomplish specific functions that are not possible or not feasible. If there are two methods to accomplish the same end result, the programmer should be able to steer the customer in the direction that will be more reliable and take less time. There are times when adding hardware to a system to perform a complicated task can be much more efficient, dependable, and by using specialized hardware, it could actually cause a great cost savings in the software. All alternatives should be evaluated to find the best solution. The programmer is often put in a very awkward position at the end of the project explaining to a customer why some aspect of the system is not there. This situation could have been avoided if the expectations of the customer were managed at the beginning stages. The programmer needs to work with the salesperson, system designer, and client to determine the best way to meet the needs requested while still providing a stable, reliable system.
End-users come in many types. Some are technically savvy and know exactly what they want and what is possible, others see fancy systems at a tradeshow or manufacturer’s showroom and base their expectations on a staged demo. Their expectations are tempered by seeing a system working flawlessly in a demo (completely controlled) environment. As a programmer we know that real-world conditions are very unpredictable. Power surges, unstable networks (in particular wireless networks), unusual wiring and equipment configurations, operator errors, and a host other issues are common, everyday occurrences. Just because something can be done, does not mean it should. A system that is reliable, stable, and functional 100 percent of the time is much more desirable than a system is capable of doing a few complicated tasks unreliably. By meeting with the end-user and finding out exactly what is wanted in the scope of work, a programmer can accomplish their goals in the best manner possible. The goal of a successful control system is to work properly. The end-user is concerned about the final result that is delivered on schedule, not necessarily how the programmer accomplished that end result. The programmer should use their expertise (and common sense) to find the best way to meet the scope of work while meeting the needs and expectations of the customer.
A successful program means that not only are the customer’s needs met, but that the project is profitable for the programmer as well. Developers may spend hours, days, weeks, or months working on a software project and writing complicated routines. A successful program is one where the needs of the customer are met in the least amount of time possible. A clearly defined scope of work helps eliminate a great amount of time spent on software that is outside of the parameters of the project. Writing unnecessary code wastes valuable time and can cause the overall project to be not profitable. The task of the programmer is to write a program that meets the scope of work and addresses the needs of the client while doing it in a timeframe that allows the project to be profitable. Managing the expectations of the end-user, understanding and adhering to the scope of work, and thorough communication are essential. This allows the programmer to optimize the software to meet the needs of the system while spending the least amount of time possible. A programmer’s time is (literally) money and time cannot afford to be wasted.
Acceptable Use Policy blog comments powered by Disqus