Reflecting on building my first ever major tech project

Yu Qi Tan
5 min readAug 4, 2021
Photo by Chris Ried on Unsplash

During the summer break of Year 1, my friend and I had planned to take up a module that gave us the opportunity to try creating something and learn new technologies in the process. However, we were unfortunately rejected from the module due to the module being oversubscribed. We were disappointed but didn’t want to waste the summer away, so we decided to do our own personal tech project to learn new technologies! Here are some key takeaways that I have learnt from the process!

  1. The ideation should be clear enough to show a specific purpose in the project that is being built. What pain points are you trying to solve with your project?

Initially, our idea was to create a game that mixed in principles of how software businesses worked. It was a cool idea definitely, because my friend was passionate about gaming while I was really passionate in investing, especially investing in listed software companies. Yet, our senior asked us something that hit me hard “Is this idea something that you just came up with for the module? Or are you guys really passionate about this idea?” In retrospect, I really thought that this question was really important, because it would have been really difficult to have a specific direction for the project because we didn’t really know what was the result that we wanted (it was not really that clear what was the goal of creating the game).

We ended up pivoting the idea to creating an expense tracker that could simplify the way people could track their expenses. This idea was something that was clearer and way more purposeful in terms of motivation for the project. The idea had stemmed from difficulties in tracking expenses using spreadsheets. We really wanted something that is simple to use, intuitive and yet brings a clear picture for the user on their personal finances.

I really think that before starting any project, try to ask what pain points are you trying to solve, and see if you can develop any solution for it!

2. Plans change all the time, do not spend too much time planning.

Now that we had our ideas in place, we were starting to plan for the wire-framing of the web app, what kind of technology stack we wanted to use and what data we needed for the database.

We spent too much time trying to plan down to the details of how we wanted each page to look like, but we didn’t need to, because looking back, our plans changed a lot over the course of the entire project.

Have a rough plan, but don’t be over fixated on the small details, and be flexible to change!

3. Google is your best friend, but don’t just watch tutorial videos after tutorial videos.

We decided on the tech stack and wanted to start learning from watching tutorial videos on youtube. However, this was a mistake. We did not use everything we learnt from the videos and one video led to another video, which was endless.

At one point, we decided that we should just start doing the project and figure out along the way. This was a much better use of time, given that one just cannot finish learning everything about a particular technology. Learning sufficient parts of the framework to build the project and solving the problems you intend to solve was a much efficient way!

4. Refactoring of code is essential.

As our project got bigger and more lines of code was added, we realised that it was getting harder and harder to understand the codebase, especially the frontend. It wasn’t on our minds to always think about abstraction because we were so tied up about the functionality of the features. Yet, refactoring was absolutely essential and should be done from the start so that the code can be scaled easily.

5. Keep things simple, and break down the problem into smaller problems.

We had used javascript to code most of our project, and functional programming was essential in our project. Yet, some of our functions in our code did multiple things at once, which made it difficult for us to understand each other’s code. Every function, should be only doing one thing or returning one thing if possible, so as to ensure code readability and lesser bugs.

6. Have a system in place where you can ensure continuous progress of the project.

Fix a meeting timing every week and keep track of the progress for the project, for instance the list of features or list of bugs to fix! This ensures accountability and facilitates learning because there will definitely be tough problems along the way of creating something. Furthermore, this increases the likelihood of finishing and completing the project!

Some final thoughts:

I’m really satisfied with this project and I guess this is the first step into developing and creating new tech products to help to simplify the lives of people through technology. Here are some of the pictures of the final product!

Dashboard which shows balance history, money transacted, and recent transactions (Transactions are for illustration purposes only)
Detailed transaction history breakdown, with filter functionality based on different filters (Transactions are for illustration purposes only)
Adding of transactions
Settings to update income

The experience has taught me important lessons on product management and software engineering! Hopefully this sharing helps in making your first tech project a wonderful experience!

--

--