Grampa_of_Oliva_n_Eden Posted May 13, 2011 Report Share Posted May 13, 2011 I really like this idea. (Maybe because I think I would do much better in that kind of test.) I don't know how practical it would be to do in real-life, but it is much more aligned with the skill set I think of when someone talks about an architect. ... Lot s of good thoughts there. Please excuse my laziness with quoting you. The interactive nature of a review process would help bridge the gaps transfering your solution to the minds of those ding the evaluation. I think it could also help out with the terminology barier (Non-CS types who kick-ass in LV but never took any official cousrse... How exactly do you pronounce "boolean" anyway?) as well. I had been designing application for years before I figured out what "Use Case" was talking about (Yes, I admit it ! I was teaching myself to design and implement software before any college ever concidered including it as course work. I recall having a PHD from Pitt floowing me around asking question while I was fixing his hard-drive. Re: Patterns The intent of Patterns serves multiple roles. Not only do they help us idientify solutions to well defined situations but they also are a form of short-hand that should eliminate the need to explaining them. I hope you find the chance to confront this challenge again some time. I do not feel I am alone in saying; "There is chair with "DAKLU" in the virtual hall of CLA waiting for you." Take care, Ben Quote Link to comment
Cat Posted May 13, 2011 Report Share Posted May 13, 2011 The interactive nature of a review process would help bridge the gaps transfering your solution to the minds of those ding the evaluation. I think it could also help out with the terminology barier (Non-CS types who kick-ass in LV but never took any official cousrse... How exactly do you pronounce "boolean" anyway?) as well. I had been designing application for years before I figured out what "Use Case" was talking about Yes! I kept reading over and over on LAVA about this wonderful thing called "plug-in architecture", finally researched it, and discovered it was something I'd been doing for quite some time -- I just didn't know the fancy name for it. I will admit to some concern over potentially being stuck by not knowing "correct" terminology when/if I ever get around to taking any of these certification exams. Quote Link to comment
ShaunR Posted May 14, 2011 Report Share Posted May 14, 2011 (edited) Yes! I kept reading over and over on LAVA about this wonderful thing called "plug-in architecture", finally researched it, and discovered it was something I'd been doing for quite some time -- I just didn't know the fancy name for it. I will admit to some concern over potentially being stuck by not knowing "correct" terminology when/if I ever get around to taking any of these certification exams. Perhaps we should design a BS Bingo game for LabVIEW Edited May 14, 2011 by ShaunR 1 Quote Link to comment
Aristos Queue Posted May 14, 2011 Report Share Posted May 14, 2011 I've used OO in all my LV applications since 2000, but I agree, I won't use OO in the exam, since without a toolkit it would take me to a bit too long time. I might buy this argument for the CLD, but not for the CLA. You're not having to fill in all the detailed code in the CLA, which means its mostly "Create some basic classes and put empty VIs into those classes." Somewhere between 2 and 3 out of 10 of all CLA exams submitted do use LVOOP as their primary design orientation. I did both my CLD and CLA exams with "no VIs that weren't a member of some class" partially because I usually design that way and then prune back later if it seems prudent, so at the architecture stage it really is all classes, and partially to prove that it could be done within the time. Yes! I kept reading over and over on LAVA about this wonderful thing called "plug-in architecture", finally researched it, and discovered it was something I'd been doing for quite some time -- I just didn't know the fancy name for it. I will admit to some concern over potentially being stuck by not knowing "correct" terminology when/if I ever get around to taking any of these certification exams. The exam doesn't care so much about the terminology as long as you explain what you're doing. The value of the terminology is the shared vocabulary can save a lot of time. If you can just write down "put a standard producer/consumer loop pair here linked by a queue", that's faster than explaining all the bits and pieces. There is a common parlance that develops around any technical field. The CLA exam does not require that you speak it, but it does weight advantage to those who do. And, for the record, since you are reading LAVA, you've picked up that bit of terminology. Anyone who keeps reading like that will eventually pick up the terms. No, but I'd have to give enough details that an over-the-wall developer could implement it. That means describing the details of the MessageQueue class, the Message class, and the ErrorMessage class. It would be worth asking whether the CLA graders would accept a VI that says, "Download standard toolkit XYZ from location MNO and instantiate the following template, then put that subVI here." ... and similar comments. Any of the tools like LapDog, or AMC, or ReX, or the Actor Framework, or the GOOP Toolkit might be usable then. After all, that's exactly the instructions I would give to a developer in some of these cases. I seriously doubt that it would get you off the hook for actually doing the module design and layout of pieces, but if you can broadly mimic the pieces that you want those tools to generate, that might pass examination. Worth asking, IMHO. I suspect it is driven by business needs. Customers want some indication of whether a consultant is worth his salt or blowing smoke, so NI created certification. I'm not particularly fond of the way the CLA is structured, but perhaps that is driven by customers too. If customers are asking for architects to do designs so they can be implemented by lower cost labor elsewhere, then maybe that's what NI should give them. My understanding of the intent of the CLA, and how it is used by managers who look for the certification when hiring, is that the CLA is a leader of CLDs, someone who works a bit faster than a CLD because of long practice, but more importantly, someone who can teach. Not every crackerjack developer can actually teach others how to develop. An architect has to have that skill. "This project is larger than what any single developer can build alone; I'm going to spec out the parts of that system and then farm them out to you guys. If you build them wrong, I'll show you why it doesn't fit with the rest of the system." Over time, a CLA should be able to create new CLDs from untrained new hires. That's my understanding, anyway, and I believe that's why documentation counts so much in the exam. Quote Link to comment
Daklu Posted May 15, 2011 Author Report Share Posted May 15, 2011 You're not having to fill in all the detailed code in the CLA, which means its mostly "Create some basic classes and put empty VIs into those classes." I'm not convinced this will save me a lot of time. As I've learned OOP and applied it to LV over the last several years my classes have gotten smaller and more specialized. Each class is very limited in what it does, often to the point where the functionality a class encapsulates is contained on a single bd. (The LDM MessageQueue class is a prime example of this.) And my custom data types are almost always classes with accessors instead of clusters for reasons I've explained elsewhere. Of course these decisions requires more classes overall, so even though I don't have to fill in all the details of every vi I still have the overhead of creating the classes and all the public methods the class exposes. Somewhere between 2 and 3 out of 10 of all CLA exams submitted do use LVOOP as their primary design orientation. That's interesting. I wonder if that reflects the LVOOP adoption rate overall among intermediate to advanced developers? It would also be interesting to see how much this number changes over time. so at the architecture stage it really is all classes The way I develop apps at the architecture level it is all components (typically a lvlib,) where each component's api is made up of several classes that work together to fulfill the component's responsibilities. Probably very similar to what you do with a slightly different project structure. and partially to prove that it could be done within the time. In practice my apps are heavily multi-threaded and message based because I find adapting to changing requirements and reusing code is much easier using this paradigm. Maybe I need to just abandon the messaging architecture for the CLA and use something more direct, even though I wouldn't do that IRL... The exam doesn't care so much about the terminology as long as you explain what you're doing. The value of the terminology is the shared vocabulary can save a lot of time. Yeah, this is another area where I'm having a hard time figuring out how much is enough. There are implementation patterns I use that address the shortcomings I've encountered in many of the common LV patterns. (i.e. I've written at length about the QSM and it's dangers, so I'd never instruct a junior developer to create one.) Unfortunately for me these patterns aren't widely recognized within the LV community and explaining how and why to implement them to a typical over-the-wall Labview developer is difficult, to say the least. Yet some of the implementation details are important from an architectural standpoint, so I have a hard time sweeping them under the rug. For example, when a component reacts to messages sent by a source it doesn't have intimate knowledge of, I don't ever put functional code in a timeout case because the timeout might never expire. Instead I create separate timer loops to regularly enqueue messages which in turn trigger the functionality that needs to execute. That's an important detail if the component is going to be robust, but over-the-wall developers--especially if they are overseas contractors--may not even be aware of the potential issue, much less know how to resolve it. In my hypothetical organization everyone knows how to correctly build a reactive component so I can focus on the interface instead of specifying implementation details. I've mentioned the SlaveLoop in previous threads. I like using it in combination with the LDM because it presents a well-defined interface to a parallel component's functionality without adding the complexity of dynamically spawning clones. It's certainly not a well-known pattern. It doesn't really translate to text languages so I don't get any help from there. As far as I know I'm the only one who uses it. (Well, me and my hypothetical organization.) How much detail do I have to show or explain to get credit on the CLA? (It's a rhetorical question... I don't expect you to answer.) I guess some of my uncertainty is due to a lack of maturity in LVOOP terminology, which is in part due to LVOOP's relative newness. We're all still learning how to apply ideas and terminology from other OO languages to Labview so one person's "factory method" might be another person's "creator method." My understanding of the intent of the CLA, and how it is used by managers who look for the certification when hiring, is that the CLA is... <snip>... someone who can teach. <snip> "If you build them wrong, I'll show you why it doesn't fit with the rest of the system." That is a sensible take on it, but I don't quite see how the exam's current format promotes that. Teaching is an interactive process between teacher and student. The CLA exam doesn't allow that at all. Furthermore, if I'm going to be teaching a junior developer I need to have a good understanding what he knows and what he doesn't know. The CLA guidelines simply say that someone else will implement the details; they don't give any indication about what these other developers know. Quote Link to comment
Grampa_of_Oliva_n_Eden Posted May 16, 2011 Report Share Posted May 16, 2011 (edited) RE: CS terminology Yes those term would help those being tested if they know them but the time the same in writting the question could inhibit the non-CS types. I would like NI to put together an glossery of all CS terms that COULD be used on a CLA exam. It would include all of those phrases that non-CS type may not be familiar with by name. The CLA Glossery would; Be posted as part of the exam prep matial Included in the CLA application Included as part of the exam packet. I feel it would; help the CS types relax about the terminology Aide in prep for the exam Allow non-LV types to get a better picture of what a CLA has to know. I do not feel it would in anyway decrease the effectiveness of the exam. After all, the exam is not a CS terminology exam. Re: What Aristos said about a CLA training rookies. Thank you! Ben Edited May 16, 2011 by neBulus 1 Quote Link to comment
Jeff Bohrer Posted July 8, 2011 Report Share Posted July 8, 2011 This thread attracted much more attention than I expected and I need to make a couple more comments: First, I was frustrated when ...... ... Now that shows class and integrity! Quote Link to comment
Omar Mussa Posted July 8, 2011 Report Share Posted July 8, 2011 It would be worth asking whether the CLA graders would accept a VI that says, "Download standard toolkit XYZ from location MNO and instantiate the following template, then put that subVI here." ... and similar comments. Any of the tools like LapDog, or AMC, or ReX, or the Actor Framework, or the GOOP Toolkit might be usable then. After all, that's exactly the instructions I would give to a developer in some of these cases. I would be happy with the following change - any free for commercial use code (i.e. free, not just trial mode) software that can be downloaded from the LabVIEW Tools Network should be allowed in the CLA exam. It is really frustrating to experienced developers when they can't use their standard tool-set (and one that is ultimately managed by NI) on the CLA exam. It definitely takes critical time away from creating an architecture when you are compelled to recreate architecture components (or even their interfaces) from scratch, especially when you already use them every day. 2 Quote Link to comment
Daklu Posted July 8, 2011 Author Report Share Posted July 8, 2011 I would be happy with the following change... Quote Link to comment
ShaunR Posted July 9, 2011 Report Share Posted July 9, 2011 I would be happy with the following change - any free for commercial use code (i.e. free, not just trial mode) software that can be downloaded from the LabVIEW Tools Network should be allowed in the CLA exam. It is really frustrating to experienced developers when they can't use their standard tool-set (and one that is ultimately managed by NI) on the CLA exam. It definitely takes critical time away from creating an architecture when you are compelled to recreate architecture components (or even their interfaces) from scratch, especially when you already use them every day. I'm probably in the minority here (again ) but you don't need a software tool-chain to create an architecture. You are only using the LabVIEW IDE as your editor instead of (say) Microsoft word. The NI exams are specifically designed to be challenging in the time frame provided. However. If people feel the architecture for these fairly simple systems require a tool-chain just to realise it. Then perhaps the proposed architecture is over-complicated for the task (KISS). Quote Link to comment
Dan DeFriese Posted July 10, 2011 Report Share Posted July 10, 2011 However. If people feel the architecture for these fairly simple systems require a tool-chain just to realise it. Then perhaps the proposed architecture is over-complicated for the task (KISS). I couldn't agree more. The best thing I took away from the CLD is that my approach was way too complicated for what I was being asked to do. My submission was good-enough to pass, but I didn't complete all the features. I've really concentrated on the KISS principle ever since. Thanks NI! Quote Link to comment
ShaunR Posted July 10, 2011 Report Share Posted July 10, 2011 I couldn't agree more. The best thing I took away from the CLD is that my approach was way too complicated for what I was being asked to do. My submission was good-enough to pass, but I didn't complete all the features. I've really concentrated on the KISS principle ever since. Thanks NI! Quote Link to comment
Daklu Posted July 10, 2011 Author Report Share Posted July 10, 2011 If people feel the architecture for these fairly simple systems require a tool-chain just to realise it. Then perhaps the proposed architecture is over-complicated for the task (KISS). In principle I agree with you. As a practical matter, the simple architectures don't allow for the kind of flexibility that accomodates the changes customers commonly request, so I don't use them and don't practice them. Maybe customers do exist who have well defined requirements and don't ask for changes partway through development. If so, I haven't encountered them. Quote Link to comment
Aristos Queue Posted July 10, 2011 Report Share Posted July 10, 2011 Maybe customers do exist who have well defined requirements and don't ask for changes partway through development. If so, I haven't encountered them. Neither have I. *pointed look at all of you*:-) 1 Quote Link to comment
crelf Posted July 11, 2011 Report Share Posted July 11, 2011 I would be happy with the following change - any free for commercial use code software that can be downloaded from the LabVIEW Tools Network should be allowed in the CLA exam. I don't think that would work (we could put a whole CLA-style project in OpenG ), besides, most of my reuse comes from our internal reuse libraries, which certainly aren't externally available, nor free Quote Link to comment
Daklu Posted July 11, 2011 Author Report Share Posted July 11, 2011 we could put a whole CLA-style project in OpenG It would have to be based on the sample exam to avoid violating NI's privacy terms. In principle the "real" exams could be made different enough to force users to change the structure while still allowing them to use the framework components. Alternatively, they could restrict it to free code available on the Labview Tools Network. besides, most of my reuse comes from our internal reuse libraries, which certainly aren't externally available, nor free Well then, maybe this would provide some motivation to make them so. (Or maybe not... I'm not sure there's a good business case for putting work into making it easier for competitors to obtain their CLA.) Quote Link to comment
jdunham Posted July 11, 2011 Report Share Posted July 11, 2011 (edited) (Or maybe not... I'm not sure there's a good business case for putting work into making it easier for competitors to obtain their CLA.) Well the business case is seeing the forest for the trees. Turf wars over libraries will never help LabVIEW become a mainstream programming language. CLAs should be banding together and working with NI to compete with C# and Java. Part of that work is sharing the libraries that make a bare-bones LabVIEW installation actually productive for large-scale app development. Kudos to all OpenG and LAVA contributors for getting us that far. I know everyone has proprietary libraries and has a right to keep them, I'm just saying that this is an issue that is holding the whole ecosystem back. Edited July 11, 2011 by jdunham 1 Quote Link to comment
Daklu Posted July 11, 2011 Author Report Share Posted July 11, 2011 I'm just saying that this is an issue that is holding the whole ecosystem back. I agree. I'm just saying I would have a hard time making a good business case (with real dollars and cents) for doing it. Regarding competing languages, I've seen C# and VB in places where Labview could be used, but I haven't seen Java used in the test & measurement industry. Has anyone else? Quote Link to comment
viSci Posted July 13, 2011 Report Share Posted July 13, 2011 Yes, be careful with architectures that are more advanced than what is typically submitted. For my CLD, I used a MVC architecture with a subpanel plugin Controller process with messaging to the 'HMI' View. This seemed appropriate since the fictitious system described would in practice be designed with an embedded controller and HMI. I initially failed and assumed, since 2 qualified engineers had reviewed my exam, that I had misjudged the rigorousness of the exam. Despite the 'all grades are final' statement, I contacted NI and it turns out that somehow they missed entirely the 'process' code that was in the solution project. I did finally pass, but clearly understood that no credit was given for the more 'professional' i.e. robust and flexible approach. That to me is misplaced emphasis. It seems to me that if there was more time, most could add comments and better vi descriptions, but understanding the best architecture to use is garnered from experience and skill. 1 Quote Link to comment
Aristos Queue Posted July 14, 2011 Report Share Posted July 14, 2011 Yes watch out for submitted architectures that are more advanced than what is typically submitted. For my CLD, I used a MVC architecture with a subpanel plugin Controller process with messaging to the 'HMI' View. This seemed appropriate since the fictitious system described would in practice be designed with an embedded controller and HMI. I initially failed and assumed, since 2 qualified engineers had reviewed my exam, that I had misjudged the rigorousness of the exam. Despite the 'all grades are final' statement, I contacted NI and it turns out that somehow they missed entirely the 'process' code that was in the solution project. I did finally pass, but clearly understood that no credit was given for the more 'professional' i.e. robust and flexible approach. That to me is misplaced emphasis. Obviously, if there was more time, anybody could add comments and better vi descriptions, but understanding the best architecture to use is garnered from experience and skill. The emphasis on architecture choice is more in the CLA, not the CLD. The CLD focuses on getting the app working and documenting what you did so clearly that someone else can pick up your app and figure out what you did. If two engineers reviewing the code missed the core of your app, I gotta say that does suggest some weakness in the documentation department. On the other hand, I've had days where I "just can't see the Matrix" and no amount of staring at the code makes it make sense. ;-) Quote Link to comment
viSci Posted July 14, 2011 Report Share Posted July 14, 2011 Well actually there were no significant points taken off for documentation. No one ever said the code was obscure. In fact no explaination was given, just an oops and a grade change. You could argue that the naming of your top level the 'VIEW' and the subpanel process the "Controller' in your init state was a pretty big hint. Quote Link to comment
Cat Posted July 14, 2011 Report Share Posted July 14, 2011 Neither have I. *pointed look at all of you* :-) I think LAVA's just been pwnd. Quote Link to comment
Popular Post jaegen Posted August 11, 2011 Popular Post Report Share Posted August 11, 2011 Well, since this is kind of the "Don't use classes in your CLA exam solution" thread, I figured I'd chime in with my $0.02 CDN now that I've passed... I spent a long time thinking about whether I'd use classes going in to the exam. I received strong advice from a few people not to, but also bought into Steven's statements above about his experience. In the end, I decided to go with classes for 2 reasons: Firstly, because I'm now way more comfortable using them than not using them (and I hate the sample exam solution's use of "action engine"-type VIs, with tons of non-required inputs), and secondly on principle - Architects should use classes, and if the examination mechanism can't handle that then it needs to be challenged. My use of classes was quite straightforward, and seemed obvious (to me at least). All of my VIs and controls belonged to a class except my top level VI. The only issues the markers took with my architecture were to note the areas where it wasn't complete or properly documented, which was completely fair (since it wasn't - I ran out of time). I'd say my biggest mistake was getting sucked into too much "implementation", at the expense of completing the architecture. I am certainly grateful for this thread though, since it raised the level of discourse about this issue before I wrote my exam, and Zaki spent a lot of time addressing this in the exam prep session I attended. I would say, however, that using classes probably takes more time. There's a lot of "background" work to creating a good class hierarchy, with icons, documentation, data member access VIs, access scope, etc. If you're confident in your ability to create a non-OOP solution, you might consider this. Time was a huge factor for me, and four hours of hard-core, non-stop LabVIEWery is exhausting. And here's a tip I struck upon the night before my exam: Create a quick-drop plugin to prompt you for a requirement ID and automatically create a "[Covers: XX]" free label. This only took me about a minute (I memorized the steps before the exam), and probably saved me 20. Make sure you turn on scripting in Tools-Options, then copy "C:\Program Files\National Instruments\LabVIEW 2010\resource\dialog\QuickDrop\QuickDrop Plugin Template.vi" into the "plugins" folder, rename it, and edit it to create a Text decoration with the appropriate text. You can even use the "Prompt User for Input" Express VI . Then assign an unused key (hit Ctrl-Space, click on "Shortcuts...", then the "Ctrl-Key Shortcuts" tab, and your VI should show up in the list). For me, adding a "Covers:" free label was only a few key-clicks. Jaegen 8 Quote Link to comment
Darren Posted August 11, 2011 Report Share Posted August 11, 2011 You wrote a custom Quick Drop Keyboard Shortcut during the exam? That's the best! 1 Quote Link to comment
Aristos Queue Posted August 12, 2011 Report Share Posted August 12, 2011 You wrote a custom Quick Drop Keyboard Shortcut during the exam? That's the best! I concur! Good tip! Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.