The Journey From Junior Coder to Senior Frontend Engineer

The Journey From Junior Coder to Senior Frontend Engineer

Anand Naidu is a distinguished software engineer who has mastered the art of building resilient systems that serve millions of users at Moniepoint. His journey is a testament to the evolution of a developer, starting from the simple thrill of rendering basic HTML on a mobile screen to architecting complex financial loan flows and back-office automation. Beyond his technical proficiency in frameworks like Angular and React, Anand has distinguished himself as a leader who bridges the gap between solitary coding and cross-team collaboration. His approach combines deep technical rigor with a user-centered philosophy, ensuring that every line of code translates into a seamless experience for business owners and field officers alike.

In this discussion, we explore the nuances of modern frontend engineering, covering the transition from monolithic code to reusable component architectures and the critical importance of performance auditing. Anand shares his strategies for maintaining high-fidelity designs through visual regression testing and reflects on how intentional communication can transform an engineer’s career trajectory. We also delve into the culture of code reviews and the long-term value of self-refactoring as a tool for professional growth.

Transitioning from basic HTML to complex JavaScript often involves a steep learning curve regarding abstractions and asynchronous logic. How did you navigate the shift from direct DOM manipulation to modern frameworks, and what specific steps helped you master difficult concepts like the event loop and promises?

The shift was certainly not instantaneous; it began with the simple magic of an app called HTML Code Play, where seeing text transform into a visual interface felt like possessing a superpower. For a long time, I actually resisted the transition, questioning why I needed the heavy abstractions of React or Angular when I could manipulate the DOM directly with a single function. However, as I moved from building simple mock exam apps to professional systems, the limitations of “spaghetti” code became undeniable. To master the event loop and promises, I had to move beyond just writing code and start studying how the V8 engine and browser compilers actually function. It took a lot of experimentation and “clicking” moments to realize that asynchronous behavior wasn’t just a hurdle, but a fundamental milestone that allowed me to build the responsive, real-world applications I handle today.

Building financial products, such as loan interfaces, requires high consistency and scalability across multiple flows. How can developers effectively transition from monolithic pages to a component-first architecture, and what are the primary benefits of using shared layouts and indicators across related product lines?

The transition requires a complete departure from the habit of copying and pasting code, which I found leads to bloated, heavy, and frustratingly slow codebases. At Moniepoint, I realized that instead of building separate, massive pages for loan requests and approvals, I needed to think in terms of atoms like loan status indicators and approval timelines. By developing these as composable layouts, we were able to ensure that a user navigating from a loan agreement to a detail viewer felt a sense of total familiarity. This architecture drastically reduced our development time, allowing secondary products like Overdrafts to prototype and go live much faster than they would have with a monolithic approach. It transforms the development process from a chore of repetition into a strategic exercise in assembly and refinement.

Human perception often overlooks tiny discrepancies between a Figma design and the final implementation. What specific testing strategies, such as visual regression or test-driven development, ensure high-fidelity results, and how does this approach help in training an engineer’s attention to detail?

It is a psychological reality that our brains create a sense of false familiarity that fills in the gaps between a design and the implementation, often causing us to miss minute errors. To combat this, I treat the design as a puzzle, tackling it component by component from the smallest element upward while keeping the Figma file literally side-by-side with my code. I have become a strong advocate for visual regression tests and test-driven development (TDD) because they force you to define the standard before you get worn out by the implementation details. Writing tests first puts me in the right frame of mind to cover every edge case, and over time, this practice has sharpened my eyes to see the tiny misalignments that I previously would have overlooked. This rigorous approach ensures that when all the pieces are finally assembled, the result is an exact, high-fidelity mirror of the designer’s original vision.

Web applications can suffer from memory leaks and significant lag if performance is not measured with precision. Which specific tools do you recommend for auditing bundle sizes or browser performance, and what architectural changes are necessary when client-side caching begins to cause concurrency issues?

You simply cannot optimize what you cannot measure, and flying blind is a recipe for a sluggish user experience that drives people away. My toolkit for maintaining peak performance includes Lighthouse for quick audits, Web Vitals for real-world metrics, and the Webpack Bundle Analyzer to see exactly what is bloating the build. I once shipped an application that cached results to save time, but it ended up lagging and suffering from concurrency issues that were only visible through deep performance profiling. To fix this, I had to redesign the flow entirely, introducing a locking mechanism to prevent simultaneous fetches and implementing queues to manage the load more effectively. This experience taught me that performance isn’t about random tweaks; it’s about using the Performance API and tools like the ImportCost extension to make intentional, data-driven decisions.

Technical depth is often insufficient for career growth without active cross-team collaboration and vocal participation. For an engineer who naturally prefers working in isolation, what practical methods help in becoming a more visible contributor, and how does leading large technical sessions impact professional development?

As a natural introvert who used to stay silent in meetings of just ten people, I had to learn that doing good work is only half the battle; you must also be seen and heard. The turning point came from a performance review where my manager noted I had a lot to contribute but needed to speak more, which pushed me to start volunteering for engineering committees. I began hosting and coordinating technical sessions that grew from 70 attendees to over 200, eventually even facilitating a session for our CTO, Felix Ike. This shift from isolation to leadership forced me to learn how to simplify complex topics and keep large, diverse teams aligned. Professional development happens when you step out of your comfort zone, whether that’s unmuting your mic in a small meeting or leading a conference talk, because it builds the confidence and visibility necessary for true impact.

Code reviews are frequently viewed as a gatekeeping exercise rather than a collaborative growth opportunity. How can engineers leverage the review process to deepen their understanding of complex logic, and why is refactoring your own historical code a valuable practice for measuring long-term professional evolution?

I used to shy away from giving reviews because I doubted I had anything valuable to add, but I eventually realized that reviewing is one of the fastest ways to sharpen your own logic. When I examine a peer’s implementation, I don’t just look for bugs; I try to understand the “why” behind their specific architectural choices, which often reveals new ways of thinking that I hadn’t considered. I also make it a habit to revisit code I wrote months or years ago to refactor it with the fresh perspective I’ve gained in the interim. This practice of self-reflection provides a tangible yardstick for my growth, allowing me to replace old, clunky patterns with the clarity and elegance that my current self-values. Ultimately, a healthy review culture is about building a shared understanding of quality and ensuring that the team’s collective knowledge continues to rise.

Do you have any advice for our readers?

The most important thing I have learned is that your technical skills will only take you as far as your ability to communicate them allows. It is easy to get lost in the “JavaScript rabbit hole” or spend all your time perfecting a CSS Grid layout, but the engineers who truly change their organizations are those who can explain their decisions to a designer, a PM, or a junior dev. Don’t be afraid to show up, turn on your camera, and share your ideas even if they feel unpolished. Practice your craft with intensity—study the browser engines, read the documentation, and write the tests—but never forget that software engineering is a team sport. If you stay curious and remain willing to speak up, you will find that the technical and professional pieces of the puzzle will naturally start to fall into place.

Subscribe to our weekly news digest.

Join now and become a part of our fast-growing community.

Invalid Email Address
Thanks for Subscribing!
We'll be sending you our best soon!
Something went wrong, please try again later