I work on a project for a customer who continuously changes the specifications. We must adapt our way of working to this particularity. For this reason, we use an Agile methodology, such as Scrum, for the firmware development of the product.
Subsequently, and from my point of view as developer of the Development Team, I list the advantages of the Scrum methodology and I will tell you how we follow the Scrum phases every day.
The advantages of the Scrum methodology:
- Agility to adapt the product to possible future changes in the specifications.
- According to the Scrum recommendations, the firmware release is delivered by the Development Team frequently (monthly). This way, and as soon as possible, the customer returns his feedback of each firmware release to the Development Team indicating possible modifications. This feedback is considered during the next sprint planning. This close relationship between the Development Team and the customer generates a high level of customer satisfaction.
- It’s not necessary to define all the specifications to initiate the development, as the development occurs incrementally. Once the minimal specifications are defined, the development can be initiated.
- After sprint planning, the work of all members of the development team will be well defined.
- The most important general objectives of the sprint are more important than the specific objectives of a development member. For this reason, team work is more important than individual work.
- The sprint deadline is fixed. Consequently, the development team assures that the firmware release is delivered without delay. The level of customer confidence increases significantly.
- Force the planning and the supervision of the project iteratively.
Our Scrum Team
In our project, the Scrum Team consists of the following members:
- A Product Owner: defines the product specifications and prioritizes the work according to the customer requirements. He provides customer feedback to the development team following the release and delivery of a firmware.
- A Scrum Master: is responsible to supervise that all scrum phases are completed successfully.
- The Development Team: consists of 10 developers who implement the product firmware, observing the requirements provided by the Product Owner.
Working with Scrum on a daily basis
The development time is set up in 3 weeks (the recommendation of the Scrum reference guide approximately), divided into 2 weeks for the development of the new functionality and 1 week dedicated to applying intensive integration tests and fixing bugs found which are occasionally detected. During the development phase, various static analysis of the source code are performed, using the Klockwork analyser and different dynamic analysis of the source code are performed using the Valgring tool.
When a sprint is launched, we hold a 3-hour Sprint Planning meeting to plan the tasks to be performed during the sprint, observing the priority and duration (in hours) of the tasks. we use the Redmine tool for the Sprint Planning. The Development Team is responsible for updating the task status to ‘Done’ each time a task is completed.
The Development Team holds a short daily meeting of 15 minutes designated as the Daily Scrum. During that meeting, each developer summarizes the work performed during the previous day, he plans his work for the current day and, if necessary, he requests support from another developer. These meetings are coached by the Scrum master.
When the sprint is concluded, we hold a Sprint Review meeting of 2 hours during which the Development Team demonstrates the ‘sprint increment’ to the Product Owner, as well as to the members of the Test department.
Finally, we hold a 2-hour Sprint Retrospective meeting, during which the Scrum Team reflects on the errors occurred during the sprint and develops new concepts to improve the next sprints.
An agile methodology such as Scrum can only be applied when the product can be developed iteratively and incrementally. Unfortunately, this is not the case with every product.
Written by Ángel Gutiérrez