Postmortem
What took the most time? The least? Any surprises?
During the development of our project, the database was the hardest thing to implement and took the most amount of time. The database being one of the main components of the project led to a lot of bugs/issues during development.
Specifically, we had significant technical debt because we implemented a real database using SQLite in Iteration 1. Later, we found out that it was too highly coupled with Android context and with code that is not completely based in Java. Paying off this debt at the beginning of iteration 2 caused some time and resources that could have been used towards adding new features to be spent elsewhere.
Creating the UI for many of the activities did not require as much time as we expected. Although the unfamiliarity of Android Studio caused some issues in the beginning, as group members became more familiar with the IDE, the development became a lot smoother and less time consuming. Members were better able to contribute to parts of the project others worked on as everyone became more comfortable with Android Studio, leading to a more seamless/cohesive development process.
How did the project change from your initial (iteration 0) vision or stories, or did it work out as predicted?
The project had to change from our initial vision at iteration 0 due to various factors. We are all students taking many classes and have a limited amount of hours to dedicate to a project like this. We were ambitious during the planning phase and created 13 feature issues. The scope creep of certain features became apparent near the end of Iteration 3 and we decided it was more prudent to move the remaining low-priority features to a “Future” milestone. This allowed us to spend more time polishing the current state of our application and writing the required tests.
Some of these low-priority features that we mentioned in the vision statement would have taken many more work hours than we had access to. In particular, the watchlist, sharing to social media, and the ability to upvote and downvote movies have all been pushed to a future milestone.
The search feature also became a larger part of the application during the course of development, so the usage of our application after iteration 3 is largely focused on having a database of fake movies that can be filtered by using various attributes or by searching by name.
What did you learn about team or large project development? What will you start doing, keep doing, or stop doing next time?
We learned that communication is the most important aspect of project development. Also, for efficient collaboration, version control needs to be continuous and consistent using a centralized repository where people can push the code that they worked on individually.
Next time, we will start to ensure that the code we write for new features is as lowly coupled as possible so that merge conflicts are easier to fix. We will also plan every user story and dev task at the beginning of the iteration and avoid deviating from that plan. During the iteration, we will properly track the amount of time spent on each dev task. We will also write tests while we are implementing new user stories/features instead of waiting until the end of an iteration.
We will keep dividing tasks amongst group members and holding weekly meetings to keep track of progress on various features and offer support to other team members.