Flexiple Logo
  1. Home
  2. Blogs
  3. Tech Interviews
  4. Bharadwaj Reddy, Senior Software Developer at Anarock Technology

Bharadwaj Reddy, Senior Software Developer at Anarock Technology

Author image

Ekta Singh

Content Marketer

Published on Tue May 28 2024

Introduction

Hello Bharadwaj, would love to know about your professional l background.
 

Hi, I'm Bharadwaj! I've been working at Anarock Technology for the past three and a half to four years. It's a startup in the real estate industry, and we provide tech solutions. I joined this company right after graduating from BITS Pilani in 2020 - so I've only worked here.

The culture is great, and I'm currently a senior software developer managing two teams. I mainly work with Python and Elixir. Recently, we've been working on Large Language Models (LLM), which has been quite interesting.

Day in the life of a software engineer

What does a typical day look like for you as a software engineer?

It generally depends on the cycle we are in. Currently, we are working on LLM and need to ship it quickly, so there are no sprints as such. Tasks are distributed whenever you're done with the previous one. There are currently a lot of tasks already piled up, so I pick from that depending on the priority and discussions with the product team.

We start the day with a standup call where we discuss the current progress of the tasks. We use Jira to track all the tasks. Once a task is done or if it's in QA and they block us, we'll have a call with the product team to discuss and pick up new tasks.

Currently, I am not coding a lot. Most of my work, around 50-60%, involves designing and participating in tech discussions. It's a phase, right? In the beginning, I was doing more coding, but now I'm just guiding my juniors because the initial setup is done. It varies depending on the project and its stage.

What’s your mantra to get quality work done daily?

I try to manage my time effectively, but it can be challenging due to the number of calls and blockers that come up. Initially, I was managing seven people, which was very hectic because there was a lot of dependency on me. Now, I'm managing two different teams with a total of four people, but there's still a lot of context-switching and things going on.

To ensure I have focused time for quality work, I try to dedicate specific parts of the day to each team. Generally, I'll deal with one team in the morning and the other team in the second half of the day. However, it doesn't always happen that way, and there can be overlap.

What I do is try to pick a time when nobody will disturb me. We've set our standup a little late, starting at around 11:30 AM. This means that before the standup, I can start early and have time to myself. During this period, I can focus on getting my tasks done without any disturbance. After the standup, there are mostly calls where I'll be clearing blockers and dealing with other issues. So time with no disturbance is crucial. 

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

I prefer working on my MacBook Pro. I know many people prefer external keyboards, but I'm used to the laptop one, and since I don't code as much now, it doesn't impact me that much. 

For the monitor, the company provided one. I rarely use it, honestly. Some people, especially designers, prefer using an external monitor, but for me, I don't use it much.

2. Software 

A. Go-to browser

Google Chrome is an easy choice. 

B. Core work and coding tools

For the text editor, I mainly use VS Code. Whichever language you're working on, you'll have a lot of extensions available in VS Code. I just install everything to make my life easier. Apart from that, for the terminal, I use iTerm. It makes things much easier and faster because it's just like a co-pilot. It shows you all the commands, provides recommendations and has a good UI that you can customize however you want.

We mostly use VMs for development, so there's no specific local setup. We install whatever language, framework, and libraries we need on the VM. Initially, I was working in Elixir, which is a relatively new language based on Erlang. WhatsApp uses Erlang. We also used Ruby here and there, mainly for cross-service dependencies.

Currently, we are primarily using Python and have been using it for almost a month now.

C. Favorite programming language

I do enjoy working with Python a lot!

Big Companies vs Startups 

I noticed that you’ve worked at a startup for the first 3 years of your career, do you have a preference for startups over big companies? 

After graduating, joining a startup was an intentional choice to see how things are built from scratch.

How would you compare startups with big tech?

In big companies, you'll get a lot of comfort and job security, and your learning pace is slower compared to startups. Things are more automated in MNCs, so you don't learn things from a basic level since most of the things are already done for you. It's mostly integration work there.

The main advantage of a startup is that you'll be learning a lot. It's very fast-paced, so you'll learn future-oriented things. You also have more control over what you can do because there's not much hierarchy; there are only a few people. Here, I interact with the CTO almost every day. It's very comfortable talking to them, and you can suggest anything, or they can suggest anything to you.

