LabVIEW Idea Exchange

cancel
Showing results for 
Search instead for 
Did you mean: 
CarstenPXI

Beyond Idea Exchange: Turbo-charging LabVIEW

Status: New

In addition to Idea Exchange, I think NI needs to pro-actively look at what it can do to make LabVIEW programming much more efficient, requiring few mouse clicks, less time looking for functions, and most important, be designed in such a way that it lends itself to doing things “the right way”.

I regularly see new LabVIEW users, and most have had no formal introduction to the language.  They are happy with the ability to quickly get things done, and frustrated after a couple of weeks, when their productivity drops to zero or below as the programming style does not scale well. This often results in LabVIEW getting a bad reputation, and in much of academia it is known as the language which results in messy, unreadable, undocumented code. 

I will try to rewind my mind to when I was in that same state, and with the help of a few anecdotes suggest a process that NI perhaps could adopt to improve everyone’s efficiency, and give greater success for first time and experienced users.

When I meet frustrated first time users I have two simple questions:  Do you use TypeDefs, and do you know what a LabVIEW state machine is?  About 90% say no.  Quickly they confess that their programs get overwhelming, are hard to maintain, and do not scale.  They have locals and globals and sequence structures all over the place, trying to make LabVIEW behave.  And it won’t, for reasons you guys well understand.

My proposal is as follows, (and this is a supplement to the LabVIEW Idea Exchange)

Short Term Fix:

  1. NI produces ten Short, well-produced You Tube Videos that give a clear, concise introduction to the language and core things you must know to be efficient and successful.  Distilling the info into “must know” stuff, and heavily promoting this, is vital to creating short term success. These videos should be carefully scripted and reviewed by “pro’s” and beta tested on LabVIEW virgins to ensure that key concepts are successfully presented.
  2. Promote the living daylights out of these.  Have the links in LabVIEW splash screen and Help menus.

Longer Term Fix:

  1. Proactively interview LabVIEW users (and look over their shoulders) at different skill and success levels (including successes and failure).  List the stumbling blocks to efficiency.  Quantify each of these and Pareto order them to start saving LabVIEW programmers time and money.
  2. Measure typical tasks in terms of time and complexity for the different skill levels of users. For example:
    1. How long does it take to create a TypeDef? A cluster TypeDef?
    2. How long does it take to create a new VI, complete with error handling/terminals, icon text and artwork, clean diagram, etc?
    3. Look at the number of mouse clicks, the context shifts between keyboard and mouse, the levels of hierarchies traversed in menus.
    4. Quantify the collective cost of a given inefficiency for the entire LabVIEW community:
      1.                                   i.    For example, if a LabVIEW user waits 10 seconds for the properties page of an Enum to load, and this occurs 50 times in the course of a small project, he has wasted a total of 500 seconds.  Estimate how many users have the same waste: let’s guess 100,000.  Collectively this gives an annual waste of about 14,000 hours or seven man years in the LabVIEW Community.  With a loaded cost for an engineer of well over USD 100,000, this is a waste of one million dollars per year, for just this one inefficiency! i.e. a more scientific approach to user efficiency would give some shocking but useful metrics.
      2.                                  ii.    To beat a dead horse, every LabVIEW second wasted is multiplied by the huge user community.
    5. Start an internal campaign to kill wasted motion and waiting time from the end user.  Why is the iPad so popular? Because it’s so incredibly simple, instead of OK/Cancel buttons for every function and actually so incredibly fast for simple tasks.  At NI Week last year I sat next to a guy with a laptop, and with my newly acquired iPad in hand.  I quickly checked my personal mail accounts, corporate mail, 5 favorite web sites to see the day’s news, and was done within 90 seconds, long before his laptop was done booting.
    6. Establish benchmarks for how much typical activities must be improved from release to release.  
    7. Have program development benchmarks:
      1. Global benchmark: For example; LabVIEW CLD typically finished after 3,5 hours instead of 4 hours, and the year after in only 3 hours.
      2.  Individual task and workflow benchmarks.  For example, how long should an Express VI take to load? Or How long does it take to find the LabVIEW function to programmatically determine the Computers IP Addresses.
      3. Benchmark for learning particular LabVIEW skills and for find LabVIEW information.
    8. Solicit input from the loyal LabVIEW community to participate in this process.

 

Finally, I would like to offers an example or three of how certain questions about workflow and efficiency could  be looked at, and there are many:

  1. Bundle by name for a cluster input of a VI.  Why does this take 5 mouse clicks instead of one.  And why must it be so hard for a beginner to figure out how to do this? (Sorry R & D, I harped about this one 14 years ago…)
  2. Why do I have to traverse four levels of right click menus to find the Property Label/Text or a couple of levels to find the Value Property well hidden in an incredibly long list of properties..  Why not study typical users, and promote the 8 or so most frequently used properties to the top level. 
  3. Type Declarations:  When a front panel control or indicator is dropped, it corresponds to a type declaration in a classic language.  But when I want to create a LabVIEW TypeDef, it gets a lot more complicated.  The CreateTypeDef right click function recently accepted only goes part of the way.  Why shouldn’t the user be able to just type the Label Text and be done with it?  And LabVIEW automatically stuffs it in a control folder, applies changes, etc.  Then let the Customize control function be primarily oriented to cosmetic customization. And if we want to create clusters of stuff, then just drag one control onto another, and LabVIEW automatically creates a container (cluster) for both controls, highlights the cluster’s Labels so that it immediately accepts keyboard entry for the name, and upon hitting “Enter” it is automatically saved under that name and applied.  Or perhaps also have a Control Browser (as a tree control?) where controls are shown in their hierarchy, can be dragged onto each other to create new clusters.   I know this stuff may be hard to implement, but it is the type of things that can be real time savers.

My gut feel is that the mechanics of using LabVIEW could easily be improved a factor 2!!!

 

11 Comments
CarstenPXI
Member

Agree, it is an issue at all levels...once you have climbed one mountain and feel good about it, you discover there are more mountains/challenges ahead.  Mountain climbing has both thrills and challenges.

 

My greatest concern in this thread is the first time users.  I don't see their needs addressed a whole lot in the Idea Exchange, which is a place where more of the hard core nerds hang out...

 

It is of concern for all of us that the beginning LabVIEW user has, what I believe, too high a failure rate.  It gives LabVIEW a bad reputation, and we lose a lot of long terms members of the community, because they give up and drop out. It would be really interesting if NI or some independent party, could look over the shoulders of 1000 beginning LV users, and evaluate how many of them write decent code...

 

Carsten