Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×

Writing a Successful Control System

The scope of work and managing customer expectations.

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.

1 2Next

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.

Previous1 2

Featured Articles

Close