Had a jolly, but exhausting time at GDevCon#1 and it felt like we pulled it off! but I get a positively biased view because I'm huge, loud and scary looking. Allow me to thank the GDevCon team, truly humbled to have them behind the idea.
Also our amazing presenters, sponsors and the venue, they were all essential to an excellent new event. Vids and Piccies coming soon!
This article attempts to clarify a position I've increasingly taken and that is ..
There are 2 types of LabVIEW programmers.
These programmers have very different design perspectives. First lets look at what makes a good API.
After a bit of research an API needs to be ...
Scaleable, Extensible, Reusable, Robust, Modular.
We've discussed SMORES and I've pushed back on it a bit, saying that some of this wasn't that applicable to me.
At SSDC we don't do APIs/Tool-kits or reusable libraries we do projects, whereas within NI I think the majority of LabVIEW written needs to follow these rules. The vast majority of the training on LabVIEW comes from within NI and I think from a design perspective this means that the rules for good software design are therefore biased towards tool-kits.
So what is important for people who design projects, well here's my list....
Debuggability - I want to use every tool in LabVIEW to help me fault find.
Flexibility - I want to rapidly modify and rebuild my code, because these modifications usually happy at my customers site, when time is a rare commodity.
Readability - My solution to the problem has to bear a good relationship to the problem. I should be able to read this solution in the block diagram.
Configurable - I want to be able to change my application, without changing the source-code.
Efficiency - I don't want my computer (or my customers) to struggle to run my code
Many of the design traits required for APIs are really unimportant at the project level. So picking on re-use for example : it's one of the first things I sacrifice if it affects any of my primary requirements.
Oh and I think frameworks have another set of requirements too!
In short I think we need to consider what we're being taught and the perspective of the people teaching it. This might also be some sound life advice, you can have that for free.