Recently, we onboarded a bunch of junior engineers at my current job. One of the steps during the onboarding is sharing our experiences with them. I shared with them the list of things I do when I start working on a new task that has helped me become a better engineer:
Thinking About the Problem
- From the time the task starts, try to understand what the problem requirements are.
- What’s already present in the product that is related to this problem?
- Reason for making the change or solving this problem?
- Which customers asked for it?
Study the Design and finalise on the tech plan
- Assess the technical requirements and write them down.
- Discuss with peers or seniors.
- Build ERD diagrams if needed.
- Decide on an approximate delivery date (not necessarily required to be shared).
- Deciding on an approximate delivery date helps me to have a timeline in mind and plan things accordingly. It helps me break down my daily tasks and have clarity for the next 1-2 weeks.
- By this time, there is almost 100% clarity on exactly what needs to be built, and the development work can be started.
Development Phase
- Once in the development phase, communicate constantly regarding the task status, blockers, requirement changes, or any other issues that may arise.
- The development phase is the time when Deep Work is the best strategy. This is the time where you can learn so much about yourself, your style of working, things you enjoy in life, and many other things. This is a sacred time for any developer, use it wisely.
- The development phase isn’t over until you have tested your code for all the test cases you have written it for. I can’t stress enough … TEST TEST TEST.
- If there are any integrations with server-side or client-side code, then test after integration too. This should be done before giving the feature for testing. See if the data is getting saved correctly, if the number of queries running matches the number you thought, and if the client-side code is hitting the APIs at the right time, among other things. This is a very important step and reduces the time to release a feature if done properly.
Testing Phase
- When giving the feature for testing, make a complete video/GIF explaining what the feature is supposed to do.
- Share the requirement doc and test cases for which you have written the code with the team.
- If there are any APIs, add them to your Postman collection and share them with everyone.
- Make sure that the QA team has tested for the important use cases. A lot of developers I have worked with don’t believe in this, but it’s very important from my POV. I can’t be 100% sure about releasing the feature unless I am sure that it’s tested properly.