Friday, July 1, 2022

Last Year: Fight for the Final Project (Part 1)

Hi everyone, it's been one year since my last post on this blog. Today I would like to share my story of how I survived my last year in Computer Science at Bandung Institute of Technology. Firstly, I would like to say thank you to the one who encouraged me to write in English, Pavita. Please don't judge me for my grammatical error or anything else that doesn't good enough in this post.

About My Final Project

My journey starts in August 20th, 2021 when it is my first guidance and meet with my prospective supervisor, together with my other three friends, Tony, Jovan, and Rifaldy. This is our first meeting where we gather and got the briefing from my lecture about what the project is about. After a look at all the suggested topics in the spreadsheet, there is no such interesting topic for me unless it is about Information systems. And then, I found the one which is interesting for me, it is about developing Digital Cooperative, especially for the all-round cooperative. In my year, it is the first time we had a chance to take our Final Project as a capstone project. It is a type of project in which we can collaborate with more than one person to work on the same topic. Capstone project opens the new possibility where certain topics such as Software Project can be applicable to become as our Final Project, just as same as Software Project course I had taken in the 6th semester. Previously, many final year students take a topic such as Machine Learning path, Human and Computer Interaction path, or Security path because previously each topic can only apply to one person.


There are two ways to divide the project into smaller tasks. We can divide the project based on the role or based on the module that we wanted to work on. In my group, we divide the project based on the module so there are four modules in the application. I choose to work on the e-commerce module as one of the main business processes in the digital cooperative. You can read about my final project in this linkFor me, it is just like taking another Software Project course, the difference is the scope of the final project depends on what does the agreement between the students and the product owner. Luckily, the product owner of my final project is my supervisor itself so I can negotiate a few things about what are we trying to develop. I will not talk a lot about what my project does, because I want to point out more about how I fight for the final project so anyone can relate to the final project whether the topic is different.


Final Project != Big Project

At first, I was thinking that the Final Project is just as the same as Big Project I had done in every course in Computer Science major. But I was wrong since I had fight for the Final Project in the last one year. There are a few things that need to be stated about why Final Project is different from the usual Big Project. Here are the five things I wanted to tell.

1.  The ideal duration for the Final Project is one year.

While the Big Project was only two to four weeks, Final Project is like twenty to thirty-two weeks (taken from sixteen weeks per semester times by two semesters equals to thirty-two weeks) depending on how fast you are to finish the project. This is one of the reasons why there are a lot of people who often demote while working on a Final Project.

2.  You decide your own pace.

While the Big Project is usually pushed by other members who wanted it to be finished, nothing is pushing you to finish your Final Project. It just only you and you who have full control of your Final Project. Don't compare your work with the others, because everyone has a different pace.

3.  You decide where you want to finished your project.

While the Big Project has a tight deadline like two until four weeks and it is okay if the big project hasn't been completed, it is totally different from the Final Project. While working on the Final Project, your work must be completed for sure. There is no tight deadline like a big project. You can work on your Final Project for more than one year, even though it can be until three years of work.

4.  You are on your own.

No one can help or carry you like in the Big Project. All must be done by yourself. Even if it is a capstone project, in the end, you have full control of your final project. You only can consult about your problem with your supervisor. You can consult it with your friends, but don't think that they can help you like in the Big Project because your friends might be had different struggles and problems while working on their own Final Project.

5.  The solution for the Final Project does not always work as Big Project

The big project has already been tested by the assistant that the big project can be completed with the amount of knowledge you got in the lecture course. But not for the final project. The Final Project always talks about the experiment. It could be successful or failed. You must be ready if your experiment is fail and can give some analysis of why it happened. Someone must prepare for the next step for making the experiment work.


Struggle in Final Project

There are some struggles that I have been fighting in this final project, especially for the final project I've been working on. There are at least five biggest struggles that I have been through sorted from the most difficult things in the Final Project.

1.  Maintain your motivation on final project

Based on the survey and all stories from my fellow fighter in Final Project, they say the same thing while coming to struggle with Final Project: Motivation. There are a lot of people (including me) are have experience demotivation while working on the Final Project. It is not just because it is hard. It is because the final project is not always working and it is working for a whole year. Imagine that you are working on something uncertain for one year. This is different than the usual big project from the curriculum course. Your friends can't relate to your final project except you. It is all on your own remember? How to maintain the motivation for the final project will be discussed in the next post (stay tuned!)

2.  Create the final project report is totally different than big project report

You can't create the final project report just like create a report for a big project. You are writing something in academic convention, which it will be read by others that haven't the same background as you are. You need to comply with the academic convention in writing a scientific report. You also need to justify everything you do in your final project reports such as the reason you design something a certain way or the reason you pick one solution from all alternative solutions for your final project (yes, you need to clarify and analyze why your picked solution is the best solution to be implemented rather than other alternative solution). You need to refer to all your statements based on the literature study too. While working on the final project, you must have a reference and research study before you work on your solution right? It is just the same as you were working on developing an application and trying to know how to implement a security mechanism or anything else. There is no argument that strong enough to justify why you choose such methodology or solution unless it was from your research study (unless you create something new that does not exist before).

3.  Your supervisor determine your success in the final project

You must know that you can't just create a solution and then become your final project. There is a reason why every final project or thesis needs a supervisor. It is because there must be someone accountable to validate your final project and whether it is necessary and worth enough to become the final project. If your supervisor doesn't support your final project, you will face a lot of problems such as you will be a late graduate from the university. Even if you working so hard and diligent but if your supervisor doesn't support your final project, it will be nothing.

