Role Call: Senior Software Engineer

Software Engineer
Is the grass truly greener on the other side of the fence? You never know until you peek over it.

Role Call, a series on RF Globalnet, takes a “peek behind the curtain” to help answer the questions related to different jobs and career paths in the RF and microwave industry.

Recently, Pat Lyons, Senior Software Engineer/LabVIEW Developer at In-Phase Technologies, Inc., took time to answer some questions about his occupation. Pat’s passion as an engineer is to continuously learn more efficient and effective ways to design and implement creative solutions for any problem within a system. With over seven years of experience at In-Phase Technologies, Pat has been involved with many projects, including software design and implementation for multi-path networks and switch matrices, model test application development for non-destructive testing of digital medicine, and maintaining and troubleshooting radar warning test systems.

What does your position as a Senior Software Engineer/ LabVIEW Developer currently entail?

The majority of the work includes a wide range of responsibilities, including both high-level system software architecture design input and low-level driver creation for individual instruments (and sometimes even integrated circuits) within a system. Some of the higher-level challenges may come in the form of managing systems that require asynchronous communication across separate processes running on different network nodes, while lower-level issues could be discovered while writing a simple application/user interface that tests code to control subsystems or instruments, where the developer might find out the advertised functionality is not present, and correspondence with the subsystem’s tech support is required. Every now and then, I even get to work down in the weeds, writing low-level FPGA code in LabVIEW that communicates with ICs with various protocols.

What education/certifications are required for this position, and what are the continuing education/certification requirements?

Initial requirements were a BSEE, though there are others in similar roles here at [In-Phase Technologies] IPT with higher levels of formal education. Software engineers are expected to maintain and acquire up-and-coming certifications from National Instruments, such as Certified LabVIEW Developer and Certified LabVIEW Architect.

What professional experience did your position require? How long did it take to reach your current skill level?

Prior to my current position, I had several positions with a wide range of both technical and personnel-related responsibilities. I landed at In-Phase Technologies with an intense desire to learn about the deployment and use of technologies that I had learned in school as being the “latest and greatest” — while, in prior companies, I found this desire was not generally appreciated. IPT has essentially become a perfect fit for me, as the work is rarely repetitive, and we often provide products that could be described as prototypes being the first of their kind, yet required to function in a production or test environment of a (higher-level) mission-critical system.

How did your past roles as an electrical engineer and engineering technician help prepare you for your current position?

I had made it a point to remain extremely busy prior to… landing here at IPT . I maintained technical hobbies and interests when looking for a job after graduating during the “subprime mortgage crisis.” Having several personal projects — including multiple CNC machines and other projects (including a neighbor’s NI PXI based DAQ system I was playing with) — I was focused on becoming a jack of all trades, as my curiosity often turns a comprehensive understanding of a system into a personal requirement . IPT is a place that allows me to utilize a good amount of the “out of band” skills I’ve developed in my continued learning as a engineer and all-around hobbyist.

What types of things did you need to learn on the job (versus in the classroom)?

Risk management, scheduling, and the value of time.

In school or hobby projects, you’re not necessarily exposed to the risks you might encounter while troubleshooting or debugging a multi-rack test system with an out-of-this-world price tag. The pressures of schedule and the responsibility to perform will force you to evaluate the realm of possibilities when dealing with DUTs, a system that may be sensitive to damage if things are executed out of order, or a bug causes an error in an over-voltage scenario.

When company A tells company B that a system will be delivered in N number of months, company B will plan accordingly, and the schedule for the related project (of course with some out-of-this-world price tag) will be adjusted to fit for the end client’s requirements. As a result, when issues arise, the priority is not learning or discovery, as it was in school. The priority is to solve the problem in a fashion that does not flex schedule out of bounds.

In school, given the priorities of learning and discovery, the value of time is rarely a focus. The hard truth in the real world is that value is the backbone to any successful company. There are many instances where my desire to learn or discover new solutions needs to be restricted after asking myself if the time spent could have some economical return.

What does a typical day in your position look like?

First things first, coffee and emails.

Depending on what stage of a project I’m in, this may be followed by a dive into the LabVIEW development environment to either code with device documentation nearby, debug instrumentation with equipment on my bench, or even rewire a breadboard. I often find myself on the phone or attempting to reach out for technical support from manufacturers, from PC-based instrumentation to small integrated circuits. I’ve learned that a simple inquiry with another applications engineer can save lots of time that would otherwise be spent guessing or troubleshooting.

Do you spend more time creating new control software for RF components or more time developing test systems? How has this changed over the years?

Developing test systems. Although there’s an argument that these, in some systems, are one and the same. Many test systems require drivers that control components of a test system, such as attenuators and switch matrices.

What are the biggest personal/professional challenges that your work presents for you?

Being interested in every and any technical puzzle or challenge can make staying focused a challenge, but I have excellent teammates in play to keep me in check — they have largely become “voices” in my head for good.

What specifically drew you to this career path?

I find I really appreciate the discovery of the long, and often technical, chains of causality that can be discovered in areas that would be overlooked as simple or mundane when you jump from the action to the result. I’d say it was my curiosity that drove me to where I am, career-wise.

What is your favorite part of your occupation?

There is a rapid pace of new challenges to work on. Many of my assignments are things I haven’t done before and, as a result, I get to learn every day. I also get to work with veteran-level (experienced) engineers that continue to impress me on a regular basis. This can be inspiring, like a reminder of how far there is to go in this journey.

We all have interests that are separate from work. What hobbies or other interests do you have outside the office?

Motorcycles and computer networks (homelabbing), mostly. I have several motorcycles in various stages of functionality, some race-track only and some project bikes. I also enjoy the hobby of self-hosting web-based services and learning about enterprise IT infrastructure by tinkering with it at home. I think I could say my home network is probably more involved than many small businesses. I also find the industry/environment of cybersecurity wildly interesting, as I see it being one of the fastest-developing industries — an epic game of Spy vs. Spy (comic reference), with some of the cleverest crossover mechanisms ever realized in the realm of technology.

What advice would you give to an individual just starting out in this field, both in terms of software development and professional improvement?

Be aware of the Dunning Kruger effect.

Develop the appropriate social skills to ask for help, provide help, and have productive discussions involving the sharing of concerns and ideas between people with varying sensitivities.

Don’t dwell too hard on mistakes, but be sure to learn from them.

Ask lots of questions and, yes, even the “dumb” ones.