Blog#6 - Reflections

Wai Po Kevin Teng, 10 July 2018

Closing Remark

After weeks of sleepless night, brain storming requirements and use cases, planning system design, designing UI and testing our code, we are finally able to display the out come of our end project. Of course, nothing is perfect and just like every project, we need to reflect on our actions and decisions so that we can enhanced our skills and shortcomings in the future.


Technical Challenges

1. No solid prior experience in regards to Android development. Although all of our team members has basic programming knowledge, most of us do not have hands on experience in developing a complete App and deploy it to the real world.

2. Lack of up-to-date tutorial and outdated API. Android OS version are updated approximately once a year, whereas minor updates will follow on and tend to be more frequent. This would indicate that bugs will be fixed, but on the other hand, developer needs to keep up with the updated conventions.

For example, in the older version of Android Studio, manifest.xml file, the convention to enable API would be ‘compile’. However, this is not the case for the latest version, where the convention ‘implement’ is utilized. One of the major learning curve that our team faced was the implementation of FireBase API. Since Google just bought it over recently, up to date tutorials are often sparse and not compatible with the current implementation.

3. The lack of computational power. Development in Android heavily depends on the choice of IDE, which in our case, Android Studio. However, Android Studio tend to be an IDE on the heavy side with multi-features and plugins. Therefore, Android Studio is computational hungry and laptop with RAM less than 4GB suffer to keep up with the performance of the App compilation.

4. Lack of Android development tools. Since running Android Studio in parallel with Android emulator could be computational consuming, one can choose to use their phone to speed up the visualization of the outcome instead. Unfortunately, the target audience would be Android user instead. Hence, one of our teammate is an iOS user and he simply could not switch from emulator to a real live tool for testing or implementation.


Team Challenges

1. Our team comprised of members from different countries, background and different semester. Although our team would be vibrant, but the draw backs was there were mismatch of ideals and policies. It is simply hard to form good chemistry by grouping a team without having knowing much about each other in the early phase. Misunderstood arose and misleading actions were made due to different cultural perspective.

2. Communication serves as a vital role in a team project and it is proven that face to face conversation serves as the most effective method to clarified instructions and tasks. However, due to different time schedule of the team members, allocating a convenient time for a meet up was certainly not an easy task.

3. Coding style and visual interface varies among the team members. Since, there is no definite definition of art sense with respect to individual. However, such aspect will lead to argument about the showcase of code, presentations and blogs. Valuable time could be used on better software development often end up in unconstructive discussions about aesthetic of the tasks.


Benefits

# Stepping out of the comfort zone: working with unfamiliar team mates from different cultural background can be intimidating but on the other hand more dynamic. Refreshing ideas can be attain from a different view point from another perspective..

# Team adaption: Not all members have the same working pace and the same skills to meet the standard of the requirements. Hence, one shall shallow his or her ego to hustle on with the best solution for the team.

# There is no super-star: Every team members in the team has their own position for a reason. No one needs to prove that he or she is the best in the team. No one should be left behind as the lack of support from one team member could be a daunting experience where the work load will not be distributed evenly.

# Time management: Deadline for each milestone of the project have already been pre-announced by the coordinator. Therefore, wise time management could ensure the milestone is achieved and could prevent from cramming the task at the eleventh hour.

# Decision making: Bad decision making can be costly and inefficient, especially in a team project where expected results are sometimes not foreseen. Therefore, wise decision making could mitigate the damage caused by unexpected result and put the team members on the right track.

# Software development: Not only we improved our programming skills, we also got to know more about how to implement API and packages while building the App. This enables us to gain one step closer to the process of how a software is being developed gradually.

About the Course

This course, Introduction to Software Engineering for Engineers has provided us with the fundamentals of Software Engineering as well as invaluable hands on experience to build an Android App. This enables me to understand the process as well as the background info ( or hardship) while developing an App. In reality, App users (including me) did not care about the implementation of the App but only the UI design and the ease of usage. Often, one would complain about the ugliness of an App and it’s disadvantages. However, after attending this course, I understood that implementing an App was not an easy task especially for an App with long term usage. I particularly like the part in the early phase of the lecture where emphasis where given on the software requirements , use case collection and scrum practice. In my opinion, many people has the misconception that software development only involved coding but less planning. Similar to all other projects, the early stage of a software development involved in planning and dealing with the client and often is the most important stage of a software development. Nevertheless, this course has taught me about the essentials of a team work and definitely will be useful in courses involving team strategy.


Play Store Entry

>> Click here to view play store entry <<


Downloads

>> .apk Download <<
>> Source Code <<


Acknowledgement

Our team would like to sincerely show our gratitude to our acting client as well as our course coordinator, Dr.-Ing Sandro Schulze for his informative teaching, unselfish guidance and insightful comments. Special thanks to those whom supported us directly and indirectly along the way. Nevertheless, we would like to thank all our team members for their hardwork and dedication towards this project. The project could not have been completed without contribution from each team members.