Introduction
Hi Anjalica, would love to know a bit about your professional background.
I've been working as a backend developer for about five years now. Initially, I was really interested in mathematics and got into computer science during my junior and senior years of high school. That's when I started learning C as my base language. I found it fascinating to implement mathematical functions into something practical that you could see changes on a screen based on what you wrote.
This experience sparked my interest in computer science, and I decided to pursue it in college. However, I quickly realized that you won't learn everything just from textbooks and teachers. It's important to seek out additional opportunities, especially now with the competitive job market. People with more extracurricular experience often have an easier time transitioning into new roles.
During my second semester, I did training in HTML and CSS because it was the most accessible option at the time. Then, in my third semester, I trained in IoT, which was an emerging trend back then. It's crucial to stay on top of industry trends, and Python was one of the most popular upcoming languages in 2018.
By 2019, in my last semester, I secured a job and received offers from both MNCs and startups. I chose to join a startup because I believed I would have more opportunities to learn and grow there. The startup also provided a six-month internship during my final semester, which was a great way to gain practical experience.
At the startup, I began learning Node.js as a backend developer. Since I had experience with C and Python, picking up Node.js was relatively easy due to the similar syntax. As long as you have a strong foundation in the basics, which is really important, you can easily transition to any language. Learning C gives you a solid groundwork in programming fundamentals.
Day in the life of a software engineer
What does a typical day look like for you as a software engineer?
It depends on the company culture. Some place more emphasis on meetings and procedural approaches, while others prioritize coding. In my current fast-paced company, the focus is more on coding. I start my day by tackling pending items like support tickets or features scheduled to go live that morning. I prefer releasing and monitoring updates during the day rather than at night.
After urgent items, I connect with people and have meetings to discuss issues, gather information, etc. Then I dive into core coding work on my current features. I research the best implementation approaches and monitor recently pushed updates. At the end of the day, I list out any missed backlog items and make a plan for the next day. This helps me start the following morning with clear priorities.
What's your mantra to get quality work done?
I set aside dedicated focus time for coding where I put up a "do not disturb" status. This uninterrupted time is key. The other part is gathering all the necessary knowledge and requirements before starting to code. I ask questions and get a full understanding upfront. This avoids rework due to missed details or changing demands later.
Having that dedicated focus time, combined with clarifying the bigger picture context before diving in, helps me deliver quality work efficiently despite the context-switching.
Tech Stack
With so many new tools popping up in the tech world every day, it can be hard to keep track! Can you tell us some specific tools that you swear by? Give us a peek into your tech stack.
1. Hardware Setup
My company provides everything - a laptop, external monitor, keyboard, mouse, and even a mousepad. I don't use the external keyboard much as the laptop keyboard works fine for me. But I do use the mouse when working with the external monitor. Otherwise my focus keeps shifting back to the laptop screen if I use the touchpad.
The external monitor is especially helpful when I'm doing front-end work as part of full-stack development. It allows me to have the code on one side and immediately see the changes on the screen on the other side. For pure back-end, I don't need the extra monitor as much.
2. Software
A. Go-to browser
Chrome is my go-to browser. It's just easier to use in my opinion.
B. Core work and coding tools
For coding, VS Code and Postman are the obvious choices since they are free software with a lot of functionality.
C. Favorite programming language
I don't really have a favorite language at this point. Initially, it was C, but I haven't worked with it much recently so I've kind of forgotten it. In my last job, I used Python, and for the past 2-3 years I've been working with Node.js.
Over time, jumping between languages becomes easier. The syntax and concepts of most high-level languages are fairly similar. What matters more is being adaptable, since the languages you use will change depending on the tech stack of your company and project.
Big Companies vs Startups
I notice you've mostly worked at startups up until now. Firstly, can you tell me your preference between the two?
Initially, I preferred startups because they push you a lot and you learn a lot in a short time. In big companies, you might get benched without projects or not learn as much in 6 months as you would in a startup.
However, it depends on your workload preference and career goals. As you progress, it becomes more about being involved in the overall product, architecture, and scalability rather than just day-to-day coding. Big companies provide better opportunities for handling larger scale and higher request loads compared to small companies.
What are the key qualities of someone who would be a perfect fit for a startup versus big tech?
Patience is one of the biggest criteria you need in a startup.
When I started, there was a project where I had to iterate the same thing 3-5 times because requirements kept changing. Startups can be hectic with people constantly pressuring you. You need to be able to take a stand for yourself and build resilience through rough patches.
In big companies, you can take it easier and learn at a more gradual pace. They give you time to go through things step-by-step without as much direct pressure.
It depends on your learning style. If you have the patience, eagerness, and ability to learn at a fast pace, go for a startup. If you prefer a slower, more thorough learning speed and don't want constantly changing requirements or redoing work, then big companies are better.
Navigating a New Tech Role
1. First month
In the first month, familiarize yourself with everything provided - the UI, software, access, and codebase. You might not understand everything right away, but go through it all. Note down your questions and ask them during knowledge transfer (KT) sessions. Questions are always welcomed in good company. If you're asking questions, it shows you're learning. Don't hesitate to ask as much as you can. The first month will likely be easy, but it's your first impression of the company and their first impression of you.
2. Next 3 months
In the first 3 months, you'll be given small tasks, likely due by the end of month 1 or 3 depending on the company. Ask about all the requirements, but do it efficiently by listing your questions and asking them in one or two sittings to avoid taking too much of your seniors' or colleagues' time.
Aim to complete the feature, get it code reviewed, and push it to production within a week of finishing development. Having your name on a live deployment early on will make a good impression on the company and seniors.
3. 6-12 months
Ownership is one of the biggest things people will look for as you approach your 1-year mark. People will come to you with questions about features you've worked on. Even if the original developer has left and done a KT, not everyone will be familiar with those features if they haven't directly worked on them. Keep updated on everything you've worked on and any changes made to those features or repositories. Position yourself as the owner and expert. Take initiative to resolve issues and support tickets related to your work. Let people come to you with questions and provide helpful answers.
Building teamwork and good relationships within the company is also very important. The first 3 months should involve building communication with your immediate team and other key people like DevOps, front-end, QA, etc.
At the end of someone’s first year, what should their pitch to the manager be to ensure a successful appraisal, considering the KPIs you've mentioned?
As a software engineer approaching my first year-end review, my pitch to the manager would focus on highlighting the tangible impact I've made on the team and the company. I wouldn't just list out tasks or goals achieved, but rather quantify my contributions in a way that resonates with the business objectives.
For instance, I might talk about how I optimized a critical API, reducing its latency by X%, which directly improved the user experience and customer satisfaction metrics. Or I could showcase a new feature I built that generated additional revenue streams or increased operational efficiency, saving the company substantial costs.
The key is to clearly articulate the value I've added, whether it's through successful project deliveries, solving long-standing issues, or taking on critical responsibilities that made a measurable difference. I would back up my accomplishments with hard data and metrics wherever possible, demonstrating my ability to drive real, quantifiable results that positively impacted the company's bottom line.
Upskilling in Tech
So you’ve been in the industry for almost 4 years now - I’m sure you must have picked up new skills during this time. Can you tell me what was the motivation for upskilling and how did you go about it?
1. Motivation
My motivation for continuously upskilling has evolved over the years. Initially, during my first couple of years in the industry, the driving force was primarily to secure better job opportunities and higher compensation. Learning new skills was a means to make myself more marketable and command a higher salary or position.
However, as I gained more experience, I realized that on-the-job learning alone is not sufficient. There are times when your role can become stagnant, or circumstances like layoffs or demotions might force you to re-evaluate your skillset. That realization hit me after my second job – the need to keep myself "market-ready" by consistently upgrading my skills, even before any such disruptive event occurs.
Upskilling isn't just about practicing data structures and algorithms repeatedly, which is often misconstrued as the holy grail for getting a job. While companies like Google and Amazon do emphasize this in their initial screening rounds, the focus shifts as you progress to higher levels. System design, architecture, low-level design concepts, and domain-specific skills become increasingly important for roles like Staff Engineer or Tech Lead.
So, I try to stay ahead of the curve by continuously expanding my knowledge in areas aligning with my current role and future goals. This could mean learning about DevOps practices, scaling systems, front-end frameworks if transitioning to full-stack development, or any other relevant technologies or methodologies. The key is to be proactive and invest time in upskilling, not just to land a new job, but to future-proof my career and remain invaluable to my employer.
2. Learning Approach
When it comes to picking up a new programming language, especially higher-level ones, I don't find the learning curve too steep. The key is to practice coding problems and get hands-on with the language through resources like LeetCode. I typically start with the official documentation to understand the fundamentals and architecture. If reading long documentation isn't my preferred style, I supplement it with video resources on YouTube or other free online platforms.
Once I've exhausted the freely available content and still need more advanced knowledge, that's when I consider investing in paid courses or platforms like Educative.io. Their content is tailored for engineers, covering niche topics you won't find through general resources.
Beyond just coding practice, I make sure to approach learning comprehensively. I dive deep into single threads - whether it's reading blogs, watching videos, exploring StackOverflow discussions, or leveraging AI assistants like ChatGPT. I gather insights from various sources and synthesize my own understanding.
Tech blogs are definitely a go-to for staying updated on the latest trends and best practices. While Medium is popular, I also frequent company blogs and attend free seminars or workshops hosted by giants like Google, Amazon, and AWS. LinkedIn is another great platform with abundant free blog content.
The key is to create a continuous learning habit, be proactive in seeking out diverse resources, and develop a well-rounded, in-depth understanding, not just surface-level knowledge. It's an ongoing process of upskilling that keeps me relevant and valuable in this ever-evolving industry.
Qualities of 10x engineers
In my view, one of the key qualities that set apart truly exceptional engineers is an insatiable hunger for knowledge and continuous learning. The best ones are always eager to expand their skillset, constantly exploring new technologies, methodologies, and best practices. They don't just rely on formal training or wait for opportunities - they take the initiative to learn on their own through self-study, research, and experimentation.
Great engineers also understand that learning is a two-way street. They are equally willing to learn from those above and below them in the hierarchy.
They never underestimate the value junior team members or interns can bring through their fresh perspectives and unique knowledge. An open mindset to giving and receiving knowledge creates a virtuous cycle of continuous growth.
By freely sharing their expertise with juniors and peers, elite engineers build a strong culture of knowledge-sharing within their teams and organizations. Their approachability and willingness to teach make them go-to resources, fostering an environment of trust and collaboration. As they generously impart their wisdom, they gain respect and goodwill from colleagues at all levels.
Beyond technical progress, this spirit of lifelong learning and knowledge dissemination is a hallmark of cultural excellence. It establishes great engineers as multi-faceted leaders who uplift those around them while staying at the cutting edge themselves. This powerful combination of unparalleled skills and strong cultural impact is what truly sets them apart from the rest of our industry.
What advice would you give someone to become a 10x engineer?
One of the most important mindsets to cultivate is the ability to separate your professional and personal lives. Early on, it's common to take workplace situations or feedback too personally and let it affect you emotionally. However, I've learned that this tendency can be extremely draining and counterproductive.
My advice would be - make a conscious effort to leave work at work. Once you step out of the office, let go of any stresses, criticisms, or intense situations you faced that day. Don't carry that baggage home with you. Your personal time and space should be reserved for relaxation and recharging. If you allow work pressures to consume you around the clock, you'll quickly burn out and lose the mental freshness required for continuous learning.
There will inevitably be difficult people, toxic cultures, or high-pressure scenarios in some workplaces. But don't take things to heart or get bogged down by what doesn't directly benefit your growth.
Develop the mental resilience to filter out the noise and focus solely on what helps you improve as an engineer.
Maintain an open mindset, but also cultivate the wisdom to identify what's worth your time and energy versus what's better off ignored. Protect your work-life balance fiercely. It's this rejuvenation that will enable you to embrace new knowledge, upskill consistently, and elevate your capabilities in a sustainable manner over the long haul.
How do you think companies can retain these engineers?
From my perspective, there are two critical factors that companies need to focus on to retain dedicated, talented engineers in the long run - competitive compensation and a nurturing work culture.
While financial incentives are certainly important, I've seen many cases where engineers choose to stay with a company despite missing out on raises or promotions in a given year. This is typically because the workplace culture and environment are so positive and conducive that it overrides monetary considerations, at least temporarily.
Companies like Google are well-known for fostering incredible cultures that make employees feel truly valued, engaged, and willing to go the extra mile. Even my former colleagues who didn't get compensated as expected chose to stick around because of how comfortable and enriching the overall work experience was.
On the flip side, there are organizations that may not have exemplary cultures, but make up for it through highly competitive pay and benefits. For many engineers juggling financial obligations, this can be enough of an incentive to retain them, despite a less-than-ideal work environment.
The ideal scenario, of course, is when a company manages to strike the right balance - providing market-leading compensation packages while cultivating an amazing culture that nurtures growth, work-life balance, and a true sense of belonging. Those are the hallmarks of an organization that top engineers would be loyal to and have no motivation to leave.
My advice to companies would be to make employee experience a top priority alongside fair pay. Invest in professional development, celebrate wins, promote psychological safety, and build an inclusive culture.
Combined with market-competitive salaries and growth opportunities, this combination is powerful in attracting and retaining the best engineering talent long-term.
Negotiating salaries in Tech
My approach starts with thorough market research to understand the appropriate pay range for my role and experience level. There are several resources I leverage - from researching what competitors are offering for similar positions on sites like Glassdoor and anonymous forums like Blind, to looking at industry reports on generic salary bands.
For a given role, there may be a fairly wide range, for example, between 22 LPA to 32 LPA. Realistically, I try to peg my expected number closer to the lower end of what a high-paying company would offer, unless I have exceptionally specialized skills to command the higher brackets.
Other factors like year-on-year inflation adjustments also come into play when determining a fair ask. If my last drawn salary was 1 LPA and typical inflation is 2-3%, I can reasonably expect that raise just to keep pace with the market.
Once I've done my homework, the key is to make my case politely and respectfully during negotiations. It's easy to get flustered or upset if the offer seems unjust, but I've learned to maintain composure. If the company truly values me, they will try to meet my reasonable expectations.
However, I also acknowledge that sometimes the lack of a competitive offer is a red flag about their inability or unwillingness to compensate me fairly. In those cases, no amount of negotiation may resolve the gap. My advice is - don't be afraid to walk away from an insulting offer. Company loyalty is a two-way street. They must show they are committed to retaining you, just as you have been dedicated to their success.
Ultimately, open and respectful conversations on both sides, backed by diligent research, pave the way for a win-win salary negotiation experience. But there's also wisdom in recognizing when to pursue other opportunities that truly value your worth.
Assessing Job Offers: Beyond Salary
How do you assess multiple job offers beyond just the CTC?
When evaluating job offers beyond just the compensation, there are several key factors I would prioritize based on my current life stage and career goals:
1. Work-Life Balance
Depending on my age and personal situation, the ability to maintain a healthy work-life balance may take precedence. If I'm at a life stage where I have greater family commitments, I would value an employer that provides generous leave policies, flexible schedules, and a culture that discourages overworking.
2. Learning and Growth Opportunities
At this point in my career, continuous learning remains my top priority. I'm willing to take on a role with a more demanding workload if it allows me to upskill rapidly and be exposed to new technologies/domains under experienced mentors.
3. Work Culture and Environment
The kind of workplace culture and people I'll be surrounded by matters a lot. I look for companies that cultivate collaboration, psychological safety, and continuous learning. Things like office trips, team activities, and the general vibe of employees can be tiebreakers.
4. Non-Monetary Benefits
Perks like health insurance, leave policies, retirement plans, gym memberships, food and travel allowances etc. vastly impact the overall compensation experience beyond just the in-hand salary.
5. Work Model
I would definitely factor in whether the role is completely remote, hybrid, or requires relocating to an office location I'm not enthusiastic about. My preference leans towards at least a hybrid model for the networking and collaboration aspects.
In essence, when the monetary compensation is comparable, I evaluate intangible factors like work-life balance, growth prospects, company culture, and work environment to determine the most holistic long-term fit for my needs and aspirations as an engineer. The complete package, not just a paycheck, drives my decision.
Assessing Job Offers: Promotion vs New Job
At some point, you or someone you know might have an offer for a new role outside your current company or a promotion internally. How would you decide between the two?
This is often a tough call to make, as there are several variables to weigh carefully. On the financial front, I'd start by evaluating how substantial the promotion raise is compared to the new offer's compensation package. Raw numbers alone shouldn't dictate the decision, but it's an important data point.
I'd also consider the length of my tenure at the current company. If I've been there for a while, taking the promotion could be advantageous for my resume and perceived career stability. Frequent job switches, unless absolutely necessary, may not portray well.
However, the promotion needs to be more than just a title change. I'd scrutinize whether it unlocks meaningful new responsibilities, learning opportunities and upward mobility. A promotion without commensurate financial rewards or career growth is merely putting lipstick on a pig.
Diving deeper, I'd assess my fundamental reasons for exploring external options to begin with. Am I simply disgruntled with my current role and scope of work? In that case, an internal promotion to a new team or charter could be rejuvenating. Or is my restlessness stemming from issues with the company's culture, values, or leadership that a promotion cannot resolve?
The new company's reputation, work model, growth trajectory, and how their opportunities align with my long-term goals would be a key part of the evaluation. Benefits like stock options or other incentives that vest over at my current company are also factors that could dictate the right move.
I think it's a highly personal decision driven by the specific circumstances of each opportunity on the table. I'd carefully weigh professional growth, financial implications, work-life balance, and gut instinct on the right cultural fit to determine the path that will be most fulfilling and propel my career in a sustainable fashion.
Navigating Layoffs
The past year has been really tough for engineers facing layoffs. Did anyone in your circle get laid off in the last year?
Yes, quite a few of my work friends.
Do you have any advice for people going through a layoff right now?
The first piece of advice is - take a pause. Don't let anxiety or desperation drive you into an unwise job search frenzy immediately after the layoff. Use this time to reflect, recharge, and rebuild your confidence. Stepping back allows you to analyze the situation objectively, beyond taking it as a personal failing.
During this breather period, ensure you have a structured routine that tends to your physical and mental well-being. Exercising, meditating, and spending time with family - these lifestyle factors are critical for resilience. An anxious, burned-out mindset can seep through in interviews and negatively impact your prospects.
Approach your job search methodically and don't be disheartened by multiple rejections along the way. It's a numbers game, so persistence is key. However, don't compromise on your expectations or settle for roles that undervalue your skills and experience, no matter how tempting in the interim.
Additionally, view this transition as an opportunity to upskill. Invest time in learning new technologies, contribute to open-source projects, build coding samples or freelance on the side. Not only do these experiences keep you sharp, but they demonstrate your continued passion for professional growth to prospective employers.
From the stories of those in my circle who successfully rebounded, the average time from layoff to landing a new role was around 3-6 months. Admittedly, a grueling process - but one made more fruitful by maintaining the right mindset, and routines and using this period to meaningfully develop their profiles.
Ultimately, a layoff is undoubtedly challenging, but it need not define your trajectory. With poise, discipline, and a growth mindset, you can navigate this chapter and emerge even stronger in your technical abilities and career prospects.
Avoiding Burnout and Maintaining Work-life Balance
Given that you’ve spent a long time in this fast-paced industry - what strategies do you recommend for avoiding burnout and maintaining a healthy work-life balance?
I've personally gone through periods of burnout in my career, most recently at my previous job. The telltale signs for me were a distinct lack of motivation and a sense of apathy towards work that I once felt passionate about. Simple tasks that were once engaging started feeling tedious and boring. I could still logically think through solutions, but the drive to actually implement them had fizzled out. It was an unmistakable feeling of being completely drained.
When I noticed myself slipping into that state, the most critical step was to take a step back and give myself a mental break from the grind. I realized that powering through and forcing myself to work would only deepen the burnout. Instead, I intentionally disengaged from work, took some vacation time away from my laptop, and focused on other aspects of my life.
This allowed me to regain perspective on maintaining a sustainable work-life balance. In tech, it's so easy to get consumed by deadlines, meetings, and being constantly "on." But I've learned the importance of setting firm boundaries. I diligently schedule focus time on my calendar for deep work, and once my workday ends, I make a concerted effort to log off, silence notifications and be fully present outside of office hours.
Occasionally, crunches or time-sensitive releases may require going above and beyond. But I ensure those instances are the exception, not the norm. Because once the precedent of being available around the clock is set, it's incredibly difficult for teams to uncondition that expectation from you.
If I'm struggling to course-correct on my own, I've found it helpful to have an open conversation with my manager about feeling burnt out and needing to recalibrate my workload for better balance. A supportive manager can be instrumental in adjusting responsibilities or securing intermittent breaks to recharge.
Ultimately, taking preventive measures through better habits and open communication is preferable to letting burnout settle in. But when it does strike, recognizing it early and proactively taking remedial action is crucial to avoid skeptical consequences. Burnout recovery requires conscious prioritization of self-care and recharging - because, at the end of the day, our mental well-being is paramount to sustaining impactful engineering careers long-term.