I have been programming for a while and I realized that I am not as productive daily as I thought I was. This was after some evaluation of how I have been carrying out projects over the past 2–4 years of being in the software development world.
Nearing the end of 2017, I started working on a new SaaS app called Bajetly for managing finances. In this project I aimed for my cleanest code and reducing ‘clutter’ that I realized I used to have in my code. I am sharing this now since I know there is someone who is also experiencing the same challenges.
The following shows my process BEFORE i ‘discovered’ this ‘new’ methods:
Note: I am usually working alone as a freelance fullstack engineer
- Receive new project (usually from a client) and write it down. This includes information on use cases and features
- Define overall theme and look for the project
- Define the tools, architecture, db etc. required and note them down
- Start coding starting with the UI (bootstrap template mostly which I redesign to suite my needs)
- Work on the backend code without clearly defining my though process while working on frontend UI/UX stuff
- Loop around from backend to frontend until the project is concluded
I have been doing this for a long time and realized it wasn’t productive at all even though majority of devs especially freelancers work this way. This is mostly due to the fact we are all alone on a project and very rarely delegate tasks especially on matters code. This is dangerous and quickly wares you down and loose motivation along the way especially when you hit a big snag in your progress.
This old process rather feels like I’m doing this:
In my new project, Bajetly I decided to work on it using a different approach. This is the process in regards to it:
- Design use cases for the product and note them down
- Define important features of the product and note them down
- Design the overall flow, theme etc. and note it down
- Decide on tools, architecture, db etc. required and note them down
- Start coding starting with the backend logic
- Test backend logic to ensure it works
- Start designing frontend UI/UX using the relevant tools (Bootstrap, Vue/Vuex) keeping in mind the overall flow and features highlighted before
- Test integration with the backend code
- Finish the product
There is my new flow that I am also adopting for client projects. The most notable difference is the absence of starting work on the frontend and backend then looping around from frontend to backend.
Note: It is impossible to remove the looping around since changes are always there no matter how good your backend or frontend is.
Define your thought process
Yes. You read that right. Define your thought process step by step as you code before you write code for the feature. This process helped me write the code faster for various features and i couldn’t forget what I was thinking when doing so.
This definitions are in the form of code comments and look as follows:
You are probably telling yourself, “So he’s talking about typical todos”. Yes and no. Even though you may think of them as todos and it’s ironical given the example I’ve provided 🙂
It’s more than that. It’s expressing what you want and need from this new feature. Think of a more complex feature with more steps and abstractions. Yes, now think of that for a minute and evaluate the project you are doing and how you would have probably done it much better if you would have defined your thought process before coding like crazy.
Think through before you code, always. It’s the best time saver ever! I would like to wish you all the best as you practice this method in all your projects from current to future ones. You’ll pat yourself in the back after using this method for awhile.
As always, don’t let interruptions take you away from your thought process!!!
** Don’t forget to share if you liked this article and leave a comment **
Also published on Medium.