Sunday, February 8, 2009

LabVIEW Certification: Preparing for the CLA

NOTE: As of July 2010, the CLA Exam has changed, rendering most of the information in this blog post obsolete. For more information about the changes, see my Changes to the CLA Exam post.

When I embarked on the LabVIEW Certification journey, I knew I was going to go all the way. So after I passed the CLD, I immediately began preparing for the Certified LabVIEW Architect (CLA) Exam. According to the CLA webpage, there are several areas of competence associated with the exam, including "mastery in architecting LabVIEW applications", "effectively utilizing project and configuration management tools", and "experience of approximately 24 months in developing medium to large LabVIEW applications".

One of the things I discovered almost immediately was the simple lack of CLA preparation materials. The CLAD had the webcast, the prep guide, the LabVIEW Fundamentals Exam and at least one practice exam that I could find. The CLD had the webcast, the prep guide, and three practice exams. The CLA, however, had no practice exams available. In fact, the only preparation material available on the NI website is the CLA Exam Preparation Guide. I highly recommend reading this preparation guide, as it is the only available "official" source of information on the exam. Also, after taking the exam, I now understand why there isn't much in the way of preparation materials...more on that later.

So once I read the CLA prep guide, I knew the test would consist of a written component worth 40% and a coding component worth 60%. The written component of the test consists of short-answer questions pertaining to project planning, and the coding component consists of developing an architecture for the actual application.

Now one of the other things mentioned in the CLA prep guide was that the LabVIEW Advanced course offered by NI covers a lot of the material tested on the CLA. Since I work for NI, it was easy for me to get my hands on a copy of the LabVIEW Advanced course and check it out. Sure enough, it covered a lot of the topics listed in the CLA prep guide. I don't think reading through this course was a crucial step in my passing the CLA, but it certainly didn't hurt.

Honestly, the best preparation I did for the CLA was the simple act of being a full-time LabVIEW developer for the past seven years. Topics like writing specification documents, source code control, and designing architectures have simply been part of my job. If you have been part of a multi-developer LabVIEW team for any length of time, then a lot of the topics in the CLA exam should come naturally to you. If you're brand new to LabVIEW, or if you've only been developing small-scale applications, or if you've been flying solo without a formal software design process, this certification may not be for you. There's not really any way to "practice" these sorts of things right before the test, which is why it makes sense to me (now) that there isn't much prep material available. Nevertheless, I offer the following tips for anyone attempting the CLA. These come from my own personal experiences in preparing for and taking the exam:
  • Since the written component of the CLA is worth 40% of your grade, and the coding component is worth 60%, I recommend spending your time in a similar proportion. My personal times ended up being 1.5 hours on the written and 2.5 hours on the coding.
  • For the written component of the exam, many of the questions ask for a certain number of short responses, i.e. "Give 3 problems you might encounter if...". For these, I recommend a bulleted list of one sentence (or maybe two) for each answer. Keep the answers concise. Writing a paragraph for an answer that could be written in a sentence doesn't get you any extra points, and only wastes precious time (and for me, time was very precious...see below).
  • In the coding component of the exam, you should pretty much follow the same guidelines you followed when writing the code for your CLD exam (see here for my advice on the CLD). Document your code, use good style, know your design patterns, etc. etc. Obviously you probably won't have as much time to do things like document every front panel control of every VI you write, but do the best you can given the time you have.
  • Speaking of time, here is the most important advice I have to offer. Unlike the CLD (which I finished in 2.5 hours), I was severely time-crunched on the CLA. To give you an idea how time-crunched I was, I realized when I had 45 minutes left that I still had about 2 hours worth of coding to do. Oops! It turns out that I did not heed the advice given in the CLA prep guide, which was that I was not supposed to write a fully-functional application! This is very, very good advice. The application specifications given in the CLA for a functional application would be relatively easy for me to about 6 hours. Unfortunately, I had 2.5 hours to write code for the CLA. And as I so often do when I write LabVIEW code, I got into "the zone", where I started writing lots of subVIs to implement specific, non-essential details of the application, before I had fully completed the overall architecture. When you take the CLA, do not do this! Focus on the architectural patterns, focus on the design for your plugins, focus on the data sharing mechanisms you use, but do not just start fully implementing non-essential subVIs! For example, I spent about 30 minutes writing a nifty little algorithm for part of my plug-in architecture. This was a bad idea. What I *should* have done was write the interface for the VI (i.e. the conpane and typedefs), and included a 1-2 sentence comment on the diagram describing how the algorithm would work. Now thankfully, I'm a pretty fast coder, so once I realized I was running out of time, I kicked it into hyperdrive and got some code written that (apparently) was passable. But I wouldn't wish that 45 minutes worth of monumental stress on anybody! Not even a text-based programmer!
So in summary, if you're taking the CLA, good luck! Make sure you've actually architected something in LabVIEW before. The LabVIEW Advanced course has some good stuff in it if you're looking to go that extra mile in preparation. And above all, your application architecture should trump any coding details you may be tempted to implement. Trust me on that...


  1. Darren,

    Thanks for taking the time to put this together! I'm taking notes...
    Prep: read the exam preparation guide, take / read Advanced course
    During: watching the clock, provide short descriptive answers (fast), and architect not develop (fast).

    (also developing for 7 years... hope that's long enough! Anything you would recommend to master Requirements Gateway? Never used it... Most customer's don't seem to have a spec -- just a napkin and pen...)

  2. Hi Jason,

    I tried out Requirements Gateway very briefly a few years ago, but I do not currently use it for my requirements tracking. We have a pretty well-established process in LabVIEW R&D which ties our specifications and requirements to design reviews done with technical experts within the department.

  3. Hi D Natt,

    I wish you'd written that 5 months ago!!! ;)

    I myself had two cracks at the CLA exam, the first time narrowly failing, the second time passing. On the first attempt (June 2008), I studied the LabVIEW Advanced Course from 2006, which offered a lot of new, and at times confusing, ideas. My first attempt, I focused too much on programming, and didn't give enough weight to the written section.

    On the second, and successful attempt, I studied the 2008 version of the Advanced course, and I can safely say that this version was MUCH better! NI has simplified a lot of the concepts, and fine-tuned it substantially. The second time around, I also planned on your approach 1.5 hours for written and 2.5 hours for coding, which saw me in good stead.

    Either way, this is a good article, and I will be recommending it to colleagues as required reading before sitting the CLA!


  4. Darren,

    Spot-on advice I wish I'd had going in to the CLA exam during NIWeek 2007.

    I've been a LV developer since '97, passed the CLD easily in 2004, and though I've been pretty much a solo act throughout, I think I've developed decent instincts over the years in the SE area. Design patterns, source code control, etc. are all part of my daily existence.

    The failure at CLA still smarts. I didn't 'get' what they were looking for with some of the open-ended questions, and ran out of time trying to implement rather than architect...
    I may sit for the exam again someday, but it's not a job requirement, so I'm in no hurry.


  5. On the written portion of the exam. I highly recommend reviewing the Intermediate I manual. It may include some level of detail on the written portion that is not covered in the LabVIEW Advanced I course.

    (Am CLA and LV Adv Instructor for last 5+ years)