As the IoT expands, agile is the way forward
From smart homes and smarter appliances to automobiles and wearable technology, the Internet of Things (IoT) has gone from a tech buzzword to a tangible and quickly advancing everyday reality. What we used to call "embedded" software—software integrated with physical devices—is now expanding to a myriad of connected products. The depth and richness of the connections that are now possible has changed the market, and the development process, in sweeping and powerful ways. Thanks to agile methodologies, you can handle the demands of the connected device.
The IoT revolution
The effects of the Internet of Things are quickly expanding outward, causing major shifts in the way both hardware and software for connected devices are being developed and released. The IoT revolution is necessitating enormous changes for companies that want to play in this brave new world—and there are many.
In fact, organizations across the globe are looking to leverage the power of the IoT revolution for their products. These aren't just small startups; they're also giants of the industry. At the 2015 Consumer Electronics Show (CES), Samsung CEO Boo-Keun Yoon stated that the IoT is "not science fiction anymore. It's science fact." Furthermore, a report cited by the MIT Technology Review estimates that by 2020, the number of connected "things" will reach nearly 30 billion. Indeed, companies are looking at their products, both new and old, and evaluating how the IoT can improve them. With this increased awareness from thousands of organizations, the IoT is finding a comfortable—and growing—spot in product road maps worldwide.
While there are many benefits to the IoT and the way it is changing the world of embedded systems, it is also shifting the focus of product development. In a survey of more than 500 embedded system engineers in 2010, respondents said that software accounted for more than 50 percent of embedded systems value (and more than 50 percent of the development cost). This is quite significant.
For every new feature or business model change that an organization wants to undergo, there is also a need to adjust the hardware and software behind it, along with the strategy behind the entire project. For example, when companies like Honeywell started venturing into the world of connected thermostats, it changed their entire business. These incredible opportunities developing in the market are pushing many organizations into uncharted territory.
Great expectations for connected devices
One of the most significant impacts of the IoT is that organizations are noticing a change in consumer behavior and expectations. For nearly all consumers, their first experience with a "connected device" started with their smartphone. With this as their first experience with the connected world, users are now demanding that their other smart/connected devices deliver experiences and services similar to those of a smartphone app. This means frequent updates, upgrades, and a slick user experience.
Not only do consumers expect "more," but they also expect it to be delivered faster and faster. The rate of updates for the Internet of Things is increasing rapidly. Consumer expectation of more frequent product releases and feature upgrades puts a great deal of pressure on the design of the physical product itself, the embedded software, and the support infrastructure behind it.
One of the complications of this change in consumer expectations is that, as the complexity in designs increase, product and security flaws are discovered. This is sometimes due to the many manual steps that are often skipped during the development process, the growing complexity of the connected devices, and the advancements by hackers trying to break them (we all remember the case of the connected refrigerator spamming users).
Beyond build it and forget it
In the past, the development process stopped with deployment. Once a product was released out into the wild, that product was finished from a development standpoint. But with the IoT, you can't just ship it and forget it. The growing expectation for post-deployment content and updates means that not only do organizations need enhanced change and management solutions, but they also need to think about testing over an even greater development cycle. All the traditional mindsets of bringing a product to market are changing and extending.
Fortunately, there are solutions to the challenges presented by the Internet of Things. One of the main ways organizations are trying to navigate the IoT is through the implementation of agile development methodologies. While serial and waterfall methods have been widely used for decades, those methodologies are crumbling under the enormous weight of the Internet of Things.
Continuous delivery, automation key to IoT success
Agile methodologies and continuous delivery, on the other hand, are particularly well equipped for dealing with the demands of the connected device. With agile, frequent updates are essentially a requirement. This satisfies the end user's desire for a constantly updated device, the developer's need for a manageable development schedule, and the business requirements to respond quickly to market needs.
Agile methods also support the use of automating the software delivery pipeline: from software builds, testing, and all the way through deployments and product updates. This is useful in the world of connected devices for two reasons. First, it means that many tests (particularly those required for security purposes) can be automated, which leads to a reduced risk of security flaws and to a better, more stable end product. Second, by automating releases of software updates and simplifying the operations that go into deployments, the developer's time is freed up to create new features to improve the product.
IoT demands that developers pick up speed
Another issue engineers are seeing is that, traditionally, development tends to happen in silos, with each team focusing on their specific function to carry the project to completion. However, in the IoT world, consumer expectations are fueling the need for more communication between project teams. The agile methodology truly focuses on collaboration between teams. By harnessing the power of newly available tools—mainly the idea of provisioning, manipulating, and debugging systems virtually—teams are able to collaborate on products in brand new ways. This results in shorter lead times, faster overall development efficiency, and more product updates and releases.
This ability to simulate tests is critical to the performance of agile within the Internet of Things. That is because it is difficult to test a connected device within the context of the full system. But with the power of simulations, organizations are able to automate any function within the simulator, and then fully test it. They can parallelize, scale, and reconfigure as needed, and then send the context of test failures to developers so they can solve the issues at hand. With agile focusing on a more rapid development and feedback loop, developers can more quickly fix bugs and contribute new code that has been tested and validated.
As the demands of the Internet of Things continue to increase and consumer expectations follow suit, it is becoming more and more imperative for organizations to operate as efficiently as possible. Agile methodologies—and continuous delivery—are ideally positioned to address these increasing challenges and difficulties. With the tools and best practices of agile, software developers and embedded engineers alike are fully equipped to jump head-first into the wonderful and profitable world of the Internet of Things.