Control System Programming vs. Software Development: Is there a Difference?
(As appeared in Commercial Integrator)
While “programmer” and “software developer” are often used interchangeably, there are in fact some key differences between the two roles, especially in the AV control space.
When we refer to AV control system programming, we are essentially defining the process of creating a program that allows the user of a room or space to interact with the audiovisual equipment in that location from a single, easy-to-use interface (most commonly a touchpanel or iPad).
A programmer uses various programming languages – the process referred to as writing code — to develop these programs. These languages are most often, though not always, proprietary/manufacturer-driven languages (such as AMX NetLinx or Crestron SIMPL). A good programmer tends to be patient, highly detail-oriented, and excellent at problem solving.
Programmers tend to be specialists in their given language or area of expertise.
Software developers typically possess the same skills as a programmer and technically do “programming” as well. However, in the AV industry, their role is focused on developing one-off/custom solutions, products, or creating tools that solve problems, as opposed to the programmers, who are creating the more fundamental programs to support user interaction.
Software developers are often generalists in a wide variety of software-related areas.
Scope of Work in AV Control
The scope of control system programming work tends to vary greatly. The problem space for control system programmers is a physical one. Their deliverable is a fully-working system that allows an end-user to easily interface with their environment. Software development often focuses on the tools themselves, which ultimately make it easier for the programmer to do his or her work.
These tools, while often in the realm of AV control, solve a wider variety of problems that may be outside the scope of traditional control system programming projects.
One example of this is the development of control module solutions, which are tools that help simplify programming for AV manufacturers’ equipment and help increase adoption and integration.
These can also make it easier for a programmer to simply drop into their existing system program without having to spend time writing new code.
Other development projects include custom web applications utilizing Node.js, HTML5, and CSS as well as custom “middleware” solutions that act as intermediaries between scheduling services such as products from EMS Software and Asure Software, and resource management applications like AMX RMS and Crestron Fusion.
In contrast to the role of the control system programmer, where knowledge of the devices and specifics of the AV industry are crucial, the custom software developer can succeed with far less industry-specific knowledge (though it will be gained as time goes on).
A strong foundation in computer science and experience using more common/standard programming languages such as C#, Java or Python are probably more useful, particularly when just starting out in this role.
In the AV industry, it is uncommon for people to be experts in both areas. Each require a different set of skills, level of knowledge, approach, and area of focus be successful.
Control system programmers tend to get more involved in the signal flow, functionality of the AV system, troubleshooting systems, and the user interaction with the technology. Software developers tend to focus on solving specific problems and needs, and work on applications that target those requirements.
Very few programmers transition to a development role or master the shift in mindset. Thus, it is uncommon to find integrators and AV programming firms who provide both custom development work as well as traditional control programming.
AV Control and Software Development Going Forward
Despite the ongoing shift to more “plug and play” solutions, which inherently reduce the role of the programmer, there will always be systems and problems that are too complex for these “no programming required” solutions and will require experienced programmers and software developers.
Furthermore, devices and systems are becoming increasingly complex and interwoven, requiring a constantly improving skill set on the part of the programmer, as well as the developer who can work hand in hand to problem solve and address specific needs.
As the influence of more standardized programming languages continues to grow in the audiovisual industry, there will be increased demand for applying the software development approach and skill set to both traditional control system programming projects and customized applications.
Firms that provide the mix of experienced control system programmers and software developers, with a focus and commitment to both, are better positioned to tackle the expanding needs of clients and overall complexities of today’s AV control world.