There is a time when my group is not aligned with my supervisor's vision. We are working on A but my supervisors hope that we are working on B. What's the solution for it? There is only one answer to solve that misalignment. Guidance. Brave enough to have routine guidance with your supervisor and then consult your project report and problem while working on the final project. You must know that each supervisor has a different personality and you need to know how to handle it so your final project is not affected by the supervisor's personality. In my case, my supervisor is the type that will speak out and give suggestions if I point out something that I am confuse and I need some suggestions from my supervisor. If I didn't point out, my supervisors will just say yes at that moment of guidance but I will be slaughtered like a week before my proposal seminar or thesis defense and I need to rush to revise my solution in a hell week. I didn't want that so I usually point out what I want to consult every guidance (luckily my supervisors always spent time every Monday for guidance sessions so I don't need to reach out to my supervisors like anybody else).

4.  Negotiate the scope with the supervisor

This is the hardest part I think. Usually, we will bow and comply with every statement that comes out from our supervisor right? But one thing you need to know is, that this is your project and you have full control of it, including determining the scope of your final project. You proposed your solution and your supervisor is just like your mentor, but the rest of it is on you. In the first semester of a final project, I am typically the person who stood by every word that has come out of my supervisor's mouth. But in the next semester, I encourage myself to speak out about the scope of the project. My supervisors (who is also the product owner) like to give some suggestion that will make the scope of my project bigger and bigger. 

There are two ways I like to do when negotiating with the scope. First, before my supervisor gives feedback about the spot that can be improved, I usually propose a solution and my justification for why it matters. The second one is when my supervisor gives me feedback, I try to defend myself by giving an argument that is logical and strong enough to counter my supervisor's feedback. There is like 60% chance that my proposed solution or my argument is strong enough to satisfy my supervisor. But it is better than just obey to every feedback from my supervisor, right? I remember that my supervisor suggests I to do UI/UX testing for my application as a consequence of my suggestion in Chapter 5 even though the focus of my final project is totally on software development, not on human interaction. I just like "Is it okay to remove the human interaction suggestion from chapter V and readjust my non-functional requirement so I do not have to do UI/UX testing", and then my supervisor said, "Yes, sure no problem". What I am trying to say is it is okay to negotiate your scope with your supervisor.

5.  Stuck in the middle of developing solution

There is a time when I am stuck in the middle of developing a solution. It leads me to postpone my final project for 4 weeks or equal to one month not doing on a final project. I am grateful because my supervisor is the type that wanted to have routine guidance with their students so like it or not I have to finish something that I can report to my supervisor even if it is just a small thing. But that's never enough because in 4 weeks I didn't finish even one single feature in my module. There is a benefit I take capstone project. I have a partner I can talk to. I can discuss my problem with them and they can give some suggestions that have not come to my mind because I was stuck. And it is not just from the capstone project partner. I also discuss it with my friends outside my capstone project. Start from my DECRYPT fellows, ASYNC fellows, and even from INIT fellows too who is two years younger than me. Thanks to all of them who help me to solve my problem while working on my solution. From there, I learn the hard way that the other point of view of something is very interesting for me and makes me wonder about the greatness of the human mind that is different for each person. Moreover, I usually take a break and play games with my friends in the boarding house (named Counter Strike 1.6 ;v) or do another task that can be done quickly instead of the Final Project). It gives me pleasure and confidence when I had done something.

Fun fact: I was able to finish 5 features just in 5 days in the last week before Eid Mubarak Holiday 2022 :D. Those are features I have been working on since two months before Eid Mubarak Holiday :v 

6.  Capstone: Integration and Communication

This struggle can only be felt by those who are doing on the capstone project. Working on a capstone project has a plus and minus, and so was when working on an individual final project. Working on a capstone project makes you feel not alone in doing the final project and you can just assume the final project as the big project same as the Software Project course. But on the other side, there are a few drawbacks while working on a capstone project. The biggest struggle for the capstone project is the integration between all works on the project and communication with each other. I can illustrate how difficult integration is.

Let's say there is a feature that needs to collaborate between two members, for example, the checkout feature in my e-commerce module. There is another member who works on the finance module. To implement the checkout feature, I need to coordinate with my friend about what flow should be implemented for the feature. There is a miscommunication about it. Let's say I create the A flow to comply with the e-commerce module and my friend creates the B flow to comply with the finance module. When we try to integrate, well the flow doesn't match. I need to readjust my flow pretty much and so was my friend. The point is we can reduce the integration effort by communicating and agreeing with the discussed flow.

There is also a communication problem outside the integration phase. Same as working on a big project, there is a possibility that one or more of the members would disappear and not be responsible for the work. To prevent those events would happen, from the beginning I choose my partners carefully based on previous work experience with them. We also create a daily meeting every two days so we can catch up with each other not just talk about how is the progress of the final project, but also talk about our daily life, our mental health, our passion, and anything else related to human needs. There is a time when each of us is demoted and we share the pain using Google Meet. It is okay to be not okay. I understand my partners and especially myself too. The key is if we discipline and stay communicated, it could reduce like 75% of problems that could happen in the future.

That's all I want to share about my Final Project in this part. There is another part that I am trying to work on because I am afraid this post will be too long to read and I have other things to do besides writing this post. In the next post, I will post about:
- Most mistakes every person made in the final project
- How to maintain motivation for the final project
- Other tips and tricks to survive the final project and final year

So stay tuned for the next post! Feel free to ask me if you wanted to know more!


A moment after Proposal Seminar (January, 13th 2022)


July 1st, 2022


Michael Hans
13518056
Computer Science
Bandung Institute of Technology

No comments:

Post a Comment