Another significant difference is the level of responsibility you get in a startup compared to a big company. In a big company, you might not even have access to the staging environment, whereas here we have access to production as well. We have a lot of responsibilities and mentor more people. In the best-case scenario at a big company, I might be mentoring one or two people, but here, I have a lot more responsibility and things to do.

What are the key qualities of someone who would be a perfect fit for a startup versus big tech?

If you're in the initial phases of your career and are thinking of learning new things or like a fast-paced environment, then a startup is a good fit. However, if you prioritize comfort, security, and a slower pace, an MNC might be more suitable.

Since we're on the topic of getting into tech, I'd love to hear your top tips for someone navigating their first 12 months in a role. Let's break it down into three parts: the ideal 1-month, 3-month, and 6 to 12-month period.

1. First month

In the first month of starting a new tech role, the most important thing is to understand the product you're working on. Your primary goal should be to become free of any dependency on your mentor or anyone else. It's easier for you to learn things on your own because when someone tells you how to do something, you won't be learning as much as when you figure it out yourself. 

Take responsibility and keep track of all the things that are going on. Attend meetings and understand the tasks being worked on. If anything seems interesting, check it out and see how it's being implemented. You can also review pull requests (PRs) to get a better understanding of what the product team is currently working on and how they're implementing it. 

Additionally, constantly upskill in the tech stack you're working with. If you're already familiar with it, that's great, but if not, make sure to become proficient in it during this initial period. Getting to know the tech stack and the product should be your top priority in the first month.

2. Next 3 Months:

After gaining a solid understanding of the product and tech stack, the next three months should focus on collaboration with other team members. While you'll be regularly interacting with your mentors, it's important to engage with other team members as well. Talk to them, learn from their perspectives, and share your own. This collaboration will help you grow and provide immediate feedback on your mistakes and successes.

By this point, you should be able to add inputs to the team's discussions and contribute to the overall progress. Continue to review PRs and stay updated on the latest developments in the product. Keep honing your skills in the tech stack and explore any new technologies that might be relevant to your work.

3. 6 to 12 Months:

As you approach the 6-12 month mark, you should be working independently and taking ownership of projects. 

When starting a new project or feature, the first thing to do is to fix the technical flow before writing any code. Research the problem and talk to your mentors and seniors to design a complete flow. Work on it yourself first and then seek feedback and suggestions for improvement. 

Documentation is crucial at this stage, so make sure to document everything you're doing. It will make things much easier going forward. Use design patterns and create a complete design before starting the coding process. Once you have a solid design in place, coding should be relatively straightforward, as there are plenty of online resources available. 

The architecture and design part is the most important aspect to focus on during this period. Continue collaborating with your team, sharing your knowledge, and learning from others. By the end of your first year, you should be a valuable contributor to your team and the company.

If you had to give a KPI to know that you’ve succeeded in each of these phases, what would those be? 

1. First month

Your primary goal in the first month should be to familiarize yourself with the team, the company culture, the tech stack, and the product.

2. Next 3 Months:

After gaining a solid understanding of the team and the product, your focus should shift towards becoming more independent in your work. Set a personal goal to minimize the number of review changes required on your pull requests (PRs) and the features you ship.

When designing a flow and presenting it to your seniors, aim for near-perfection. There should be minimal issues and very few review changes required once you've submitted your work. Strive to achieve this level of independence and quality in your work during this period.

3. 6 to 12 Months:

As you progress towards the 6-12 month mark, your personal goals should revolve around shipping features with minimal bugs. Before taking up a task, make sure you thoroughly understand the requirements and the product's objectives.

Aim to reach a point where there are almost no review changes needed on your PRs and the features you ship are nearly bug-free. Continuously learn and improve yourself to maintain this level of quality in your work.

If you find that you've reached a stage where you're not learning anything new and have mastered your current role, it might be time to consider switching companies to take on new challenges and continue your growth.

Finally, let’s say someone has completed their first year at their job, at the end of 12 months, if they want to have a successful appraisal, what should their pitch be to the manager given the KPIs you’ve mentioned?

