Few professionals in the dynamic field of software engineering leave as indelible a mark as Vishwanath Eswarakrishnan. With a career that spans over a decade, his evolution from a passionate coder to a senior software engineer at Meta offers a unique window into personal growth and technological advancements.
In this interview, Vishwanath shares his experiences, challenges, and the invaluable wisdom he has garnered while shaping the digital landscape.
What inspired you to pursue a career in software engineering, and how did your initial interests evolve into the specialization you have today?
I completed my schooling in India, where the educational system is heavily focused on academics. Consequently, I was introduced to coding at an early age. The first technologies I encountered were HTML and JavaScript, which we extensively used in school assignments. I was deeply impressed by the capabilities of coding and its empowerment for developers. Excelling in coding fueled my enthusiasm further.
I harbored a curiosity for various aspects of computers, ranging from hardware assembly for my own PCs to software operations like running antivirus programs and indulging in gaming during my childhood. This passion led me to pursue a major in computer science during my undergraduate studies, followed by a master’s degree in computer science at the University of Southern California. I have been based in the Bay Area after that, since 2014.
Can you walk us through your professional journey, highlighting your experience at top-tier companies before joining Meta?
I embarked on my professional journey with an internship at Netapp, where I collaborated closely with the Security QA team. This initial exposure paved the way for a full-time role at Netapp’s Sunnyvale office. During my tenure there, I expressed a keen interest in development and transitioned to working on Security features alongside the development team. Specifically, I focused on enhancing the Netapp ONTAP Operating System’s application layer security features.
Transitioning from Netapp, I found myself at Nimble Storage, a startup experiencing rapid growth. Within a similar team, I continued to delve into Security features. Nimble Storage offered a dynamic environment that allowed me to gain valuable insights into the end-to-end development process within a smaller team context. Beginning with authentication and authorization, my role gradually expanded to encompass the development of encryption at rest features for the Nimble OS (NimOS). Additionally, I collaborated closely with UI Engineers, ensuring seamless integration of frontend elements with backend functionalities. This collaboration extended to designing features end-to-end, encompassing both user interface and underlying system architecture. Furthermore, I addressed support issues as P1 tasks, prioritizing the resolution of support pain points directly linked to customer concerns.
A notable milestone during my time at Nimble Storage was leading the implementation of the first cloud-related feature, which involved establishing trust anchors on NimOS to foster mutual trust among all Nimble-owned devices. This endeavor marked my inaugural experience as a lead, requiring close collaboration with cross-team engineers to achieve project objectives.
Transitioning to HPE Nimble Storage post-acquisition, I undertook a significant project involving the implementation of Synchronous Replication with encryption support. This initiative entailed securely transferring encryption keys between devices in real-time, presenting notable technical challenges that demanded innovative solutions.
My interest in cloud technologies led me to eBay, where I joined the Tess team within the infrastructure division. Here, I immersed myself in compute infrastructure, particularly focusing on Kubernetes-related features within Tess – a Kubernetes wrapper with additional functionalities such as federation. My contributions at eBay spanned several projects, including the automation of cluster joins, which significantly reduced deployment time and enhanced developer productivity. Furthermore, at eBay, I played a key role in the Continuous Integration and Continuous Deployment (CI/CD) pipeline using Tekton. This involved automating various stages of the software development lifecycle, ensuring efficient and reliable delivery of code changes. Additionally, I led initiatives involving the etcd operator and contributed to projects like Sentinel (eBay’s home-grown distributed firewall) and Calico, showcasing my proficiency in troubleshooting complex engineering issues.
Seeking new challenges, I transitioned to Cruise, an autonomous vehicle company, where I joined the Simulation infrastructure team. Here, I contributed to projects involving compute infrastructure, including Autoscaler integration with Azure and enhancing worker agent functionalities to expose compute utilization metrics. Notably, I spearheaded the setup of on-premises compute infrastructure for testing and simulations, a critical endeavor for Cruise’s future development.
In March 2024, I embarked on a new chapter of my career by joining Meta with a focus on expanding my knowledge in the Ads domain. Joining the Instagram Ad Metrics Platform team, I aim to leverage my skills to make a positive impact on society at Meta’s scale, while continuing to broaden my expertise in the Ads domain.
You’re currently working on ads infrastructure for Instagram at Meta. Could you describe the scope of your work and its impact on the platform?
In my role as a senior software engineer at Meta, I operate as a versatile specialist. My responsibilities encompass a wide array of tasks, including designing features from inception to execution, fostering collaboration and alignment with stakeholders and key principals, and spearheading implementation alongside a dedicated team of engineers. With my leadership, I ensure meticulous tracking of progress, providing regular status updates to management. The impact of my contributions within this team directly influences Meta’s revenue, given the pivotal role that Ads play in our core business. Notably, Instagram stands out as our most prominent platform, with billions of dollars at stake whenever alterations are made to anything Ads-related.
What are some of the most significant technical challenges you face in your current role, and how do you approach solving them?
In my current position, as I continue to acquaint myself with the intricacies of Ads and Meta’s operations, I observe a high level of efficiency in developer productivity. Team members remain deeply focused on business logic and their respective tasks, as much of the operational overhead is effectively managed. For instance, after code is checked in, concerns about testing and deployment are alleviated, allowing me to concentrate on writing tests without delving into the underlying infrastructure or deployment processes. While this streamlined workflow is highly advantageous, it presents its own set of challenges. Firstly, navigating a new domain like Ads entails familiarizing oneself with its terminology, which requires time and effort.
Moreover, the prevalence of code generation utilities means deciphering auto-generated code, which can be complex and time-consuming. Additionally, Meta’s infrastructure has its own unique intricacies, necessitating a learning curve. Furthermore, the projects often involve cross-functional collaboration, which demands time to establish oneself and deliver impactful features end-to-end. Currently, I manage these challenges by extensively referring to internal Wikis, engaging in discussions with colleagues to gather knowledge and perspectives. Undoubtedly, Meta presents a distinct environment compared to my previous experiences.
As a technical advisor for startups, what common challenges do these companies face and how do you help them navigate these hurdles?
One of the most prevalent challenges faced by startups is the dearth of technical expertise, largely due to the limited availability of experienced professionals willing to work for lower compensation. Even in cases where startups are well-funded, they often refrain from hiring highly skilled engineers who command higher salaries, individuals with extensive experience across diverse domains or reputable companies, and those capable of developing end-to-end systems.
Consequently, engineers within such startups may resort to implementing solutions based on their existing knowledge, which may not necessarily align with the optimal approach for the project at hand. This isn’t a reflection of their capabilities but rather stems from their limited exposure to alternative technologies.
In my experience, when advising startups on the implementation of products or features from scratch, I emphasize the importance of establishing robust processes. For instance, I recommend starting with the adoption of version control systems such as git for every project, followed by selecting a tech stack tailored to the specific needs of the project or product. Subsequently, I advocate for the implementation of processes like pull requests and code reviews to ensure code quality before integration. Additionally, I stress the significance of automation to streamline repetitive tasks. Essentially, my guidance to startups draws upon my own experiences and aims to assist them in building scalable systems effectively.
Navigating the realm of scaling software presents its unique set of challenges. I offer guidance to startups by advising them to harness various technologies offered by cloud service providers. This encompasses everything from hosting websites to implementing microservices, emphasizing the decoupling of storage from compute, and providing direction throughout various stages of the development cycle. Additionally, I advocate for the incorporation of robust unit testing practices and end-to-end testing strategies to ensure the reliability and functionality of their software solutions.
You have a passion for building software from scratch. What do you find most rewarding about this process? Can you share an example of a project you found particularly fulfilling?
Embarking on the journey of building software from scratch not only enhances your skills as a coder but also encompasses various aspects beyond just coding. It involves developing measures that increase the reliability and efficiency of the system as a whole, encompassing tasks such as monitoring, profiling, building automation and others. Engineering entails the process of problem-solving and the satisfaction derived from successfully building and deploying a software solution without significant issues is unparalleled. While minor bugs may surface despite extensive development efforts, a well-crafted software solution functions smoothly. Therefore, I believe that the experience of building software from the ground up is invaluable and essential for every engineer, as it leads to personal growth and improvement over time.
Reflecting on my past projects, I’ve found immense satisfaction in each endeavor. Every piece of work contributes value in some form or another, as tasks wouldn’t exist if they didn’t serve a purpose. Whether it’s guiding startups or collaborating with established organizations, witnessing successful project outcomes under my guidance is a humbling experience every time.
Mentoring seems to be a significant part of your career. How do you approach mentorship, and what key pieces of advice do you find yourself repeating to junior engineers?
I foster a welcoming rapport with those seeking guidance, believing in the importance of being readily approachable to ensure no question is dismissed as trivial. In my interactions, I frequently reiterate several key points:
- Software engineering is an ongoing journey of discovery; no one possesses all the answers.
- Prioritize doing things right, even if it requires additional time. Taking shortcuts inevitably leads to more extensive work down the line.
- Testing isn’t an optional task—it’s essential for ensuring software reliability.
- Embrace automation to streamline manual processes, as the time saved compounds over time.
- When uncertain, conduct a Proof of Concept or develop a simple program to validate concepts independently, as assistance may not always be readily available.
- Solidify your understanding by conceptualizing key principles as you learn—engineering isn’t about rote memorization.
- Prioritize your well-being and strive for a stress-free lifestyle; maintaining good health physically and mentally is paramount for long-term success.
Looking back at your career so far, what would you consider your greatest achievement, and why?
I consider my most significant accomplishments to be the establishment of trust within every organization I’ve been a part of. Colleagues begin to place their trust in me shortly after my onboarding, observing the quality of my work and deliverables. This sense of trust isn’t a one-time occurrence but rather a recurring acknowledgment. It’s a deeply humbling experience, and I attribute much of my success to the guidance and mentorship of my teachers and mentors who have supported me along the way. Building trust within an organization, both within my own team and across others, is a gradual process. However, it gives me the opportunity to spearhead impactful projects that are successfully delivered through collaborative teamwork.
Thank you Vishwanath for your time!
From the editor….
Vishwanath Eswarakrishnan’s career encapsulates a profound journey through the realms of software engineering, marked by significant contributions and relentless innovation. His insights illuminate the path for emerging engineers and underscore the importance of adaptability, continuous learning, and the drive to improve.
As he continues to shape the future at Meta and mentor the next wave of engineering talent, Vishwanath remains a pivotal figure in the tech community, inspiring others to achieve excellence and make their own impact in the evolving digital world.