Year in Review @ apna.co

March 1, 2023

(Updated on April 24, 2023)

article cover

I completed one year as a Software Engineer at apna.co. Although the year was quite challenging, I had a lot of fun learning new things, interacting with awesome people and building multiple things! Here are some things I learnt in the last twelve months that have shaped me into a better engineer.

⭐️ Invest time in understanding existing systems.

Understanding the existing system is an important foundation for success in any development project. I quickly realised that taking the time to understand the existing system, its architecture, and its underlying code is a valuable investment of time and effort.

While learning about the existing system, I was able to identify opportunities for improvement, optimize performance, and avoid common pitfalls. Additionally, having a better understanding of the architecture helped me be more effective while communicating with my colleagues and stakeholders. It also helped me be much more productive while collaborating with other teams!


😄 The best learning comes from the most uncomfortable situations.

As they say: “adversity is the best teacher”. I learned that some of the most valuable learning experiences come from the challenging and uncomfortable situations.

By pushing myself out of my comfort zone and taking on new challenges, I was able to develop new skills and gain confidence in my abilities. Additionally, by reflecting on these experiences and identifying areas for improvement, I was able to continue to grow and develop as a professional.


💪 Take ownership of work.

I learned that taking ownership of my work and being accountable for my actions is crucial to gaining the trust and respect of my colleagues and superiors. It helped me build credibility and establish myself as a reliable team member.

At the same time being proactive and taking initiative lead to more opportunities for growth and collaboration for me. By actively seeking out new challenges and opportunities, I was able to learn a lot of new and exciting things, and also contribute to the success of the team.


💬 Communication is very critical.

Effective communication with colleagues, supervisors, and stakeholders are essential in any job. Since I have a remote job majority of my collaborations are async in nature.

I picked up some good habits from various folks that have really helped me improve my communication.

  • Be clear and concise in conversations.
  • Actively listen and ask questions when needed.
  • Document all features as if some one totally new would read it. making sure it has all the information to understand the system.
  • Be respectful, polite as well as cheerful. A major disadvantage of async communication is that it’s difficult to interpret the right emotions in text.
  • Keep an open mind and be willing to consider different perspectives and ideas.

  • 🛠️ If you spot a bug in the system, fix it immediately.

    If there is a bug in the system, it's important to prioritize its resolution and fix it as soon as possible, regardless of its theoretical priority. Even small bugs can have a ripple effect and cause larger issues down the line, potentially requiring significant time and resources for root cause analysis and resolution. By addressing bugs promptly, I was able to prevent these larger issues from arising, and ensure that the system remained stable and reliable.

    Additionally, fixing bugs in a timely manner helped to build trust with my colleagues and stakeholders, and also demonstrated the commitment to the quality and reliability of the system. While it may require some additional effort in the short term, prioritizing the resolution of bugs is ultimately an investment in the long-term stability and performance of the system!


    👨‍💼 Be professional, respectful and stay focused.

    I learned that not all team members may share the same level of dedication or work ethic, and that is normal. At times, it can be frustrating to work with team mates who aren't as committed, however it is important to maintain a positive attitude, stay focused on my own goals and work to the best of my abilities to contribute to the team's success.

    Raise the concerns in a constructive and respectful manner, and try to help a colleague as much as possible for mutual success.


    🤝 Mentoring is fun, exciting and rewarding!

    I experienced that mentoring and teaching junior developers was a valuable learning experience, for both them and me. I was able to share my knowledge and expertise with them, and help them to develop new skills and abilities.

    In turn, working with them provided me with new perspectives and insights, and helped me to identify areas for improvement in my own work. Often times they ended up asking challenging questions that really put my thinking cap on! I also realised that through mentoring and investing time in their development, I was able to build stronger relationships and contribute to the overall success of the team.


    🧘‍♀️ Attention to detail really matters.

    Paying close attention to details, even the small ones, can make a big difference in the quality of work. I learned to review my code carefully, to double-check for errors, write detailed supporting documentations, and to take pride in producing high-quality work. It gives a very accomplished feeling.

    I also feel really happy working with co-workers who pay close attention to detail! ✨


    ✅ Always test your code. Always.

    I ended up crashing the P0 authentication service of the organisation because I had not tested for a bad input causing a nil pointer dereference 😢. I realised that we often test the happy flows with positive cases and end up neglecting the negative test cases. It is these test cases that create the most trouble and hit the edge case flows.

    If your organisation supports canary rollouts, always utilise them! Even for the smallest changes. Canary deployments always helped me gain the confidence that my production deployments will be safe and reliable!

    One really awesome thing I learned at Apna is to always make the new code backward compatible and think about rollback situations before deployments.


    🛀 Time off and self-care is necessary.

    I feel that taking time off is important for maintaining mental and emotional well-being, and it ultimately leads to greater productivity and effectiveness in work.

    By taking time off when needed, whether for personal reasons or to simply recharge, I was able to return to work with a refreshed and energized mindset, allowing me to contribute even better.

    In the early morning or late evening I started doing activities that bring me joy and relaxation. My current favourite is to go on long rides on my road bike 🚲 while listening 🎧 to self growth podcasts!


    Over the past year, I've learned a lot about what it takes to be successful in a professional setting. From the importance of effective communication and collaboration to the value of continuous learning and self-improvement, each experience has taught me something new and valuable!

    By prioritizing self-awareness, openness to feedback, and a growth mindset, I've been able to continuously improve my skills and contribute to team’s success. I'm excited to see what the future holds as I apply these lessons in my career going forward.


    Image Artwork by Sigit Setyo Nugroho.


    If you enjoyed reading this article, checkout another one!