Communication is crucial, even in the initial phases. Whenever you're designing or working on a significant feature, make sure to discuss it with your tech manager and get their input.

Tech managers are usually very busy but try to involve them in the process so they understand your thought process and how good you are as a developer. Even if they're not directly involved, allow them to review your work. It's essential that people, especially your managers and product managers, know what you're doing and the efforts you're putting in. If people don't know what you're doing, there's no point, as most people may not recognize your contributions.

Your mentor should also be aware of what you're working on. Hopefully, you'll have a good manager, and there won't be any issues, but in most cases, it's important to keep them informed. In the meeting itself, you should highlight your key achievements and goals that were met over the past year. Provide specific examples of your contributions and demonstrate how they positively impacted the team and the company.

Additionally, you should discuss any significant challenges you faced and explain how you overcame them. This showcases your problem-solving abilities and capacity for adapting to difficult situations. Be sure to emphasize your communication and collaboration skills by sharing instances where you effectively communicated and collaborated with your team members, managers, and other stakeholders involved.

If you proactively took on additional responsibilities beyond your regular duties, you should demonstrate your eagerness and willingness to go above and beyond what was expected of you.

Remember, the key is to have open and honest communication with your manager throughout the year and not just towards the end of the year.

Upskilling in Tech 

So you’ve been in the industry for over 10 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

In my journey, I've found that joining the community of the tech stack you're working with is a great way to upskill. For example, if you're using Python or Elixir, there are many good communities you can join. In these communities, people post a lot of their issues, and you can read through them to understand the level at which you're working.

Initially, when you see these posts, you may not understand what they're asking or the things they're discussing. That's when it clicks, and you realize that you're only using the basics and working on the surface level. This realization motivates you to go deeper and learn more.

Another way to upskill is when you experience a problem and have to fix it, so that’s always there. I think I’m also motivated by a genuine curiosity and enthusiasm to learn and grow. It's about recognizing that there's always room for improvement and that by continuously expanding your skill set, you can make valuable contributions to your team and the projects you work on.

2. Learning approach

I usually dedicate 1-2 hours or whatever I’m comfortable with to browse through forums, blogs, and other resources. If I find an interesting topic, I spend more time diving deeper into it.

While taking notes is an option, most people don't go back and read them. If you find something good or useful, save the link in a notepad or bookmark the section for future reference. When learning new skills, look for opportunities to apply them in your current job or personal projects. 

During the COVID-19 pandemic, many people worked on interesting projects like building bots to book vaccination slots. You can work on similar projects that align with your interests. If you come across an interesting idea or problem in a forum, try to solve it yourself and think about how you would approach it.

Remember, the key is to consistently dedicate time to learning, actively engage with the community, and seek out opportunities to apply your new skills in real-world scenarios. By doing so, you'll be able to continuously improve and stay updated with the latest trends and best practices in your field.

Qualities of 10x engineers

I'm sure you've come across your fair share of engineers often labeled as '10x engineers' in your career. What do you think sets these folks apart? Tell us qualities or traits you believe contribute to someone being considered a '10x engineer'?

For me, the best engineers strike a balance between strong technical abilities and great soft skills. On the technical side, they put in a ton of hard work - reading up on things, and doing personal projects to push their skills further. The work you do day-to-day only exposes you to so much. But the engineers I really admire go above and beyond to level themselves up.

That said, it's not just about pure coding talent. The top engineers also have excellent communication abilities. They can explain complex topics patiently and avoid putting others down for asking questions. Nobody wants to approach someone who makes them feel small or wastes their time. The best engineers lift others.

It's also about having a growth mindset and wanting to optimize things rather than just checking boxes.

At an early startup phase, you might just need to hustle and get an MVP shipped. But once things stabilize, the greats start looking for ways to take it to the next level - finding inefficiencies, and making things faster and cleaner. They never settle for "good enough”.

What advice would you give someone to become a 10x engineer?

First and foremost, you should have a good idea of how you performed in the interview. You'll know how many questions you answered and how well you answered them. This will give you a sense of where you stand.

It's also important to have an idea of how your peers are doing and how much they're earning. There are a lot of websites out there where people post their compensation details and interview experiences. You can use these as a reference point.

