๐พ Hiแบฟu Lรช
Contributions
Iteration 1: Implemented the timer feature and setup automated testing.
Iteration 2: Implemented new Task and Timer UI, persistent database and android notifications. Also provided extensive code reviews.
Iteration 3: General cleanup and small bug fixes, documentations, code reviews and this website.
What I learned
An understanding for an application full architecture.
How to write Kotlin and how to use Jetpack Compose.
How to write detailed documentations and guides to set everyone up for success.
Continuous testing allows for faster feedback loop and increase merge velocity by removing downtime from test failures.
๐ตโ๐ซ David Schwarz
Contributions
Iteration 1: Implemented the deletion and editing feature for tasks
Iteration 2: Created and connected the Goal UI with the rest of the layers; Implemented the navigation between the Goal UI and Timer Screen.
Iteration 3: Created and connected the Statistics Screen with the rest of the layers; Set up the graphs and the statistics to be displayed; Implemented functionality to categorize goals by their deadlines.
What I learned
Throughout the course of this project, I learned the importance of familiarizing yourself with the language and libraries you are using. Skimming through documentation was not enough, and ended up adding technical debt to my implementations. In our project, we used Kotlin which was a new language for me. Having my team review my code made me realize that although I managed to produce the desired results, I would have saved myself much more time had I properly learned the language. I also learned the importance of using a version control system, initially it was a bit scary. As the project went on, being able to roll back, view changes, and check out different branches, was an extremely powerful tool and it is something I have gained a much larger appreciation for. Lastly, I also learned the importance of having strong communication with team members. Asking questions was intimidating at first, but ended up being extremely helpful and was one of the best learning experiences I have had, which is something I would like to thank my team for.
๐ข Chineze Obi
Contributions
In iteration 1, I worked on the pomodoro timer feature
In iteration 2, I worked on the task re-organization feature
In iteration 3, I worked on the goal deadline feature
What I learned
Firstly, i gained valuable experience in coding with Kotlin which was a new language to me at the beginning of this project. Secondly, as this was my first group development project, I have learnt more about teamwork dynamics and effective communication within a development team. Thirdly, I learnt how to properly use platforms like GitHub/GitLab which will be very useful for me going forward. Lastly, while working on this project I learnt new software development design patterns and concepts as well as better strategies and practices I can use in my future projects.
๐ Yuze Chen
Contributions
In iteration1, I complete the implementation of task API and UI, in iteration2, complete the implementation of Goal API, in iteration3, complete the overall implementation of Recurring Goal (new feature of Goal).
What I learned
First, I would like to thank my teammates for their help. Then, the project was managed in an organized way so that everyone could work together properly. Second, in terms of code quality, try to satisfy the SOILD principles, which, when applied together, make it possible for a programmer to develop a system that is easy to maintain and extend. We need to stay on the same page, communicate and reflect on our code. In the end, with the help of my teammates, I was able to improve the standardization of my code and clarify the structure of my code.
๐ด Adrian Hizon
Contributions
Iteration 1: Implemented logic for sending notifications on timer ending
Iteration 2: Implemented tracking of time spent on goals and tasks through the timer
Iteration 3: Implemented data backend for statistics, wrote system tests for timer and statistics screen
What I learned
In my opinion, the most important lessons I learned from this project are how to better utilize various types of testing along with having a proper and understandable architecture. I found that the biggest upside of tests was when working with code produced by my teammates. I could more easily identify the purpose of their code and if I needed to modify what they had written, I could easily run the tests again to find if and where I had broken anything. Secondly, the use of a proper architecture was paramount in being able to break down a large project such as this one into smaller pieces that could more easily be worked on. Testing continued to be more valuable as once the different layers of the architecture began interacting with each other, problems became more common in difficult to diagnose. These tests not helped with debugging but also the prevention of bugs in the first place.