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
SteveChandler
Trusted Enthusiast

Wow - that is quite a writeup! Kudos for that.

 

There are probably seven ideas in there that you could post. I agree that navigating to properties can be time consuming. I posted an idea here that could help.

=====================
LabVIEW 2012


AristosQueue (NI)
NI Employee (retired)

Carsten: You and I have talked about some of this in the past, and there's good ideas in here. I know you intend this as a package deal, but would you mind if a moderator splits your long post into a few separate ideas so they can be kudosed and commented on individuallly? Long compound ideas like this one are hard to discuss in the forums, and we find more success if we split them into related pieces. We can leave it as one idea if you wish. Please post with your preference.

tst
Knight of NI Knight of NI
Knight of NI

So example #2 now has an idea which should hopefully help - http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Add-Intellisense-support-to-the-property-node/idi-p/15...


___________________
Try to take over the world!
CarstenPXI
Member

Hi Q, (no pun intended 😉

 

My main point is encouraging NI to work proactively on Turbo Charging LabVIEW.  The other points are perhaps just venting some overenthusiastic pet peeves which illustrate how a proactive approach could help look systematically at LabVIEW usability as a whole.

 

I have no problems splitting up the post any way you feel is appropriate.

 

Cheers

 

Carsten

Mark_Yedinak
Trusted Enthusiast

While I agree that several of your suggestions could improve things I do believe that you are being a little unfair to LabVIEW. One of the biggest complaints I have is that NI in the past stressed how easy it is to write LabVIEW code. While this is true for the most basic pieces of code it set the stage for people to think anyone can pick up LabVIEW and start programming. Handing a programming language to a non-programmer will never be easy. NI has made this much easier for most people. Imagine giving someone with no programming experience C or C++ and expect them to produce even the most basic program.

 

Complex applications require special skills and they take time to develop. There is more to writing an application than simply putting stuff on a block diagram. Your example of the iPad overly simplifies the work a programmer needs to do. The iPad is geared for the end user and while programming languages and environments improve everyday, writing an complex application will never be accomplished with a few  clicks of the mouse. The more intelligence you put into the language (dropping controls on one another automatically creates clusters for example) start to limit what the programmer can do. It makes the assumption that the decisions made in the language are the right ones. LabVIEW is a tool. The real power comes from the person using the tool. While text editors can help to make a programmer more efficient they certainly don't impose design decisions on the programmer.

 

While there is certainly room for improvement I think NI has to do more to promote LabVIEW as a programming language and not merely something for non-programmers. There are lots of negative views of LabVIEW from the traditional C/C++ folks that I think NI would be better served tackling this issue then further making it appear as some simple program for non-programmers to use.

 

 



Mark Yedinak
Certified LabVIEW Architect
LabVIEW Champion

"Does anyone know where the love of God goes when the waves turn the minutes to hours?"
Wreck of the Edmund Fitzgerald - Gordon Lightfoot
CarstenPXI
Member

Hi Mark,

 

I fully agree that programming is complex and requires a high skill level.  My iPad example is not used to belittle this fact, but only to illustrate that any task should be made as clean and simple as possible.  In terms of funtionality of greater depth, the iPad is relatively brain dead, and that is its target market. So at one level, I am addressing the nitty gritty mechanics of LabVIEW wiring etc.  At another level, powerful concepts must be learned, and mastered.  This is where NI has oversold LabVIEW ease of use.   

 

It is out of respect for the thousands of relatively unsuccessful LabVIEW users who have relatively small tasks that LabVIEW could be used to solve very efficiently, that I suggest that NI become much more proactive (with my idea of "core concepts" You Tube videos) which are an extract of some core principles from "The LabVIEW Style Guide", that could help this large group of people be much more successful, without being LabVIEW power users.  

 

A month ago I ran into a student who had spent a month working on LabVIEW as part of a Masters project.  I spent 3 hours teaching him Type Defs and state machines, lent him Bloomy's book, and he came back almost feeling he could walk on water.  It is more of those successes for the "casual" programmers, or the "engineers and scientists" that are NI's target customers for LabVIEW, who don't have the formal CS training, that can help make them so much more efficient, successful and happy!

 

Finally I have some a fair number of C and C++ programmers getting into trouble with LabVIEW because they will not accept that it "thinks" a different way.

 

Cheers!

 

Carsten

 

 

Mark_Yedinak
Trusted Enthusiast

Carsten,

 

I do understand where you are coming from and yes, NI has oversold how "easy" it is to program using LabVIEW. I agree with you that they can do a better job to help non-programmers be more efficient and some of the suggestions you made are very good.

 

I'm also coming at this from the other end of the spectrum. As a CS person I am tired of the bias from the traditional programmers. I get tired of the perception that LabVIEW is not a real programming language (technically G) and that it can't be used for anything other than basic test and measurement. I think NI is missing a HUGE opportunity by not doing more to promote LabVIEW in this area. Granted, they would need to make a few changes. The front panel would need some improvements to be able to design more general applications. They are making some headway in this area. The cost would also need to come down a little I think but this would be possible if the volume of licenses sold increased. I think it would be great if NI worked with colleges and universities to get LabVIEW in the standard curriculum.

 

I also know that traditional programmers can struggle a bit if they have no guidance. Much like what you are suggesting regarding the "how to" videos others could be made to explain dataflow programming. These videos would be geared towards knowledgeable programmers making the transition from standard procedural languages to LabVIEW. People familiar with OOP would have an easier time if they started using LVOOP as well.

 

I think we both have very valid points and in my opinion NI should approach this from both sides, not just the traditional non-programmer audience.



Mark Yedinak
Certified LabVIEW Architect
LabVIEW Champion

"Does anyone know where the love of God goes when the waves turn the minutes to hours?"
Wreck of the Edmund Fitzgerald - Gordon Lightfoot
CarstenPXI
Member

The question of LV as a general programming language is an age old debate.  I think NI has done wisely in not casting itself into that market, because LabVIEW excels in one set of areas (I/O, timing, implicit parallellism and multicore support, driver support etc.) while general languages have another set of strengths.  This does not mean that I don't think LabVIEW is an excllent language, but casting the product into the general language market, has the risk of LabVIEW being dragging into doing things that with time may destroy its currently unique capabilities.

 

My general goal with this discussion is more an optimization of existing functionality and user interface, and not the more existential questions.

 

Carsten Thomsen

 

 

CarstenPXI
Member

I talked with a senior NI manager the other day, and was pleased to hear that stability and efficiency (footprint/load times etc)  is a top focus for LabVIEW. 

 

I still don¨'t how extensively they benchmark the many potential metrics for this (and here I am not talking about "marketing" benchmarks"), but when I did the calculations of wasted time the other day, it was sort of an "A ha" experience for me.   A few seconds here and there become a huge collective cost for the entire developer community.

 

Carsten Thomsen

vitoi
Active Participant

Great idea. Looking at LabVIEW programmers at all levels and seeing where they get stuck and where there are inefficiencies would be a good thing for LabVIEW. Also a series of videos to introduce LabVIEW programming would be good (and paper copies for us that catch the bus to work and like to read).

 

(I consider this as one idea, with a variety of suggestions on how to implement the idea.)