Most companies have a salary band for each role. For example, for an SD1 (Software Developer 1) position, they might have a band of 12 to 18 lakhs per annum. If you're asking for something higher, like 24 lakhs, then you should have skills that are more in line with an SD2 (Software Developer 2) position.

These salary bands are usually pretty similar across good companies because they're very competitive. There might be some overlap, especially in the initial phases, but as you move into senior roles, the overlap becomes less significant.

When it comes to negotiating, you need to be really clear about what you bring to the table. In startups, it's common for people to quietly take on more responsibilities without getting a formal promotion. For example, you might be doing the work of an SD2, like mentoring one or two people, but still have the title of SD1.

In such cases, you can make a strong case for a salary increase. You can say something like, "I'm already taking on SD2 responsibilities and mentoring others. I think I deserve an appraisal in this switch." You can also directly communicate the market rate and what other companies are offering for similar roles.

The key is to do your research, know your worth, and be confident in your skills and contributions. If you have a clear understanding of the value you bring to the company, you'll be in a much stronger position to negotiate a fair compensation package.

Negotiating salaries in Tech 

Negotiating salaries can be very tricky. Can you share what’s your typical approach to it? 

First and foremost, you should have a good idea of how you performed in the interview. You'll know how many questions you answered and how well you answered them. This will give you a sense of where you stand.

It's also important to have an idea of how your peers are doing and how much they're earning. There are a lot of websites out there where people post their compensation details and interview experiences. You can use these as a reference point.

Most companies have a salary band for each role. For example, for an SD1 (Software Developer 1) position, they might have a band of 12 to 18 lakhs per annum. If you're asking for something higher, like 24 lakhs, then you should have skills that are more in line with an SD2 (Software Developer 2) position.

These salary bands are usually pretty similar across good companies because they're very competitive. There might be some overlap, especially in the initial phases, but as you move into senior roles, the overlap becomes less significant.

When it comes to negotiating, you need to be really clear about what you bring to the table. In startups, it's common for people to quietly take on more responsibilities without getting a formal promotion. For example, you might be doing the work of an SD2, like mentoring one or two people, but still have the title of SD1.

In such cases, you can make a strong case for a salary increase. You can say something like, "I'm already taking on SD2 responsibilities and mentoring others. I think I deserve an appraisal in this switch." You can also directly communicate the market rate and what other companies are offering for similar roles.

The key is to do your research, know your worth, and be confident in your skills and contributions.

If you have a clear understanding of the value you bring to the company, you'll be in a much stronger position to negotiate a fair compensation package.

Assessing Job Offers: Beyond Salary

How do you assess multiple job offers beyond just the CTC?  

This is actually so important because - in today's startup and big company landscape, the base salaries are often quite similar. The real differentiators come down to the perks, company culture, and the company's revenue and growth potential.

Factors to consider: 

1. Stock options 

For example, let's say you have an offer from a company like Nvidia. A couple of years back, the stock options they offered might have been worth 2-3 lakhs. But now, those same options could be worth 20-30 lakhs, a 10x increase. So, you need to consider the company's future potential and the focus areas they're investing in.

Even if the base salary is a bit lower compared to another offer, if you believe that the company has a bright future and is already performing well, then the stock options could be a compelling reason to join. Of course, this is a personal choice and depends on your risk appetite and long-term goals.

2. Company Culture

However, more than anything else, you should prioritize the company culture and your fit within the team. Money aside, if you don't enjoy what you're doing, there's no point in switching, even if you're earning 2x or 3x more. If you're not happy, the extra compensation won't make up for it.

So, first and foremost, think about the culture and the people you'll be working with. If that aligns with your values and expectations, then you can be a bit more flexible on the compensation front. Eventually, as you progress in your career, the monetary differences tend to even out to some extent.

3. Product and tech stack 

Another important factor to consider is the product and tech stack you'll be working on. It should be something that genuinely interests you and aligns with your skills and career goals. If you're passionate about the work and the technologies involved, you'll be more likely to thrive and grow in that environment. 

Ultimately, it's about finding the right balance between compensation, culture, growth potential, and the nature of work that excites you.

Prioritize what matters most to you, and don't be afraid to advocate for yourself and negotiate for what you deserve.

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?

