Home Software What does your software say about you?

What does your software say about you?

The software world is often a fun place. It is very rare that for any given task there is only one solution. For any given task there are thousands of different possible solutions, and it is not uncommon for several different implementations of essentially the same solution to compete with each other. Mac OS X, Linux, and Windows are all very capable desktop operating systems, each addressing the vast majority of the needs of most computer users. Yet people often identify as a "Mac" or "Windows" user as if it were part of their identity (so much so that Apple produced a series of "I'm a Mac" commercials, where a young man fashion was faced with an old and clumsy "PC"). There is a long list of text editors, Web browsers, photo editors, programming languages, and more, but the software you choose to use says a lot about yourself and what matters to you.

All modern test and measurement systems have software components and the software you choose should be aligned with your priorities (or those of the projects/companies). The most effective engineers are able to use different software in order to choose the best tool for the job at the time, while other engineers have a preference for a tool that, even though it might not be the best for the job, actually works. well due to the mastery of the user with it. Then there are the engineers who suffer trying to fit square dowels into round holes. They make bad decisions due to stubbornness, ignorance, or misplaced faith and are often the cause of missed deadlines, poor results, and maintenance problems.
It may help to think of the many software choices engineers face as falling into these three broad categories:
• Fixed function software applications
• General purpose programming languages
• Software that combines elements of both

Fixed function software applications – They are fast and easy to use, but are a restrictive option

By far the biggest and most popular category of software, by far, is fixed function software applications. This type of software is sold or distributed to do a specific job and can only work in a certain way. The user evaluates the different options and chooses one that has the closest set of features to the features they want and has to live with the fact that they won't be able to get everything they want. In the case of office software packages, web browsers, and photo editors, this decision makes a lot of sense.
Millions of people out there essentially share the same goals and one and the same product can possibly satisfy most of their common needs.
The advantage of buying off-the-shelf software (or “off the Internet”, as is more often the case) is substantial. It is much faster to evaluate and buy something that already exists than to specify and create something completely new. As an end user you are protected from software development risks, such as the retirement of an old operating system or the adoption of a new standard. If one of these technological changes occurs, you only have to pay to update the software or change to the provider that best suits your needs. The cost of switching is much less than if you had developed the software yourself and it is generally safe to assume that the vendor can spread the maintenance costs over a large user base. Being one of many users of identical software also has the advantage that existing training materials can be used to quickly get yourself and your team up to speed.
The disadvantage of this category of software is that you are often limited to the features that are available on the market. For mass-market software, such as operating systems and office software suites, there are a number of options with extensible feature sets and impressive quality (or at least offer frequent patches and updates).
For more specialized tasks, the quantity and quality of these options decreases as the size of the market gets smaller. Software vendors have to earn enough money from their customers to cover the cost of designing, developing, testing, and distributing the software, so naturally, tools that can be profitably sold to the most people get the most. of investments, resulting in higher quality. For highly specialized tasks, it may be that no commercially available software does exactly what is needed and parts of the process may eventually have to be filled in with manual labor.
This can be very frustrating when you take into account the increased costs, errors, and general discomfort that occurs when you have one person doing what the software should have been helping you do in the first place.
Compensating for the shortcomings of inflexible or incompatible software is one of the biggest hidden costs in today's computer-dominated workplace. How many man-hours of technicians have been wasted in vain trying to convert data between proprietary formats or manually sequencing operations that should be easily automated?
Compared to operating systems and office software packages, the test and measurement software market is relatively small. This means that there are not a large number of high-quality software products available that can satisfy every need.
Add to this the reality that many scientists and engineers are, by their very nature, researching or creating things that no one else is doing, further reduces the likelihood that there is a high-quality commercial software option out there that can run away with it. to buy to do the job.

General Purpose Programming Languages ​​– Powerful but time consuming

