Why agile software development is the perfect approach for IoT projects

Although agile principles are widely used in software development today, many IoT projects are still implemented in the traditional (increasingly outdated) way. As a result, many IoT projects take much longer than planned or even fail completely.

One challenge for development teams in IoT projects is to cover a wide range of capabilities in areas such as hardware, networks, security, cloud platforms, analytics, artificial intelligence, and interfaces (API). These capabilities have traditionally been highly siloed in most organizations. In many cases, sharing and collaboration between “silos of responsibility” works in a very limited way, if at all. A common vision is missing.

However, in IoT projects, development teams need to work in an integrated way towards a common goal. This is one of the main reasons why traditional IoT development using waterfall methods reaches its limits. This starts with project control: an IoT project that is planned and controlled using methods and tools of traditional project management, such as GANTT charts, sooner or later gets out of hand and, in the worst case, ends up in chaos. This is what our experience shows.

Teams in IoT development: Agile collaboration instead of responsibility silos

Projects implemented with Agile show a 64% success rate as compared to 49% for the projects implemented with traditional methodologies.” –Boris Shiklo, CTO at ScienceSoft.

Agile software development focuses on value creation instead of implementing specific functions. Along value chains, small working parts of the software are created in iterations instead of working towards a complete product (as a sum of functions). In software development, this offers the great advantage that users can provide feedback and change requirements during the development phase without putting the entire project in jeopardy.

This is particularly crucial in IoT projects, as the technical requirements and the interaction between various disciplines and areas of responsibility are usually much more complex than in “normal” software projects.

IoT projects are successful only if everyone involved works on a common vision. Thinking in silos of responsibility does not lead to success.” – Igor Pshul, Solution Architect.

Agile Software Manifesto (2001) – excerpt

  • Working software is more important than comprehensive documentation
  • Individuals and interactions are more important than processes and tools
  • Collaboration with customers is more important than contract negotiation
  • Responding to change is more important than following a plan

In IoT projects, where teams from various areas of the architecture – frontend, middleware and hardware – have to work together in an integrated manner, smooth interaction between individuals is crucial – communication is a critical factor for success. To ensure optimal interaction, there needs to be a willingness within the team to follow a common vision, on the one hand, and project management that establishes collaboration across responsibility lines, on the other.

 

The role of the project manager in agile IoT projects

The success of IoT projects depends on the interaction between developers from different areas of the IoT architecture. This also changes the role of project management – away from tasks and timelines to people. “People management” instead of “project management”.

The project management goal in IoT projects is to enable developers to take on changing roles in agile teams in any situation “Project managers” – whether “product owners” or “scrum masters” – must be able to dynamically control roles and competencies in their teams and create the conditions to ensure that interaction between developers and the teams runs smoothly at all times.

Now it’s a team sport to the extreme […]. We have many more releases, but the prototypes are smaller and there are many more components..” – Harel Kodesh, former CTO at GE Software.

Shared vision & vertical orientation in the team

In times when technologies and requirements for software systems are changing faster and faster, architectures are also changing – moving away from individual functions (horizontally) in monoliths to value chains (vertically) in modular systems. Accordingly, the organization of teams in IoT projects must also be vertically oriented. Instead of specialized teams for the development of separate functions, cross-functional teams are created to implement the features of a value chain.

The challenge for project managers, especially in companies that traditionally ” think horizontally,” is to establish a vertical orientation in the team (and in the product). This requires an agile culture and a shared vision for the product and the path leading to the result. If this culture and vision are missing in the team (or even only among individual developers), friction is inevitable and the risk of failure is extremely high.

Overcoming communication barriers

In an ideal IoT project, developers from all areas of the system architecture work together in agile teams. In practice, however, especially in international projects, different languages, time zones, cultures, and ways of working can make collaboration and exchange difficult, and in the worst case even impossible. Here, project management has to build bridges.

Creative workarounds are often needed to resolve communication blockades between teams. Here’s an example from our practice: If collaboration between the software (frontend, middleware) and hardware (firmware) departments is poor – for example, because different languages, cultures, time zones, etc. clash – then project management may have to work with the software team to find ways to develop without access to the hardware. One solution, for example, is to simulate the hardware with the help of a digital twin.

Example: Digital twin helps neutralize communication barriers

Such a workaround via simulation using a digital twin allows project blockages to be eliminated pragmatically, even if the development of a digital twin was never planned in the first place. However, this only makes sense if the effort is in an appropriate ratio to the reduction of communication friction and thus to an increase in the speed of development in the project.

In addition, developers from the software team must be able to simulate the hardware. This calls for true full-stack development that goes beyond the scope of “standard” software development. That is why we at voltage IT stand for holistic full-stack development instead of development in responsibility and competence clusters.

Our Vision: 100% Holistic Development in Autonomous Teams

Software development is a team sport, not a solitary discipline. IoT projects are only successful if competencies within and between the teams involved are managed well, strengths are combined, and responsibilities are bundled. The aim is to assemble teams that can solve problems autonomously. The challenge for project owners is to find the ideal balance between control and autonomy.

At voltage IT we follow these principles:

  • Responsibilities & accountabilities follow objectives, not roles in the team
    Agile software development is oriented towards value creation instead of features. Responsibilities & accountabilities in the team are distributed in such a way that the features of a value chain can be implemented quickly and efficiently. For this purpose, classic roles and responsibilities may have to be broken up. Specialized teams are replaced by cross-functional teams in which the necessary competencies are combined in the best possible way.
  • Full-stack development and competencies in the team, not in individuals
    If competencies are distributed evenly among as many project participants as possible, it is easier and more flexible to form agile teams that are able to develop autonomously. In addition, the distribution of competencies reduces the project risk due to the failure of individual developers (“bus factor”).
  • Using agile methods, such as pair programming, to increase autonomy
    Autonomous teams are able to respond to new project requirements and find solutions on their own. In addition, autonomous teams can continuously ensure the quality of development with the help of agile working methods and tools. At voltage IT, we rely on “pair programming”, where developers work together in pairs, develop simultaneously and check quality.

    Conclusion: Agile development is perfect for IoT projects

    Just as applications in the IoT are organized in a decentralized manner, software development must also be organized decentrally. Agile leadership takes the place of traditional project management based on the waterfall principle. Cross-functional teams work autonomously and holistically along value chains, instead of working off functional requirements in an externally determined and tightly meshed manner At voltage IT, this is not just a vision and a claim, but a successful reality in complex IoT projects.

    Worth reading

    Need help? Let’s talk!

    For many years we aim to enable companies to make the right IT decisions and to get software systems they sustainably benefit from and manage themselves in the long term. Our mission: Building “reasonable” solutions beyond technology hype.