The hype around the Internet of Things is at its peak. Should you bother learning the skills developers and testers require in this new field, or will it soon become just another trend that's fallen out of favor? Jon Hagar makes a strong case for why the IoT will be relevant even after the clamor dies down, and why its associated skills will serve you well no matter what.
As software professionals, we are bombarded with invitations to web seminars and links to articles about the billions of devices and trillions of dollars in sales for Internet of Things (IoT) and mobile devices. According to these “experts,” IoT and mobile devices will equate to many new job opportunities for developers and testers.
According to Gartner’s most recent Hype Cycle for Emerging Technologies, IoT is at the peak of hype, while some mobile enterprises are just maturing. However, look further in the curve, and you will see the upcoming “disillusionment” with yesterday’s and today’s hyped ideas. Does this mean technical people should not invest their time in trendy fields such as IoT and, to some extent, mobile? Should we instead stick to developing and testing for our trusty PCs and IT systems?
Probably not. The tech industry has marched onward and upward for all of the thirty-five years I have been in it. Consumers and users want new tools and capabilities. While some may claim testing is dead and development will be done by machines, both the cyber and the physical worlds will always need creative developers and thinking testers.
The interesting thing about the IoT is that it blends the cyber and physical worlds and introduces new patterns of hardware and software development. Developers will need to expand their programming skills as well as their understanding of solutions needed for the real world, while testers will need technical skills to address finding bugs and providing information about the software and its tangible effects. Teams will not be able to specialize in just hardware, software, or systems, but a merging of all three. This blend of cyber and physical is what some are calling the fourth industrial revolution, or Industry 4.0.
In the course of mankind’s technical history, first we had the physical world of tools. The Industrial Revolution brought mechanized production, which changed manufacturing, the economy, and people’s lives. The twentieth century saw the birth of computers and information technology, which are now present in almost every facet of our daily existence.
Now, our mobile and wireless communication has matured to the point where a full integration of cyber and physical systems is possible. We can tie embedded sensors, controllers, and microprocessors to mobile devices and communicate with IT and cloud systems. Further, we can put small, highly sophisticated chip devices in almost any product. These innovations undoubtedly have some hype, but I feel certain IoT will continue to grow.
What Does This Mean for Software Developers and Testers?
This merger of cyber systems and the physical world brings with it the problems of each of those environments. We are still learning the nature of these systems, how to build them, and how to test for the bugs within them, and we will continue to find new ways to make IoT devices and networks fail. Working in this brave new industry requires tech professionals to not only learn traditional development and testing skills, but also understand concepts such as hardware, system, and integration testing of these advanced devices. There are also unique challenges in IoT systems, such as timing, environment, battery allotment, sensors, controllers, and so forth. Integration has always been challenging, but it hasn’t been anything like what is coming at us with new IoT technologies.
For me, IoT devices fall into three basic groupings: industrial devices, consumer devices, and mixed middle devices. Industrial IoT will drive workplaces, factories, infrastructures, cities, states, and the business world. Consumer devices will include wearables, personal communication, entertainment, and direct human usage devices. The middle devices will be used by both the consumer and industry.
Often, it will be hard to determine if a device is consumer or industrial. For example, is a medical device that puts insulin into a person’s body and reports the drug usage to a company a personal or industrial IoT device? Both groups get big benefits from the device. What bugs should the consumer worry about? What failures should the drug company be concerned with, and where will the liabilities lie for the companies? The bottom line for companies, consumers, testers, and developers is that there will be many opportunities, both positive and negative, in the IoT world.
As you think about the challenges of developing and testing IoT systems, you should consider patterns—general templates you can use in these new environments that can be tailored to get specific solutions. Here are my current top ten test attack patterns for developers and testers.
- Teams need test labs, tools, and sandbox environments.
- The diversity of hardware, software, and data requires combinatorial test attacks to address fragmentation and sampling issues.
- Teams need to address attacks for hardware-software interface and connectivity bugs.
- Teams need to test for communication and integration bugs across the system, including other devices, routers, network communications, server systems, and smart devices.
- Data analytics from the field and development are needed to support testing.
- Teams must test sensor, controller, and resource limitation problems, including power, memory usage, performance, safety, and reliability.
- Developers must use early lifecycle attacks, such as static code analysis, data testing, code logic coverage, and hardware component tests.
- Model-based testing or supporting test automation is needed for critical, high-risk IoT devices to support verification and ongoing device-software checking.
- Testing of third-party, non-developed software needs to be considered, or the use of trusted components needs to be employed.
- Security and privacy testing must be ongoing to assure users that IoT devices are safe and operating in a trusted, private domain.
Testers and developers will still need traditional testing skills, approaches, and techniques. But in the age of IoT, they will also need to learn creative problem-solving and new languages. Teams will need a solid understanding of data analytics as well as planning, strategy, design, iterations, implementation, testing, and reporting. There will be no “best” practice for evolving the IoT-mobile industry; development and testing will range from the small start-up companies with some hacked code and no testing, which won’t hurt anyone, to large teams of hardware, software, test, and QA people producing safety-critical cyber-physical devices.
Where Do We Go from Here?
So, is the Internet of Things just a bunch of hype? I don’t think so, but I do think the IoT must pass through the disillusionment stage first before we can really start to see its potential. I suspect there will be a lot of new products, projects, and companies with demands for developers and testers. IT people will need to learn more about hardware and embedded computers, and hardware companies will need to learn more about software, mobile, communications, data analytics, and complex integration schemes.
Teams working in this industry also will have to understand hardware, human factors, software, data analytics, networks, IT, embedded technologies, the cloud, testing, and systems. These diverse skills mean a number of people will be needed with the ability to communicate across the disciplines and not get trapped in silos. Companies will be tempted to focus only on a few of these fields, but their products will suffer. There will be winners in the IoT to be sure, but there probably will be more losers.
As a developer or tester, you should want to hedge your bets. Working in the high-tech industry means you should always be learning and practicing new skills. This means going to conferences, reading books, and reviewing relevant blogs and websites just to stay current. It’s an exciting time in the tech world, and if you want to be part of it, you need to keep up. New things are coming in the domains of mobile and IoT, and the skills you develop will be useful long after the hype is over.
Explore the IoT Dev + Test and Mobile Dev + Test conferences program for more information on embedded, IoT, and mobile development and testing learning opportunities.