Orange County LabVIEW Community

cancel
Showing results for 
Search instead for 
Did you mean: 

Comments on my CLD test

I took my CLD test a week or so ago, and figured I'd post my thoughts about it since it may help someone else. I won't say what the actual application was, since NI does not allow it, but I'll make some generic comments and try to show where I made my mistakes. I won't know if I passed for a week or two, but based on the scoring system I think I will likely be a couple points short. I only had the application 25% functional at best, although all the basic framework was in place. I also made two errors early on that cost me too much time and kept me from having any chance of finishing. I suspect I only got 5 points on functionality, and maybe 12-14 on Style and 8 on documentation. That would put me at 25-27 points needing 30 to pass.

My first comment is that time management is critical. Basically, I just ran out of time (which is what I suspected would happen) so the first thing people need to take from this is that it's going to be nearly impossible to finish. Focus on getting as much of the application functional as possible and get as much documentation done as you can to boost your points. Stub the more difficult sections of code and get the easy stuff done first. The application was about 50% harder than any of the examples, so if you can't do every example in three hours or less, then you will likely not get the full 15 points for functionality and may even get half of that or less.

Second, take the most difficult concept from each of the examples and roll them into a single application to practice with.  The Security System used an event structure to handle all the front panel events, plus had a logfile. The Car Wash used a pauseable timer in a state machine. Put the two together, and bury that state machine in the consumer loop of a producer/consumer pattern that needs to initialize itself from a configuration file. To do it, you need to have a timeout case on the event structure in the producer loop that will ping the consumer periodically and allow it to check the timer. This is where I made one of my critical errors. When you setup the consumer loop, you need to handle the events from the producer in the context of the state machine. That means you have two case structures, one inside the other, to handle all the possible combinations of State and Event. The mistake I made was making the State case the outside one and putting the Event case on the inside. There were many Events that could be ignored depending on the State, so it made a lot more sense to do it the other way. I didn't figure this out until I was knee deep in the code however, and with the 4 hour time limit I couldn't go back and fix it.

Third, make sure you understand all the basic concepts completely, including the subtle things.  For example, make sure you understand all the implications of auto-indexing two arrays into a for loop. I was passing an empty input array into a for loop to use as the type definition for a bundle-by-name. Because the size of the array was zero, the loop never executed even though the second auto-indexed input was an array of 4 items. It was a dumb mistake that cost me a fair bit of functionality points since I didn't see the bug until it was too late to troubleshoot it.

Finally, don't even look at the solutions to the practice examples. None of them use a producer/consumer design pattern and it's almost guaranteed you will need to use one for the real test. Instead, try and modify the examples to make them require a producer/consumer by adding functionality. For example, modify the Car Wash to require that it repond to the vehicle positioning switches within 10 miliseconds and have it load the car wash types and sequences from a configuration file instead of hard coding them.

That's all I can think of at the moment.  Hopefully this will help any of you that are thinking of taking the CLD. Feel free to email me if you have questions, but I won't talk about any of the specifics of the exam since I'm not suppossed to. One final thought is that when I went home, I sat down and coded the application from memory and it took me 7.5 hours to get it completely 100% functional. And that didn't include documenting it. I think it's one of the hardest exams I've ever had to take.

Jim Smith

Message 1 of 8
(14,389 Views)

Hey Jim,

These are great candid thoughts and seemingly great advice.  I have not taken the exam but you seem to have distilled out some very practicali factors to consider when preparing for and taking the exam.

Thanks for posting, I'm sure this will be helpful to many as they look to take the exam and search for helpful advice!

Best,
JLSx
Sixclear
VI High - LabVIEW Programming Video Blog
0 Kudos
Message 2 of 8
(6,469 Views)

I finally got my test results and as I suspected, I failed.  I had 12.5 out of 15 in Style, 9 out of 10 in documentation, but only 3 out of 15 for functionality. Basically, I just didn't have enough time to implement a major part of the logic. I'm not sure what else I could have done to prepare.  I ran all the practice exams dozens of times until I was doing them in my sleep and could finish all of them in 3 and a half hours or less. I took the Intermediate I and II course. I reread the entirety of "LabVIEW for Everyone" from cover to cover. If any of you have suggestions on what else I could have done I'd love to hear them. In any case, I hope some of you can learn from my failure and be better prepared to pass.

