Full stack AV Developer

Developer , Programmer , configurator, engineer …

In the software world, the new wanna-be job title is a “Full Stack Developer”and following a recent quick discussion with a colleague in the AV Industry this got me thinking about what we call ourselves and what we read in what others call themselves in the AV Industry. In the ever changing world of tech it is interesting to think about how we stay relevant in the changing marketplace.

In the world of AV control, the term “programming” is used to describe a process in which a software developer (often referred to as the programmer) uses the system’s functional requirements to develop, install and test the user interfaces and automation software required to operate the control system appropriately

In Infocomm’s 2015 Whitepaper, Modern Approaches to Control Systems Design

Sounds like a full stack job to me! The description doesn’t include developing the user interface but in the industry, this is often carried out by the same ” programmer”.

The tasks within this definition can be broken down into smaller items.

  • Software Developer – Develop a software specification from the functional requirements
  • Programmer – Write the controller software based on the developer’s specification.
  • GUI Designer – Design and implement a touch panel design to fit the developer’s specification
  • Commissioning Engineer – Install and test the controller software and GUI Interface. ( not installing or programming the physical devices)
  • T&C Engineer – Verify the compliance based on the functional requirements.

I think it is helpful for the sake of this discussion to mention and then exclude installers traditional “Test and Commissioning Engineers”. For me, this role is part of the quality control process and indeed in other industries, the T&C engineer is an independent contractor who can objectively assess the compliance to the spec of an engineering system. Installers (ideally good ones) are crucial to the process,  just not what I am discussing today. I know some excellent T & C engineers who have no knowledge of how to write a DSP config or a control program but will tell you what it is not doing in a very detailed way!

So this leaves broadly two groups:

  • Commissioning
  • Programming

There has been debate (and a fair amount of snobbery) for years within the programming community online over the difference between a programmer and somebody who just carries out configuration on a pre-programmed system. It has generally been accepted in the past that configuring systems using a drag and drop software is not the work of a programmer. That line seems to be crossed only when your work involves writing custom code at some level.

The skills required by a good commissioning engineer have ramped up over the years. In the past a good commissioning engineer would be on the tools checking IR bugs, using RS 232 connections for firmware, tuning gains on amplifiers and pre-amps using a screwdriver and have a stock of RS232 crossovers in their bag. Its common now for the principle tool used by a commissioning engineer to be a laptop. Convergence of communications onto ethernet and the widespread use of DSP audio processing means that the commissioning engineer can update firmware, setup network configuration, ID Devices and tune the room audio from their laptop connected to the LAN. Commissioning engineers are likely to be certified on individual products and familiar with scripting and telnet as well as competent in networking.

To me, a Full Stack Developer is someone with familiarity in each layer, if not mastery in many and a genuine interest in all software technology

Laurance Gellert

So what does a programmer do? we defined above that they need to write custom code at some level.

However both in AV and in any software development, writing code is only one of the skill sets.

AV System

  • Video and Audio Distribution
  • Building / Room Data Collection
  • Functional requirements
  • Core Programming
  • GUI Design and Programming

Web Application 

  • Server Network and Hosting Environment
  • Data Modelling
  • Business Logic
  • Action Layer MVC
  • User Interface User Experience

Some focus on user interface design while some work in the processor coding that is the core custom logic of the system, others on writing the modules and interfaces that other programmers use within their core code.

There is also differentiation by sector with some focusing on offering their services to the residential sector or the commercial sector.

There is another level of differentiation based on the technical skillsets of the individuals or companies. In Crestron alone, it is possible to program a system in four different ways (AVFramework, Studio, Simpl or Simpl#) four different software platforms with different possibilities.

We all program at some level of abstraction and different software tools offer different levels of abstraction with the associated loss of detail and reliance on the abstracted code.

Indeed the scale of abstraction and quality of the tools available means that highly custom systems can be created without writing any code at all.

Is it time for the “AV Programmer” to establish a new identity? Perhaps the current term “AV Programmer” is a misnomer. We might consider that a new name be given—one that better identifies and describes the value an AV programmer provides

Steve Greenblatt Control Concepts

[blockquote][/blockquote]

AV converging with IT has also meant it has mearged with software development. Systems can be written or include sections that use open languages such as Python, C # or javascript and open hardware for control and of course there arespecialist AV programmers who can also excel in these open languages.

In the AV industry we need to learn to write clean code, loosely coupled  or systems and API’s so that we can all work on our specialisms! In the future the role of the real code writers may well be to write the code to allow other less skilled users to use more abstracted solutions and have confidence in their tools and the supporting modules.

We have in my opinion a problem In the AV industry where some integrators lean on new eager individuals in the industry to be a jack of all trades and become their sole and complete technical resource.

Indeed I have done my own share of this type of work in the past. I think of it like a Hollywood movie ‘mission impossible’ where the hacker has to control a building system and shut down the lifts and the alarms before Tom Cruise gets caught.

This unsustainable expectation leads to systems which are poorly documented, difficult to maintain, impossible to fully test and lead to a bad user experiance. In addition, these new starts into the industry have no-one to look up to in the business,  no technical mentor and no team to support them.

I think programmers new and old should look to the wider world of software development where collaboration with other professionals is encouraged. Meet-ups and Hackathons for example bring together technical and non-technical individuals to collaborate on projects and new ideas.

AV professionals can stay relevant and play a major role in the ongoing AV/IT convergence by doing what we have always done. Keep learning.

Patrick Murray-Controlhaus

So as you can see programmers do many different things for many different clients. I think as Programmers we must make sure we speak to your customers about where we specialise and use the network of our peers to deliver better solutions.

I think Integrators planning project make sure you talk about which skills you need before selecting the right team.

Further reading: