Today’s post is part of a monthly series exploring areas of focus and innovation for NI software.
“Modern” is one of those ever-evolving adjectives that trendy fashion designers and architects really work hard to be associated with. Software engineers? Not so much. For the last few decades, the words modern and software, in the minds of computer scientists, were by definition synonymous. To the betterment of all, well, to the betterment of people that use software, the industry has shifted seismically in our thinking on what modern software really means.
Starting in the consumer space, the technology triumvirate of web, mobile, and cloud combined with the ideas of user-oriented designers have redefined ALL of our expectations about computer interaction. We have moved from software and computers as baroque and exclusive to simple and ubiquitous for use in most every facet of our daily lives.
Historically, industrial software has safely ignored many consumer software trends because of the core value provided for the industrial user. It was almost a badge of honor to expose complex, unapproachable, and plain ugly software with corresponding reams of printed documentation. If it’s complex and unapproachable, it must be powerful! However, because of beautifully-designed mobile apps, universally available websites, frequent software updates you can download from a wireless device, and cloud-hosted video, photo, and document repositories all running reliably and responsively, those days are over.
Modern industrial software must be user-oriented to deliver productive experiences quickly. While this seems obvious, that is, to put the user first, computer scientists have a harder time with this psychology than most. Thus, it is fundamentally essential to alter the composition of your modern design team to include user-oriented people with a tad bit more empathy and art than your stereotypical scientist. These designers and artists tend to create more visually appealing applications. Again, not to state the obvious, but artists produce better art than programmers. Conversely, programmers produce better programs than artists. When you work on a purely visual language, it just makes sense to have visual designers and iconographers on your team. Together, designers and programmers deliver user-centric, aesthetically pleasing software—the key elements of modern software.
Tablets and smartphones, because of their touch-based direct manipulation, mandate that apps respond quickly and fluidly. In basic touch interactions, if the app can’t keep up with a finger dragging across the device, the app becomes nearly unusable. Humans perceive tracking lag if the app takes more than 1 ms to update during these fluid interactions.
Humans perceive tracking lag if an app takes more than 1 ms to respond to their touch gestures on a touch-enabled device.
Think about how long you have to wait for today’s powerful search engines to return your search results. Not long, right? So why does an app have a wait cursor to load a simple dialog when you can access all of the world’s digital information without one? While not all aspects of an app have to beat the 1 ms deadline for touch or the speed of Internet search, these apps have rightly placed performance as another central element of modern software.
The modern user justifiably expects more from both their consumer and industrial software. I am inspired by these new and, I believe, evergreen expectations. As modern software engineers, we must deliver productive, powerful measurement and automation software that is not only user-centered and visually appealing, but scalable for future features, and high performance.
Do you agree? What do you think are the hallmarks of modern software? Comment below with your thoughts.
Today’s Featured Author
David Fuller has nearly 20 years experience in software engineering and is currently NI’s vice president of application and embedded software. You can’t follow him on Twitter because he’s a software engineer.