If you feel like you've learned enough and aren't learning much in your current company, then it doesn't matter if they're offering a promotion or a salary hike. You need to switch. It's a personal choice, really. If you're content with the money and happy with your current situation, then you can definitely stay put.

People who have been working at a company for a long time tend to be more comfortable there. They're already seniors, so they don't face too many challenges. But if you're more focused on your career and believe that learning new things is more important to you than what your current company can offer, then you need to take action.

If you're feeling bored or stagnant in a specific project or team, the first step is to raise those concerns with your mentors and managers. Tell them, "I'm not enjoying my current team. I've learned enough, and there's nothing new for me here." There are usually two options at this point. Either they'll switch you to a new team, and you can see how things are going there, or they'll offer you a promotion or a good hike to incentivize you to stay.

But you need to be clear about your reasons for staying. Is it for the money, the learning opportunities, the culture, or the people you work with? You have to prioritize what matters most to you and make your decision based on that.

If you don't like the new team or project you're moved to, then it's probably better to switch companies altogether.

Sometimes, people get swayed by a promotion or salary increase, but if you're not learning or growing in your role, then it's not a sustainable choice in the long run.

Ultimately, it comes down to your personal priorities and career goals. If you value learning and growth above all else, then don't be afraid to make a change, even if it means leaving behind a comfortable position or a tempting promotion. On the other hand, if you're happy with your current company's culture, people, and opportunities for advancement, then staying put and accepting a promotion could be the right choice.

The key is to be honest with yourself about what you want from your career and to make decisions that align with those priorities. Don't be swayed by short-term gains if they don't contribute to your long-term growth and satisfaction. 

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?

1. On avoiding burnout 

Our company has a really good work-life balance culture, and it starts from the top. Our CTO has a strict policy that if it's a weekend, no matter if production is burning, they won't call the junior engineers. Only the senior folks will handle it, and even then, the CTO often takes care of it himself.

We only work on weekends if there are serious issues in production that can't wait. We have proper deployment cycles and try to deploy things on Tuesdays and Thursdays. That way, if there are any issues, we can fix them immediately on a working day and avoid having to work on weekends.

It's important to set hard deadlines for yourself. If it's past a certain time, don't take on any more work, no matter how important it seems. There might be rare occasions where you have to make an exception, but it should be very infrequent, like once a month or so.

When you start doing these small things and setting boundaries, your manager will understand that you won't be doing work outside of normal hours. They won't bother you unnecessarily. However, if it's really important, sometimes you might have to step in because, in a startup, you often have a lot of responsibilities.

The key is to be firm and say no when needed. It doesn't matter if it's your project manager or your direct manager asking. You can politely tell them, "It's past my working hours, and I won't be able to do that. If it's truly urgent, I'll make it a priority first thing in the morning."

By setting clear boundaries and communicating your availability, you can maintain a healthy work-life balance and avoid burning out, even in a fast-paced startup environment.

2. Maintaining work-life balance

Currently, I'm really into watching anime. I'm watching One Piece right now, so whenever I get some free time, I try to watch a few episodes. It's a great way to unwind and relax after a long day at work.

Apart from that, I really enjoy spending time with my friends and getting to know new people. I love talking and listening to others, so it's a great way for me to connect and socialize. I recently shifted to Bangalore, so on weekends, I try to meet up with friends whom I haven't seen in a long time.

With the IPL (Indian Premier League) going on, I often spend my evenings watching the matches. It's a fun way to bond with friends and colleagues over a common interest.

In the past, I used to have a few other hobbies, like painting and collecting things such as currencies and stamps. While I'm not actively pursuing those hobbies at the moment, I do want to pick them up again in the future.

I think it's really important to have interests and activities outside of work that help you relax, recharge, and maintain a sense of balance. Whether it's watching anime, spending time with friends, or engaging in a creative hobby, these things can help you avoid burnout and keep you mentally and emotionally healthy.

It's all about finding what works for you and making sure you carve out time for those activities, even when work gets busy. By prioritizing your well-being and nurturing your life outside of work, you'll be better equipped to handle the demands of your job and maintain a positive outlook overall.

Related Blogs

Browse Flexiple's talent pool

Explore our network of top tech talent. Find the perfect match for your dream team.