How We Run Agile Development at SpinDance
At SpinDance we run our projects using an agile development methodology. Like any methodology, agile development requires contextualization based on where and how it is being applied. We have adapted the core principles of agile development and made some modifications, based on our experience with many projects within our context, IoT system development.
Agile Development Values
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
- The highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Product stakeholders and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need and trust them to get the job done.
- Face-to-face conversation is the most efficient and effective method of conveying information to and within a development team
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity–the art of maximizing the amount of work not done–is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
How we do Agile Development
An agile team depends on two main things… a team structure made up of specific roles, and a repeatable set of meetings, often called ceremonies in agile development.
An Agile Team
Here is what an agile development team looks like at SpinDance.
The most basic version of agile development has 3 roles:
Product Owner – Focused on stakeholders and ensuring that we prioritize according to the vision of the product. Manages the backlog and is responsible for defining what is being built and why.
Scrum Master – Accountable for the effectiveness of the team and focused on clearing impediments.
Development Team – Accountable to execute the sprint plan and complete stories according to the definition of done. They also provide technical input to the backlog grooming process helping break down high level features into stories that can be developed.
We call out 3 more roles, Project Manager, Lead Engineer, and Stakeholders:
Project Manager – bridge the gap between the development team and the client’s timeline, budget, and other real-world constraints. Real projects don’t happen in a vacuum and require that someone is actively managing the various externalities during project execution. This allows the development team to focus on building the right things, not managing other factors, and gives the client a partner in managing the project.
Lead Engineer – they are part of the development team but responsible for helping lead the system design and architecture. We have found that this role is critical to help evolve the architecture as the project progresses.
Stakeholders – This is based on our experience as consultants and partners. Because we are “outsiders” we can’t truly own the product and need critical stakeholders from the client to be an active part of the team. Stakeholders help the Product Owner define the product vision, prioritize features, and provide feedback actively during development.
Agile development has a set of ceremonies (standard meetings) that are used to keep everyone on the project team aligned. The ceremonies are fairly standardized so that each team member knows what is expected. This process is iterative and generally repeats in two-week sprints.
Backlog Grooming – This is where features are prioritized and broken down into “user stories” that can be developed. We use user stories as the means to break down work intentionally as a way to keep the focus on usable software, rather than on implementation. A user story follows a format… As a <type> user I want to <action> so that I can <reason or value>. (eg. As a user I want to be able to pair my phone to the device so that I can provision it.)
This also includes defining dependencies, acceptance criteria, and estimating the development effort for each user story.
Sprint Planning – At sprint planning the product owner and development team work together to build a plan for what features / stories will be worked on during the next sprint.
Daily Standup – the development team meets every day for 15 min to review the in-progress work and identify any blockers or risks.
Sprint Review & Demo – The development team demos the completed work to the product owner and stakeholders. This is a critical time for feedback on the work that was delivered. We also do a retrospective on the process to make sure we are always looking for ways to increase the effectiveness of the team.
This short-term iterative process is what really powers agile development and what makes it agile. By delivering a testable increment (ideally working software) every two weeks testing and feedback can happen quickly, even before features are fully complete. This allows the team to incorporate feedback or changes in priority really quickly and at much lower cost than if it came later in the project.
Why We Use It
In developing large complex IoT systems change, and iteration are inevitable during the development process. Many of our clients are breaking new ground with the products they are working on; this requires the ability to adapt and change quickly without incurring huge costs as a result.
It’s also not an accident that the principles behind agile development actually align very closely with our company values.
Be a Friend – Mentor and Learn – Seek and Communicate Truth
Make Good Decisions – Deliver Everyday
This is about more than simply maximizing project outcomes; it’s about enabling us to work out our values which we are confident make us a great team to work for and a valuable partner to our clients.
Do you have questions or want the guidance of an IoT expert? We can help. Contact us
About the Author
Daniel Luyk is a Product Owner at SpinDance with over 13 years engineering experience in manufacturing processes, design engineering and program development. He holds a degree in Civil and Environmental Engineering from Calvin University. As Product Owner, he consults and partners with our clients to ensure their products are fully integrated, contextual, and highly successful.