When the software that is needed does not exist, many people choose the method at the opposite end of the spectrum and write their own software. This is a safe way to get the exact functionality you need without relying on an external entity to provide it. The right custom software can also provide a competitive advantage, resulting in cost advantages and ultimately more profit in the long run.
Once you know exactly what features your software needs, the next step is to select a programming language and acquire or develop the skill set needed to use that programming language.
There are many different programming languages ​​that can help in this effort, ranging from long-proven languages ​​like C and FORTRAN, to more popular languages.
Recent ;s, such as C#, Java, and Python. Possibly any of these languages ​​could be used to write any program; since, they all support the elementary operations necessary to create the most advanced functions. Programming syntax and runtime features such as automatic memory management are usually the defining features of a programming language, but surprisingly most people choose a language based on another set of criteria, e.g. : “How much code will I have to write?”, “How powerful are the tools that support that language?” and "To what level do I know that language and its tools?"
The question of “how much code will I have to write?” is a great question to ask when evaluating a language. No matter how concise a language is and how productive the tools are, there is nothing better than being able to use code that has already been written, tested, and accepted as valid for the job.
Many a C programmer has wasted time over a memory leak that wouldn't have happened if they had been using a language like Java or C#, which includes a memory manager as part of the runtime. Similarly, there are C# and Java users out there who spend weeks translating an instrument's programming manual into a reusable driver – a task that might have been unnecessary if they had chosen another language. When selecting a language, the primary goal should be to choose one that minimizes the amount of time spent writing code that does not add value to the organization. Choosing a language with a lot of the code in question already written might be the best option.
The tools that exist around a language are also an important consideration when choosing a development language. For example, an editor that helps prevent writing buggy code by providing tips at edit time and displaying more information about the functions being used minimizes time wasted debugging.
Integration with source code control and testing frameworks facilitate the most rigorous single or multi-developer workflows.
WYSIWYG (“what you see is what you get”) graphical user interface tools can save a lot of time creating user interfaces. Also, having a set of tools that will save time when performing ongoing maintenance is another concern.
Some tools are better than others and support the latest technologies such as new mobile and web operating systems. The wrong language and tool choice can leave a developer struggling to update needed features and port them to the appropriate operating system as their organization's needs change. Instead of riding with the technological tide, you can remain anchored to development decisions made in the past and continue to forgo precious development time to maintain software that has become a critical part of your infrastructure.
Familiarity with the language is the top reason cited by engineers when asked why they chose particular software for their latest application. While it's understandable that people work with what they know, it's a bit worrisome that suitability for the job isn't the main concern. The reason for this is multifaceted. For many there is an element of fear of the unknown.
After working with a language for a while, you get a good idea of ​​its strengths and weaknesses and get practice on its shortcomings. Switching to another language leaves one open to falling victim to its limitations. For others there is a natural aversion to having to go from being a relative expert to a state of vulnerability by becoming a "novice" again. Perhaps the most likely cause of preserving the status-quo is the drive of organization and politics. Having to convince management that there is a better solution to a unique problem is often more work than using the wrong tool for the job.

The best of both worlds – Harnessing and scaling

Combining the advantages of prewritten software with the flexibility of custom software in an organization that is agile enough to accommodate both is the most productive method for most scientists and engineers. There are tools that facilitate this method.
The domain-specific high-level languages ​​used in LabVIEW and MATLAB® MathWorks software combine specialized programming syntax with extensive libraries of useful functionality. For example, the LabVIEW system design software is a programming tool focused on measurement and control applications that interact with I/O hardware. LabVIEW's graphical programming syntax is well suited for handling the parallelism and real-world timing inherent in this type of application. Similarly, built-in analysis libraries and hardware device drivers are designed to save engineer time compared to those who have to implement or piece together a solution with general purpose tools and disaggregated sources.
These market-supported, domain-specific languages ​​allow you to realize the benefits of custom software without having to pay the full price of developing from scratch with a general-purpose programming language.
The narrow focus of these tools allows them to provide more specific value to their users by focusing on the right set of libraries and making design decisions with their specific users in mind. Although these tools can potentially cost more money at first compared to free and open source operating systems, the vendors that provide tools such as Microsoft Visual Studio and Apple Xcode do have a silver lining, there is a company on the other side of the product that relies on that you make continued use of their product to earn money. This means they have a vested interest in your success.
Commercial tool providers are also more motivated to offer the latest technologies in such a way as to preserve the existing investment that has already been made in purchasing the tool from the provider. This typically translates to less churn and more isolation from potentially disruptive changes, such as forced operating system upgrades (in other words: the recent retirement of Windows XP) and hardware changes.
are underlying (in other words: 64-bit processors are phasing out 32-bit ones and the emergence of ARM processors).
Sometimes even a domain specific programming language requires too much investment for development and more methods are commercially available. For example, NI offers application software for test sequencing (NI TestStand), real-time testing (NI VeriStand), and online data analysis (NI DIAdem).
Each of these tasks provides enough common functionality to make it commercially viable for a vendor to offer a product that meets the most common market needs.
What separates these tools from fixed-function software is that they can all be extended and have custom functionality attached to them. This method based on pluggable functionality is where you can add the great value of custom functionality specific to your needs (i.e. the test procedure for your latest device), while still allowing it to be reusable a well-implemented function as a test sequencer.

What to do next?

It's important to remember that no single software tool is the right answer to every possible task. It is up to you as an engineer or engineering manager to select the most productive software method, whether it is purchasing ready-made software, developing a solution from scratch in a specific language, or mixing and matching pre-built components with high-level languages ​​and software. expandable application. Being aware of options and open to change will allow you to take advantage of the best that is available and hopefully gain an edge in an increasingly competitive marketplace.