Postmortem & Retrospective

Our development journey

What we learn

Firstly, I learned about agile practices and software architecture/design Furthermore, working with other people's code and also to actually use git for a big project. I also need taught myself to use cloud services to implement some of our features. Lastly, I think the most important takeaway for me is to always do test-driven development.

Devin Efendy

Throughout this project, I learned a lot about android development concepts. For instance, how to manage the android dependencies, modifying the build and configuration files, and also working with XML files to make user interfaces in android studio. In addition to that, I also learned to work with databases and to integrate it with the logic/business layer, and using version control for a large scale project.

Ryan Finnigan

From this project, I learned how to create an android application from start to finish. Especially, how to structure the system and making different parts of the system, like database and logic layer, to work together. As well as knowing to use XML as layout for the application and how that works with the Java code. I also learned how to develop a project as a team and how to manage different responsibilities and make sure our documentation files, issues, and milestones are updated.

James Harvey

Throughout this project, I have learnt about the fundamental concept of working in a group. Moreover, I learnt many development skills regarding creating an app. For instance, having learnt how to work with android studio which would greatly contribute to my work in the future.

Hoang Hiep Nguyen

I learned to debug a big android application and also, to find and fix code smells. Furthermore, I learned how to use git for developing a big project with other people, and I will definitely use version control for future projects.

Hoang Huy Pham

Development Experience

Since for most of us this is the first time developing an application as a team, there are definitely some issues that arose during the process. For instance, we see that communication is a major issue for the last two iteration. But, as we move on to iteration 3, we become more active on Slack and keeping each other on the same page.

Other issue is that, for iteration 1 and 2, we usually wait until the last two weeks of the iteration and cram a lot of works for one week. We realize that this is not ideal. Therefore, we start our development very early for iteration 3 and we manage to accomplish a lot of milestones.

We also identified improvements for iteration 3. We think for this iteration we manage to divide the workload equally among us. Also, we properly documented our issues and merge request in a great detail. Lastly, we finally picked up our momentum and shorten our development time for some tasks.

How did the project change from your initial (iteration 0) vision or stories, or did it work out as predicted?

Our initial vision was shifted throughout the iteration. Originally we inteded to make a smart grocery assistant app with very complex features such as displaying a route inside the store for a specific item, having user accounts to create and share recipes, and a payment system. During our first iteration we realized that our ideas are very ambitious. Therefore, we changed some of our estimations and just focused on features that we can complete in our sprints. Of course, this lead to a lot of uncompleted features. So, it did not work out as predicted.

We think this is also due to slow development time for our first iterations since we were not that comfortable with android studio and mobile development. At first glance, there were a lot of stuffs going on (gradle, XML, RecylerView, Activity, Fragments, etc.). As we progressed to the last iteration, we became more proficient with android studio we managed to accomplish more tasks in our last iteration.

What did you learn about team or large project development? What will you start doing, keep doing, or stop doing next time?

In short, it is really difficult and we actually need to learn to work as a team. We learn that it is difficult to communicate and coordinate with many people, and it takes time to getting used to. Furthermore, if we don't make the distribution of the tasks very clear, then there will be a lot of merge conflicts. Lastly, don't push testing until the very last minute.

When we have a large project in the future, we want to start planning before every iteration, doing test-driven development, and code review for merge requests.

We also will be keep making adjustment for our stories, tasks, and estimations; To keep each other on the same page; and, updating our milestone after every iterations.

Lastly, one thing that we should stop doing next time is that leaving everything (especially testing) to the last minute.

Can you draw any conclusions from what you’ve done?

We think we came with really great ideas but it's unfortunate we don't have time to accomplish all of them.

Mobile development is a very challenging and it's a different development routine. For instance, we need to tweak the build and configuration files a lot. Also, from web dev perspective, to make something work in mobile need a huge amount of code compared to web.

SOLID principle is very important. We will have a lot of technical debts if we don't follow it. It is better to take a long and SOLID way rather than the fast but leave us with a lot of techinical debts.

Retrospective is also very important as part of agile development. It's a time when we can learn from our mistakes and improve ourself for the next iteration.