It is certainly daunting the amount of information publicly available about LabVIEW these days. There are dozens of white papers, online training, online videos, books, self paced and teacher led courses one can take in LabVIEW, and the list goes on. At the end of the day, LabVIEW is a programming environment; much like its text based counterparts such as .NET, HTML5, Python and others. My suggestion to any new programmer is to work on a solid foundation before diving into the details of the programming environment. This blog will focus on what I believe that foundation to be.
I would say that requirements gathering activity is one of the most important skills to be mastered by great software developers. Anyone looking for proficiency in any programming environment, including LabVIEW of course, needs to understand what requirements gathering is about. As the old saying garbage in, garbage out states, one may write flawless LabVIEW code that is modular, maintainable and expandable. However, if the requirements that drove the design and implementation of the application were not properly gathered and understood, the final product will not meet the end client’s expectations.
One may suggest that it is somebody else’s job to gather software requirements and that the Software developer will only get engaged once this activity is complete. However, programmers who add the most value to their organizations are the ones who can identify potential landmines in the requirements set, flag them and help the software project manager to steer clear from them along the course of the implementation.
My suggestion for a new LabVIEW expert in the making is that the basics of requirements gathering, what constitutes well formed requirements and the use of requirements traceability matrix to be comprehended. There is plenty of literature in the topic available in the web. IEEE has lots of good material that I recommend on this topic.
This will probably trigger some controversy as the purists out there will scream that LabVIEW is not an object oriented programming language like Java, for instance. That is certainly a fact; however, I claim that object orientation provides an excellent foundation for the thought process while developing code that leads to modular, expandable, maintainable and reusable applications.
One may be the greatest expert on the dataflow paradigm of G programming, the basis of LabVIEW, as well as master all the components that make up the LabVIEW environment and still be a poor LabVIEW programmer.
The best programmers will have a feel for what makes the best code structures, even if their job is not necessarily of a Software architect. Much like in the case of project management where Software programmers who have familiarity on how to gather and maintain requirements can help the overall project to stay out of trouble during execution, the same can be said about the software design. Programmers who are well versed in good Software architecture principles can certainly help the Software architect greatly by providing peer review and support as well as flag, along the course of the implementation, potential areas of trouble ahead. This allows for a much more dynamic and adaptable Software team than one formed under a more typical structure with one person is assigned to be the Software architect and the others will simply implement code based off of the design thought out by the architect.
The third of the three vertices of the foundation triangle is usability. On today’s information age, end users have grown accustomed to simplicity when operating Software. Usability had been taken to a whole new level by smart phones and the latest web services. Any Software product of the modern days needs to allow for the same level of simplicity of operation, regardless if the Software is an iPhone App or a test and measurements application. My suggestion for any Software professional is to put themselves in the end user shoes while developing code. This will naturally lead to a much more pleasant user experience for the final application.
When armed with these three high level concepts, the person will have an excellent Software development foundation and is headed towards becoming a LabVIEW expert in very little time.