As mass adoption of Internet-connected products continues to grow, so are consumers’ expectations. Users expect frequent product releases and feature upgrades, putting a great deal of pressure on IoT leaders to continually innovate on the design of the physical product itself, the embedded software, and the infrastructure supporting it.
While agile development has been widely embraced in the world of web development, many IoT products are still being developed in antiquated ways. However, if you do get it right, you’ll have an enormous advantage because it’s hard to be a pioneer. In this blog post, you’ll learn the benefits of agile development for IoT and learn how to apply agile best practices to your IoT initiatives.
Common Pitfalls of IoT Development
The Internet of Things (IoT) sits at the intersection of the digital and the physical, dramatically extending the reach of technology. In fact, McKinsey reports that IoT could generate up to $11.1 trillion per year in economic value by 2025.
With all of the hype along with the fact that opportunities for IoT extend to most industries, it’s natural to expect to see mass deployments all over the place. But in reality, the adoption of IoT is off to a slow start. The reason? It’s really hard. In fact, Gartner predicts that 75% of IoT projects will take twice as long as planned.
The road to the future of IoT is littered with the wrecks of projects that sputtered out along the way. Thankfully, there are lessons we can learn from these failures. Here are some of the common pitfalls:
1. Trying to do everything at once
There’s no shortage of potential for IoT applications. But coming up with an idea isn’t even half the battle. Picking the right ideas and then prioritizing the ideas presents a real organizational challenge to even extremely innovative companies. It may sound painfully obvious, but in some companies, technology isn’t always used to solve a business problem. It’s important to pick the problem you’re aiming to solve and to set clear expectations that you’re not going to try to do everything you could do.
2. Working in silos
Connected products can’t be effectively built when there are internal silos. If everyone is laser-focused on their own piece of the puzzle, they lose the ability to see how it all fits together. When challenges inevitably arise, silos make difficult problems even more difficult.
We’ve found that a strong team is cross-functional, with a product owner at the center who owns the product vision. In addition to a strong product manager and product owner, you’ll need hardware, software, and cloud experts. This team of specialists should be tightly meshed, working together to achieve your goals.
3. Approaching software development like hardware development
Before we had computers small enough to put in our pockets, innovating was a pretty conventional process — you identified a problem, then perfected solutions, then mass produced your final product. But IoT technology must be agile enough to adapt on-the-fly. New features can be added simply by updating the software and firmware. Unfortunately, many companies’ product development approaches aren’t flexible and agile, causing them to fall behind.
4. Failing to account for real-world conditions
The real world is messy. That’s why agile IoT is relevant and necessary. Human behavior is unpredictable. The rate at which your hardware will deteriorate is unknown. Thermodynamics and the impact it will have on internal hardware components is hard to predict/account for.
Companies investing in IoT are moving quickly. They have an eye to the future, they’re trying to innovate, and the rate of innovation required to stay competitive and lead is fast.
All four of these challenges can be addressed by using the right development methodology.
Waterfall vs Agile IoT Development
There are two main software development approaches — Agile and Waterfall.
The waterfall methodology takes a linear approach to software development, with a sequence of events that each represents a distinct stage of software development. Each stage must be finished before the next one can begin, and there’s often a gate between each stage. For example, the customer must sign off on the design before coding can start.
The Agile methodology was created as a direct response from critics of Waterfall who felt that there was too much room for problems to remain unnoticed until the project neared completion. With Agile development, teams break each feature into the smallest discernible chunk of work and produce incremental value over time. Agile focuses on delivering working software with each release.
Each approach has relevance in the modern business world, but which one is right for IoT development? Here are several criteria to consider:
Easy to Understand
The linear approach of the Waterfall methodology is easy to wrap your head around. Things happen in a pre-defined sequence, and the project can’t move on to the next step until it has met certain gating criteria. This familiar approach is often used outside of the software development world.
In comparison, adopting an Agile approach has a steep learning curve. There’s new terminology to learn (iterations, standups, retros, etc…), and when you first start, it can feel counter-intuitive. Without experienced Agile practitioners at the helm, it’s easy to botch this approach.
With Waterfall development, work is intentionally broken into 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. Hardware and software design and development need to happen simultaneously with a great deal of communication between team members with different skills. The Agile methodology focuses on collaboration between teams, which results in getting products to market faster and making more product updates and releases.
Defines the End Goal Early
One of the cornerstones of Waterfall is committing to an end deliverable. For small projects where goals are clear, this step makes your team aware of the overall goal from the beginning, with less potential for getting stuck in the details. However, most IoT projects are neither small nor simple. In these instances, Agile is a better fit because it allows the project to adapt as you learn more about customer needs.
Winner: Depends on Your Project Scope/Complexity
As an internal process, Waterfall focuses very little on the end user of a product. Its main purpose is to help internal teams move more efficiently through the phases of a project. However, it’s often important to involve clients in a project, adding opinions and clarifying what they want as the project moves forward. In these cases, consider an agile methodology to better anticipate change and keep stakeholders informed through the life of the project. By involving stakeholders throughout the process, you lower the risk of late requests for change throwing off your project deadlines.
Agile encourages or requires frequent communication between developers and those who will ultimately accept and use the product. This pays major dividends when effective. For example, feedback can be incorporated into future iterations as increments are delivered and reviewed by users, a Product Owner, or both. False assumptions made by developers can be recognized early, reducing impact. Agile gives us continual opportunities to learn via this feedback.
Testing Early and Often
Though it’s risky to save the testing phase until the last half of a project, Waterfall requires teams to wait until step four of six to test their products. At this point, you’ve already spent a considerable amount of time on the project, so large revisions could cause significant delays.
In contrast, Agile methodologies and continuous delivery are particularly well suited for dealing with the demands of the connected device. With Agile, testing becomes an essential component of each phase of the development process, with quality being “baked in” at every stage. This is especially crucial for IoT development projects because real-world conditions are unpredictable. Continuous testing saves time, money, and frustration.
Adaptability to Change
Waterfall leaves almost no room for unexpected changes or revisions. If your team faces an unplanned roadblock that necessitates a change in scope or goals, pivoting won’t be easy. After all, you’ve put a lot of work into a project under very specific, rigid assumptions. A sudden change to the project can throw off the entire timeline.
In comparison, Agile is built to account for changing requirements, making it easy to adjust your approach to target high-priority issues. Working iteratively gives you more flexibility for change and evolution during product lifecycles. Sprint projects increase manufacturer productivity by pinpointing low-hanging, solvable problems and directing teams to focus on building the most essential features.
While there are advantages to using Waterfall methodologies in some instances, Agile is the clear choice for companies looking to innovate in the IoT space. By eliminating silos, gathering feedback quickly, testing early and often, and being able to adapt to change, Agile can help you beat your competition to market.