Are you ready to become a Full Stack AV Programmer?
In the software world and particularly within the realm of web development, there exists the controversial moniker called a Full Stack Developer. It refers to a software developer who has a mastery of both frontend and backend skills allowing them to work solo on a project from start to finish. The controversy stems from many believing that there is no such thing as a Full Stack developer either because every developer must be Full Stack or no developer can be Full Stack. Despite this, the term is still frequently used and recognized in the technology world to describe a respected role and/or imply a superior level of software development prowess.
Upon joining the AV industry with education and training in the Full Stack arts close to ten years ago, I have come to the realization that the feat of developing and maintaining a superior level of expertise in all aspects of programming and software technologies is utterly unobtainable. Aside from learning the variety and nuances of programming languages, the impact of platforms and applications (e.g. embedded programming, PC applications, mobile apps, websites, web applications, scripts) also needs to be considered.
It was ultimately after getting into web development when I came to the realization that I could never know it all. Learning HTML led to learning CSS which led to learning JavaScript and the countless JavaScript libraries that existed. Not to mention the fact that all of those technologies could look and act differently in different browsers and on different operating systems.
Furthermore, Full Stack is not only limited to software. There are hardware considerations that need to be taken into account impacting the software approach. In fact, the software is useless without the proper hardware to run it successfully. An understanding of networks, PC components and the infrastructure that is involved in processing all the bits (e.g. switches, routers, firewalls, servers, CPUs, RAM, processing and storage, cables and connectors) is required for to ensure everything works together.
In light of this, one can easily argue that no developer can be truly Full Stack in the limitless world of software development, especially if you define Full Stack as having a “mastery” of all related technologies. It is just too expansive to know it all! However, the argument that all developers are Full Stack seems much more accurate to me. I would simply tweak the definition a little and say that all developers have Full Stack “potential.”
I believe that rather than using the term Full Stack to designate an expertise in a wide array of technologies, the term should be used to describe a developer’s state of mind. I would define a Full Stack developer as a developer who has an aptitude for learning what they need to know when they need to know it and adapting to the specific needs of the project. Rather than trying to know it all, learn what is required at the time and compile the experience and information for future recall.
Fortunately, the AV industry truly provides an environment where those with a Full Stack mentality and approach can thrive. The typical AV programmer must not only have expertise in coding, programming languages, user interface design, and device communications; they must have proficiency in control system hardware, signal flow, audio and video processing, networking, and electrical properties of cabling for a system to work in harmony. And when issue arise, the AV programmer is equipped with the understanding and the capability to effectively troubleshoot and provide assistance finding resolutions.
The main reason why I was able to hit the ground running in AV, despite coming from a web development background, was due to my Full Stack mentality. I learned what I needed to know for a specific project and built up an in-depth knowledge-base of AV technology over time through repetition and experiences. I still had my traditional Full Stack background to leverage, but I was able to shift my “mastery” to the technology at hand.
Nowadays, AV control platforms are adopting more modern programming languages and standard technologies including C#, Java, Python, HTML5, Lua, JavaScript, and more. It can be a tall order for AV programmers, who have become comfortable with mastering one proprietary language and platform, to be faced with the challenge of getting up to speed with the variety and depth of software development requirements.
AV programmers who have the mindset that they need to “know it all” or be limited by thinking that they can’t “learn it all,” will struggle when it comes to transitioning to AV software development. However, for those who have a Full Stack mindset, the adjustment will become much more attainable. After realizing the accomplishment of amassing the broad swath of AV knowledge and related technologies required to become a successful AV programmer, the challenge of learning modern programming languages and platforms can be looked at as an opportunity to conquer a new horizon. What may seem to be a daunting task becomes more feasible when considering that even the most savvy software developers from outside the industry must get up-to-speed with the world of AV in order to compete.
I believe full stack developers exist and everyone has the potential to become one, as long as you treat Full Stack as a state of mind and you’re willing to always be learning. So, the question is, are you ready to become a Full Stack AV Programmer?
If you would like to learn more about how Control Concepts leverages software development methodologies and Full Stack mentalities to address complex needs and solve challenges for the AV industry, including driver/module/plugin development, middleware solutions, software applications, and enterprise level system deployment, visit the Start Here page on our website.
I can be reached via email and would be glad to share more about my journey and experience becoming a Full Stack AV programmer.
To learn more about Jonathan, please check out his bio on the Our Team page of our website. He can also be reached on LinkedIn. Jonathan looks forward to continually strengthening and developing his skills as a Senior Systems Engineer and software developer at Control Concepts.
- Posted In:
- Development