Writing a Successful Control System
Dec 29, 2011 11:22 AM, By Patrick Barron
The scope of work and managing customer expectations.
A control system program involves many parameters and criteria. These variables determine the specific functions the final system will contain. Before starting to write a program, the developer has to be given the criteria that will be used during the creation of the software. This information is typically defined in a document called a scope of work. This scope of work is used to set the parameters of the software and to also set the expectations of the client. A successful program is one that has all of the required functionality of the system and meets the expectations of the client, while being a profitable project for the programmer.
At the beginning of any project, regardless of size or complexity, a clear picture of client expectations is crucial. Programmers need to ensure that all needed information and specs are available before starting any work. This is extremely important in a scope of work. Often a client is in a rush to finish a project and wants to have the system working yesterday. They do not understand that very specific details are necessary to make sure there are no delays and no details have been missed. Rushing ahead in a job because of a tight schedule and pressure to get it done is a common mistake for programmers. This can actually take more time overall because work has to be done over due to unclear expectations and misunderstandings. Wasted time negatively impacts client satisfaction and your professional image. More importantly, lost time affects the bottom profitability of a project. A minimum checklist of information a scope of work needs to contain is:
- Written description that describes the desired functionality. The client should dictate what needs to be done, not how it should be done. How the functionality should be met is a function determined by the system engineer and the programmer. There often are many ways that the same end result can be met using a variety of different hardware and software approaches. In most cases, the end user does not care how their needs are met as long as they are met.
- Exact make and model of all equipment used. Many times additional research is needed to determine if equipment being used can produce the functions the client desires.
- Complete drawings of all hardware and wiring are needed. A programmer should have enough understanding of system design to determine if the system will function as desired based on reviewing the drawings. It is a mistake to move forward with working on a program that has significant design flaws, which prevent the desired functions from being able to occur. Drawings are important as well because even minor wiring mistakes can make hardware not function as expected, or not at all.
- What type of interface does the client prefer? Do they want a touchpanel, keypad, wired, or wireless? Are there certain styles, colors, logos, or special needs to be considered? Interface design and end-user technical competency must be clearly defined for a successful program to make sure the design is not too complicated to use.
- What is the timetable for completion of the project? Programming is not complete until the hardware is installed, the code is loaded, and the system tested. Any delay to hardware or wiring will delay the completion of programming and the final project.
- Whom should questions and communications be directed to? Who has the ultimate authority to make decisions about the functionality of the project? A user of a particular room may want certain functions, but they might not have the authority to request the work needed for those functions to happen. Work that is done without authorization can be detrimental to the programmer because in most cases, unauthorized work will not be compensated. Emails and phone calls to the wrong person are frustrating for everyone and can slow down completion of a project.
Managing client expectations is an important and delicate aspect of every control system project. The programmer should meet with the end-user at the onset of a project if possible. The discussion should center on their expectations and of the system. The customer may have many desires and requests for the functionality of the system and the style of layout they want. The programmer can help give direction to the operation based on what is possible, feasible, and practical. During this initial meeting, any discrepancies in hardware capability and desired functionality can be addressed. The myriad of options for user interface styles, the design of the user interface, and special needs can also be discussed. At this early stage of the project, the programmer has the opportunity to help define and refine the expectations of the customer. There are many options on how various parts of the system can be programmed and by discussing the options with the client, the programmer can deliver a program that is optimized to the needs of the customer. This is where managing the expectations is critical. If the customer does not expect certain functions, they will not be disappointed when those functions are not part of the system. The salesperson in particular should learn to say "no" to functionality that is unrealistic, impractical, or just plain impossible to do.
Acceptable Use Policy blog comments powered by Disqus