Thoughts on Training
How does SAS Workshops compare to official NI Training? Here are a few thoughts.

This post has been a long time in the making. I've thought a lot over the years about NI's LabVIEW training and the training I wanted to offer. My goal has never to been to directly compete with NI Training. It's kind of a fool's errand. NI has far more resources than I do and far more credibility within the LabVIEW Community - I mean they invented the language so of course they are well-positioned to teach it. Of course they are going to be top of mind for anyone looking for LabVIEW training as well. So how do I fit in?
An Analogy
I've been working on this analogy for a while. You all will have to let me know how it resonates. It came out of a conversation I had with a certain REAL NI Professional Instructor. He made a remark something along the lines of "The goal of NI Training is not to teach Software Engineering, rather to teach students to be experts at NI products". At the time I remember being very agitated by that remark and the more I think about, the less agitated I am. I've come to realize it is actually an opportunity.
Here's the analogy: I liken NI's Core1/Core2 training to something you might get at car dealership. A Subaru dealer might have a course on Subarus. Students might show up in the showroom and learn about each model and what kind of engines they have and all the various specs. They might get to sit in the seats and learn where the brake and gas pedal are, how to turn the steering wheel, how to change gears, how to manipulate all the lights and wipers and how to adjust the seats. At the end they would be the experts on Subarus.
That class would definitely have some value. If you didn't know anything about Subarus that information would be useful and might beat fumbling around trying to figure out on your own how to turn on the windshield wipers or simply not realizing that they have heated seats. Any good class needs to take into account its audience and what their goals are. If you walked into a Subaru dealership and asked them to teach you to drive and they gave you that course, you would probably be dissappointed. At the end of that class, you would be a Subaru expert and still not know how to drive.
The workshops I am doing are more like driving lessons. In the Subaru course you would learn how to make the car accelerate or turn but not why or when to do those things. Driving lessons would teach you to merge onto the highway, pull or back into or out of parking spaces, maintain proper distance from the cars in front of you and handle various types of curves and turns. You would have someone sitting right there next to you to guide you. There is so much more to driving than simply manipulating the controls on the car. There is a lot of judgement involved. The difference is similar to the difference between being "an expert on manipulating LabVIEW" and being "a software engineer who happens to use LabVIEW to successfully solve problems"
My Niche
I've spent a lot of time trying to carve out my own niche and do the things that NI training is not doing. That's why offering DQMH training works well. NI doesn't have an offering there. NI does have "Software Engineering in LabVIEW" and "Advanced Architectures in LabVIEW". Those course are alright, but the Software Engineering course in particular tries to cover too many topics. In a 2 day course it covers software development lifecycle, requirements tracking/project management, source code control, unit testing. It touches on CI/CD and refactoring. There's not enough time in 2 days to dive into any of those topics deeply. You learn barely enough to have an intelligent conversation about some of those topics and certainly not enough to be successful with them.
So here is what I can offer training on:
- DQMH - I'm a DQMH Trusted Advisor, so I have access to the official training material developed by the consortium.
- Using Git Effectively - It's more than just memorizing some magic commands. Understanding how to troubleshoot when things go wrong (and they always do) is very important. Creating a workflow is important. So is being able to use the difftool to evaluate what's changed. Also using GitHub and GitLab effectively is another important area.
- Unit Testing - I can teach you not just how to write tests, but how to decide what to test, how to make the tests maintainable, and how to write testable code.
- Test Driven Development (TDD) - TDD and emergent design involves several different skills and is a very deep topic. I've got lots of katas for us to practice various aspects of it.
- Refactoring - Making changes to existing code in a safe and methodical manner is a very underrated skill. It is one of the most useful skills you can learn.
- Dealing with Legacy Code - Dealing with Legacy code is so much more than just refactoring. It starts with deciding between refactor and rewrite. Prioritizing which areas to refactor first is also important. Deciding whether or not to upgrade is also a challenge. Getting tests in place can be a big challenge.
- Continuous Integration/Continuous Delivery(CI/CD) - Automating your build and delivery pipeline can (combined with other good technical practices) enable you to dramatically shorten the amount if time it takes to go from feature request, or bug report to new release. This allows you to dramatically shorten feedback loops.
- Ensemble Programming - Lot's of people claim to be part of a team and yet they don't work as a team. I can guide you through learning how to run effective ensembles. If you are still skeptical, give me an hour of your time and I'm sure I can convince you.
- Creating your own scripting tools and automation - Applied correctly tools can save you a ton of time and energy. They can also be very important in the CI/CD Pipeline.
- Object-Oriented Design Patterns - Good design matters. As my friend JB says it "lowers the marginal cost of adding new features." which is fancy speak for it makes it easier to add new features and fix bugs.
- Integrating Python and LabVIEW - You don't have to pick, you can easily use both. I can show you how.
I have workshops, online courses, and learning hours, already put together for many of these topics. Some of these I haven't finished building yet, but I am happy to put something together on demand. If there is something specific that you are looking for that is not on that list let me know. I may be able to throw something custom together and if not, I likely can point you to someone who can. You can use the button to reach out.
Why pick NI?
All that said I still recommend NI training in certain situations.
- If you are brand new to LabVIEW, whether an experienced programmer in another language or not, Core 1 and Core 2 are a great way to learn your way around the IDE.
- If you don't know anything about Object Oriented Programming (OOP) or know OOP in another language it is worth considering the NI OOP course. The last time I looked at it a while ago, it was dated and not all that great. NI may have updated it since then. The reason to take the course though is because OOP is a different way of thinking and OOP in LabVIEW is implemented differently than OOP in other languages and the course is good at highlighting those differences.
- If you really like OOP and want to use Actor Framework (AF), I highly recommend the Actor Framework course. Allen does an excellent job. I could teach AF, but I don't use it all that often and Allen will do a much better job because he uses it all the time (and he also co-invented it for anyone who didn't know).
- If you want to learn all about interacting with hardware, the NI Instrument and DAQmx Courses are excellent. Even though I have an EE degree I do much more software than hardware anymore. I could teach you the basics, but I remember those classes being very good (probably 15 years since I took them).
- If you want to learn FPGA/RT, don't come to me. I have done some, but nowhere near enough to be able to teach it. I took the NI courses many years ago. I can't comment on how good they are and I don't really know of any good alternatives.
- Lastly if you are pursuing any of the NI certifications it is valuable to take the classes. The tests can be very specific in terms of what they are looking for and the terminology they use. I would suggest you supplement the NI training course with a lot of practice. Take advantage of the practice exams. I would also couple that with some coaching. You can do the practice exam and then throw me a few bucks and I'll be glad to do a little mini code review/critique with you.