0 Kudos
Message 3 of 8
(6,469 Views)

After a lot of analysis and some very good conversations with the good folks at NI, I have figured out that my biggest mistake was in choosing to use a Producer/Consumer as the starting design pattern instead of a simple state machine. I went back and redid the code using the simple state machine and I was able to finish the application in 4 hours. It wasn't 100% funtional, but it was so close that it likely would have passed. The lesson learned for me is to make sure I select the simplest design pattern that will get the job done. While it would bother me to sacrifice the extensibility of a Producer/Consumer design for a real application, it's necessary when taking the CLD to take the shortest and easiest path to getting the job done. I'm retesting on the 16th of December, so hopefully that lesson will be enough to help me pass.

0 Kudos
Message 4 of 8
(6,469 Views)

Thanks for the advice.  I'm taking the test in 2 days, and have been very disappointed in the examples.  I shouldn't have wasted so much time

on projects and classes.  I will spend the remaining time on refining my "basics".  Again thanks, and good luck on the 16th.

0 Kudos
Message 5 of 8
(6,469 Views)

Hey Jim,

This and your other post with your extended Traffic Signal program are the kickoff to an excellent discussion concerning the CLD.  It sounds like you and I (and probably many others) had duplicate experiences.  It seems to me that despite all the emphasis on "style", you are actually going to have to do things that you might not ordinarily do in order to make up for the functionality.  I haven't got mine back yet, but I am expecting probably a worse score than yours.  About 2.5 h into the exam I realized I had made a fatal mistake concerning architecture (I too chose producer-consumer although I initially played with a pure state machine) and can not stress enough how the choice of architecture at the beginning has a major impact on the final results in the end.  Despite everything we have been told, if you find yourself doing a lot of juggling in order to get a program with multiple while loops functioning (whether it be producer-consumer or not), the examinee may want to think of a simpler architecture.

The important thing to note here is that BEING ABLE TO DO THE INDIVIDUAL PRACTICE EXAMS IN FOUR HOURS IS NOT SUFFICIENT PREPARATION!!  The practice exams are considerably light on detail, so be forewarned!  My exam is burned into my brain at this point as I have mentally gone over and over it, so I will be trying to go over it again using the architecture that I initially chose.  However, there is a major shortfall in the examination and maybe it would behoove everyone if a group were started for examination preparation in which those who so enjoy can come up with a sufficiently complicated example while others can examine and comment on the results of others.

Anyway, those are just some of my thoughts.

Cheers, Matt

0 Kudos
Message 6 of 8
(6,469 Views)

Hi Matt,

I feel your pain regarding the choice of architechture. After my first attempt failed, I got in contact with the one of the folks at NI that conducts the exams. He was extremely helpful and when I explained how I just ran out of time due to my choice of a producer/consumer, he agreed to give me a second shot at the exam. When I retested, I choose a pattern that was easier to code quickly (a simple state machine) and managed to pass the exam.  My solution was only about 75% functional, but I was careful to get all the easy points by documenting as I went and by following the style rules that NI encourages people to use.  One trick that helped a lot was allowing myself a few minutes at the end to run the VI Analyzer. It turns out the VI Analyzer is one of the tools they use to grade the style portion of the test, so correcting the discrepencies from the analysis likely gained me a couple more points. I ended up passing the test with a score in the mid-80's and while I still think I should have done better, I am happy to have passed.

One other note for anyone considering taking the test.  The CLD certiification carries considerable weight in job interviews for LabVIEW related positions, and is a big reason I am working today. The test was a real bear to pass, but all in all, the experience made me a better LabVIEW developer and I firmly believe it was worth the effort.

0 Kudos
Message 7 of 8
(6,469 Views)

Thanks, Jim.  These posts have been excellent and I wish more would share their experiences with these exams (good AND bad) so that we all have a better idea of what to expect.  I am 99% certain I failed and this I attribute this to my cavalier attitude regarding my awesome LV skills (demonstrated clearly when I practiced on the exams provided).  I think that if I had looked a little closer at all of your comments, I would have spent a little (read: lot) more time prepping and not wasted my money.  Now I know what to expect so hopefully the next go around won't be so horrific.

Once again - thanks Jim for putting the effort in on posting this stuff.

Peace, Matt

0 Kudos
Message 8 of 8
(6,469 Views)