Reflections: Team SmartBucks
The journey so far!
Introduction
This blog is mostly to share our insights on the developmental journey of our application “SmartBucks”. The challenges that were faced technically and personally as a team will be shared in this blog post. This blog post also extensively talks about the benefits obtained by taking part in this software development project. And finally, whether the expectation of the course was met or not.
Technical Challenges
Android Studio
- This is a software development project in which we had to develop an android application. So basically the first and foremost problem was to work with the Android studio workspace since not all members of the group were familiar with it.
- So this problem was tackled by going through a lot of tutorials on understanding the basics and nuances of the android studio which will increase our productivity in our app development.
- It took a lot of time to get familiarised with the Android project structure, the working of the emulator which most of the time kept crashing and to resolve the API issues.
- Due to low computational speeds in most of the laptops due to the less availability of memory, there were often problems in the debugging process.
Design
- One of the biggest problems in UI/UX design was migrating the basic prototype frontend to the advanced prototype frontend. The goal was to change from the default constraint layout to the linear layout for better screen fittings with the aim to make the application make more intuitive and satisfy the user. Therefore there was a lot of time consumed as all of the XML activities need to created again from scratch.
Integrating with Java Language
- Ideas can be crafted but bringing them into life is a whole new venture. Here the struggle of making the application was an implementation of the code. This took significantly a long amount of time because of a lot of bugs that were handled at every process and removed accordingly.
Design patterns
- The idea of using a design pattern to develop an application was new to us and had to understand each of the patterns so that these solutions can be implemented in our software development.Selecting the appropriate attributes for the classes and funtions that has to be created and implemented.
- Structural and behavioral design patterns were understood and implemented accordingly which took a particularly long time.
- Understanding of using the different design components to design better user experience and the interface was one of the major challenges in designing.
Database Design
- The creation of a menu handler and an ample of activities included in it to handle the data, as well as determining how the expenses will store the thresholds and their categories turned out to be harder than we thought.
- We finally concluded in a simple structure that might not have the most efficient design but serves the user’s needs.
- Our basic prototype version was working for a single session, passing all the user data explicitly from intents and bundles, therefore we came quite far with our final implementation.
Version Control System (GitHub)
- Even before the implementation of the code and development, it was crucial for us as a team to understand the working of the GitHub. At every point in time, we had to rely on the practical understanding of the GitHub as each one of us has to work on the same code base.
- Git pull and push was one of the easiest tasks but only if we understood the nuances when working as a team or else there will be a lot of conflicts that have to be resolved with a lot of time that was spent. Merge conflicts, rebase, stashing and a lot of other stuff had to be understood. This stayed as a constant problem in the development process.
Team Challenges
Maintaining the code standards
- Keeping up with the standards of the code as a team was one of the vital tasks that each of us should have in mind. Brainstorming through this and finalizing the coding convention took a lot of time.
- As a team, peer reviewing the codes for proper conventions and errors took a considerable amount of time.
Remote code changes
- As mentioned earlier we were working on the same code so it was necessary for all of us to be considerate on the commits and push that we do. Most of the time this leads to merging conflicts. Working and committing on the proper branches were also important.
Division of tasks
- It was important for the team to divide the tasks appropriately considering the strong points of everyone and their ability to learn.
Customer expectations
- It was not easy to deal with the dynamic requirement changes of the customer. The team has to adapt to the changes in the environment and work accordingly. For instance, there were a lot of changes that happened from the basic prototype to the advanced prototype.
Benefits
There are a lot of benefits involved in working as a team project.
- As a team, we have to convey the ideas necessary for product development which in turn needs the necessary skill of communication. This is one of the most important skills that we gained by working as a team.
- Needless to say, there was a huge benefit of an understanding of the version control system Github which is of industry grade to maintain and work on the code base. If this project wasn’t for a team, then there wouldn’t be a need to learn the team management tools that let us handle everything related to the project from coding to documentation.
- At each sprint, we were able to develop our presentation skills, which helps us convey the message to the public.
Course Expectations: Our opinion
The course “Introduction to Software Engineering” did really meet our expectations.
- The course introduced us to the Android development platform, which helped us to enhance the android related programming skills, such as Java and XML.
- We expected the course to help us develop a working application at the end of the day and we were successfully able to develop a functioning application that can be published.
- It was always a mystery how the software that we use in our day to day lives are being created. But as the name of the course suggests we were able to demystify the processes under the hood of software development.
- On the whole, the course met our expectations from implementing the code to the documentation of the implementation helping us understand the whole process altogether.