Introduction
Hello Sai, would love to know about your professional background.
Hi, I’m Sai Krishna! I've been working with a startup called True Foundry as a software consultant.
I have almost six years of experience as a software engineer, which I'll be completing this July. Throughout my career, I've mostly worked with startups. After graduating in 2018, I started as a backend engineer at PayU, working on QR code systems which were pretty new back then. I then moved to a smaller startup, FlyHomes, as their 7th engineer to get experience building systems from scratch.
At FlyHomes, a real estate platform, I worked on data pipelines and data-driven applications. During COVID, I got a role at AirCall, a French company setting up an India team. AirCall exposed me to large-scale systems with hundreds of engineers. After that, I took a break to explore if machine learning was something I wanted to pursue given the AI boom. I did some freelance work and a project with TrueFoundry before settling into my current consulting role.
Day in the life of a software engineer
What does a typical day look like for you as a software engineer?
Lately, I've been working on a proof-of-concept using large language models to build an IVR solution for customer service. To accommodate working with the US team, I've shifted my hours from 7 pm to 3 am IST.
My day usually starts around 10 am. I'll check my calendar and any Slack messages first thing. I like to batch meetings into a 2-3 hour block rather than having them scattered throughout the day. That gives me decent chunks of focused time. During those focus blocks, I'll spend 1-2 hours coding and debugging, depending on what's needed for that day's tasks. The rest of the time I'm probably browsing Reddit - I'm a huge Reddit user and find a lot of the latest tech news and updates there to share with the team.
Since this is just a PoC, a lot of my time is spent just building things in a scrappy way to get them working, rather than overengineering for efficiency at this stage.
How much time do you spend coding versus in meetings?
Overall it's been more coding-heavy lately, around 70% of my time, compared to before when it was more like 30% coding and 70% meetings. However, the balance shifts based on the current project phase.
What’s your mantra to get quality work done daily?
For me, it really comes down to diligent note-taking and avoiding delayed work at all costs. I take meticulous notes on everything, and as soon as an action item is completed, I delete it from my notes. Even if others don't love me jumping on things instantly, I'd rather just apologize and knock it out while my mindset is fresh from the initial discussion.
I keep things streamlined too - just one code editor open with all my notes and to-do's in there.
Once something is checked off, it gets scrapped from the list immediately. No procrastinating allowed!
With multiple concurrent projects, some context-switching is inevitable. Staying hyper-organized with a seamless note-taking system is key for me to maintain focus and high-quality output. Looking back at my startup days also taught me how to adapt between contexts rapidly.
So in summary, my mantra is: take exhaustive notes, prioritize avoiding delay on tasks, and remain organized amidst any context shifts. It's about capturing everything upfront, then methodically executing without letting things slip through the cracks.
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
These days I keep things pretty minimalistic - just a 13-inch laptop monitor and that's it.
2. Software
A. Go-to browser
Google Chrome is my go-to browser.
B. Core work and coding tools
I've hopped around quite a bit over the years. Started with Ruby on Rails, then did stints with React, Java, and PHP for PayU's payment engine, circled back to Ruby at places like AirCall, tried Node.js, and now I'm mostly working in Python. VS Code is my go-to code editor, and I'm a big fan of Docker for easily spinning up containerized environments to streamline deployment. GitHub Copilot has been a game-changer too - I've used it extensively for about 6 months now thanks to a free license from TrueFoundry. The AI assistance for writing and refactoring code is super valuable.
I even have a personal GPT-4 account that I use to debug code, convert between formats like Excel to CSS, and work with hosted LLM solutions like Anthropic's when needed.
C. Favorite programming language
Python is my current favorite tool. It's so convenient for quickly prototyping proof-of-concepts, which is key for the machine learning work I'm doing now with large language models. The entire ML ecosystem is very Python-centric these days.
Big Tech vs Startups
I noticed you’ve mostly worked at startups. Do you have a preference for working with startups?
For me, the biggest factor is being able to move quickly. Startups almost always provide more opportunities to operate at a fast pace compared to larger, more bureaucratic companies where things tend to slow down a lot.
I've had stints at both startups and bigger scale-ups and honestly, some of my most rewarding experiences were doing part-time freelance projects. There's just so much freedom - no red tape around tech choices, just a focus on delivering business value rapidly. That said, the big upside of working at startups or scale-ups is you get to engage with the core engineers building the critical systems the whole company relies on. Those are the places for really impactful, high-leverage work and great technical discussions.
My decisions have always been driven by maximizing my ability to move fast and avoid getting bogged down in overly restrictive corporate processes. I've passed on FAANG opportunities in the past because I didn't want to limit myself to any one mega-company's tech stack and bureaucracy. However, having worked at a large enterprise like CVS for the last 5 months, I realize it's not so black-and-white. Even big companies are really just a collection of small teams, some operating like startup squads and some slower-paced. My current team thankfully moves quickly.
What are the key qualities of someone who would be a perfect fit for a startup versus big tech?
I think it really comes down to a person's priorities and appetite for fast-paced learning versus more stability and focus. There are pros and cons to each environment. If someone really wants to rapidly expand their skill set and be exposed to a wide breadth of technologies/domains in a short period, startups are definitely the way to go. The pace is just much quicker, and you’ll have to wear multiple hats out of necessity. It's chaotic but an incredible learning experience, especially early in one's career.
The tradeoff is that the learning curve can be shallower at a larger, more established company since the work is generally more specialized and processes are locked in. However, you may get to go deep on cutting-edge, high-impact projects that startups can't tackle.
So for someone more interested in hyperfocus and moving up within a mature domain/stack, an enterprise could be a smoother path. But fast and frantic learners who thrive in unpredictable, ever-changing environments will likely prefer the startup route, at least early on. There's no universally right answer. It depends on the individual's risk tolerance, interests, and career stage. But I generally advise soaking up as much as possible at startups fresh out of college to rapidly level up. The enterprise opportunities will always be there to pursue down the road.
Navigating a New Tech Role
1. First month
For the first month, getting all the necessary accesses and onboardings out of the way should be the top priority. During this time, you'll also want to put in efforts to get to know your new team very well - building that personal rapport and bond is crucial from the start.
Take this first month to deeply understand the tech stack, tools, and exact processes/methodologies your team utilizes too. There's no expectation that you'll be actively contributing work-wise yet in this initial month, even at a startup. The focus should simply be absorbing the environment.
2. Next 3 Months:
In the next 3 months after the first-month onboarding phase, start being proactive about taking on tasks, no matter how small, to show your eagerness to hit the ground running. The more comfortable you get with the people you interact with daily, the better you'll perform.
Use this period to keep strengthening those workplace relationships. Crucially, spend time understanding how your specific project fits into the entire company's roadmap and overarching business goals. Personally, I feel it's useless to work on something that provides no return on investment (ROI) to the company.
3. 6 to 12 Months:
From months 6 through 12, this is the window to try strategically positioning yourself on one of the core, high-impact teams and projects. The ones directly tied to revenue generation and the company's key business outputs. Prove your value in a way that makes you indispensable to your manager.
During this phase, actively seek out exposure to the strategic product, business, UX, and technical decisions - this is where the real magic happens in terms of ROI and career growth, not just hard coding. Don't get too comfortable being siloed on projects providing little direct value, as we've seen, those are the first to go during lean times.
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?
One word - Data. Data is very important when you're talking about appraisals with your manager. There is no point in just mentioning that six months back, I worked on some critical thing that saved the team. That doesn't work at all.
I personally used to maintain a sheet to keep track of my work. Sometimes it works, and sometimes it doesn't work, but in general, maintaining a sheet, some sort of notes, or a list of tasks that you solved that you can show is very important. You just need to show that whatever tickets or stories you picked up were crucial for the team and how they helped the team and the project move in the right direction.
Similar to how you write on LinkedIn, like "Helped in cutting the cost by 40%" or "Increased sales by 30%," you have to do the same thing in your appraisal meetings as well. When you present the data, the manager will definitely make an informed decision rather than going by their hunch or how they feel about you.
Upskilling in Tech
So you’ve been in the industry for over 5 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
When I join a new company, a big motivation for me to upskill is needing to learn their tech stack. But beyond that, I'm always driven by wanting to build the most efficient and stable systems possible. I'm fascinated by people who can take a project from zero to one and see how their early decisions have a huge impact.
I've realized that you can build good systems with any tech stack if you know the right tools and approaches. I no longer believe certain technologies are inherently better. Instead, I'm motivated to work on interesting projects, whether that's event-based systems or large language models (LLMs). I also keep an eye on industry trends, like the current AI/LLM boom. I want to position myself to work on the small percentage of startups in that space that are likely to succeed.
2. Learning approach
When it comes to actually learning, I rely heavily on social media, especially Reddit and LinkedIn. I follow the right pages and people to stay up-to-date on the latest developments. Networking is huge for me too. I reach out directly to folks at companies working on cool stuff to learn more and look for opportunities.
To get hands-on experience with a new technology, I like taking on small projects or tasks. I've joined companies part-time or on a contract basis to get exposure to their tech stack. I also make sure to maintain relationships with people at previous companies, in case opportunities come up to go back and work on something new and exciting.
Rather than getting too attached to any one technology, I focus on developing transferable skills and being adaptable.
I believe you can build good systems in any tech stack, so I emphasize learning the underlying principles that can be applied across different technologies.
3. Practical Application
I think you always need to be working on side projects. I stumbled upon this tool called Supabase some time back. It's like a no-code SaaS that helps you instantly set up a backend server, database, API, and all that stuff. When I found that, I built a bunch of side projects that aren't being used now, but you never know what will come out of them.
Side projects don't always have to be about tech either. It could be simple writing, data collection, or even making phone calls to understand something. I once tried to set up my own consulting firm and made a ton of phone calls to understand the tech market in India. I realized how bad it was, but that was valuable learning that I count as a solid project.
So yeah, always do side projects for sure. If you think a side project or skill will help you make money, improve your skills, or even just make you feel good, go for it. And don't be afraid to shamelessly pitch yourself and your projects.
Qualities of 10x engineers
First things first, great engineers understand that writing code isn't always the primary task. While coding is essential, they know it's not all they'll be doing.
Great engineers think like product or program managers on their projects.
They consistently put themselves in their shoes, understanding how decisions impact the project's trajectory. This means considering whether to optimize existing features or focus on building new ones, always seeing the high-level view.
These engineers delve into understanding the context of their projects. This helps them make informed technical decisions and see where their project fits into the company's roadmap in the short and long term.
One key thing I’ve noticed is that they are also very patient, knowing that debugging requires time and persistence. They prioritize breadth of knowledge over depth, especially when starting out on a new project. Learning a little about everything, say 10% of all components, before diving deeper, helps them immensely.
What advice would you give someone to become a 10x engineer?
Having empathy as an engineer is really important. You don't just go around saying "Who wrote this code? This is bullshit." That doesn't work in the real world. You try to understand why something was done a certain way.
Continuously upskill, but that doesn't always mean new technologies. It could be learning more about the same technology you already know. Always try to empathize and see the bigger picture. Your code is not the most valuable thing to the company. It's what you bring out of that code and that project that matters to them at the end of the day. KPIs are not about how many lines of code you wrote.
How do you think companies can retain these engineers?
That's a tough question to answer. For companies, my first piece of advice would be to encourage experimentation.
Second, be very clear about why we're doing things. Don't just assign tasks without context.
Saying "Do this because it's your task" doesn't work and doesn't scale. Instead, explain the reasoning behind the task, like "We need to do this because of X, Y, and Z, and therefore the expectation is to finish the task by tomorrow."
As a people manager or a company, you need to balance things out. Make sure people are happy and try to understand the requirements of each individual. Some people literally only want to write code and don't want to do anything related to people. Try to allocate tasks accordingly.
For example, I remember there was this principal engineer back at my previous company. All he did was write code and then leave. He didn't do anything else, but he wrote the core part of the company's payment engine and was very well respected. On the other hand, there were folks who only did people management and they were happy as well. The CTO did a very good job handling these different types of people. It's super tough to handle diverse folks like that.
Of course, engineers can get unhappy very easily when they're asked to do something that's not tech-related. Try to see what that person needs or wants in that particular phase of their career.
Lastly, one-on-one meetings help a lot. Don't delay them. They might seem like small things, but they make a big difference.
You mentioned that you love networking with great engineers. How do you usually network and do you have any tips for engineers looking to network and be more sociable in the tech community?
Start with your college groups for sure, because that's the best way to know what's going on. For example, if ten people from the same class end up in ten different companies, it's the best way to gather knowledge on how other companies are operating. As an engineer, you always have the curiosity to know what's happening in other companies - what tech stacks they're using, if it's cooler than what you're working with, and so on. So definitely start with college groups and don't leave them.
On LinkedIn, try to reach out to folks, but not too randomly. Random reachouts don't really help. Give them context and try to help them understand why you're reaching out to them. For example, when I met the CTO of a company I worked with, we connected randomly on LinkedIn and later worked on a project together. We had a very interesting conversation about tech - it all started with the common context of solving problems from scratch.
When you reach out to people, explain what you're working on and why you think they can help. For instance, you could say, "Hey, I'm working on this project and I feel like you could help me understand certain components. I went through your LinkedIn profile and saw that you worked on a similar project. Can we connect sometime?" Most of the time, you might not get a reply, but when you do, you often meet very cool folks. At least that's been my experience.
Always stay in touch with the people you meet. You never know when a connection will be useful. I've even met people from YouTube comments. You never know where you'll meet people and have great discussions.
Discussion forums are really good too. I've been using an app called Grapevine heavily for discussion forums and it's been great.
The key is to approach people with context. Try to explain why you're reaching out to them rather than just randomly saying "Hi, how are you? Let's meet." Build a common context, mention something from their profile, and aim to build a relationship. That's what you can do.
Negotiating salaries in Tech
Assuming they've already offered something and you're doing your research, my first advice would be to look at how much of a hike they're offering on top of your current salary. That's number one. And then consider what number would make you happy.
Always have multiple offers while negotiating.
There's no point in negotiating with just one offer because you can't compare, and companies are also negotiating with multiple folks for the same position. There's nothing wrong to do on your part.
Post your queries in a lot of anonymous social media groups, like Team Blind or Grapevine. Reddit is not as good, but you can try there too. You can also try to talk to ex-employees of the organization. For if the company is XYZ, search for folks who used to work there but left. Reach out to them and say, "Hey, this is the offer I got. Do you think this is right?" You can have those conversations.
Definitely use platforms like Grapevine and Leetcode a lot nowadays. People are being super active and helping each other out a lot there. And there's not much more you can do after that, to be honest.
Having multiple offers is really important. I never go with just one offer because there's nothing you can do in that case.
Never put out a number or say a number at the start. Meanwhile, if from your research, you know the exact figure that you can go back to them with, then you can go ahead and do that. But that's in maybe 5% of cases. 95% of the time, never do that. Let them come back with the offer first.
Assessing Job Offers: Beyond Salary
How do you assess multiple job offers beyond just the CTC?
There are a few factors I’d prioritize when choosing between two offers. First, I will need to know which team or project I’m going to be working on. In some big tech companies, they have a team matching process. But most companies don't have that. They usually know exactly which team and position they're trying to fill. So I will try to understand what the day-to-day responsibilities would be and get a sense of the team dynamics.
Then I will do my own research. Reach out to folks on that team on LinkedIn. I’d openly say, "Hey, I got an offer for this role. I'd like to connect. Can you tell me what the day-to-day is like in this position?" Having these conversations is important to me to get insider insights.
And of course, my priorities will depend on my career stage. Early on, money was my only priority. Now, I'm looking more for a strong tech team and overall stability. Especially after the recent layoffs, it's wise to also consider the company's culture, stability, and funding situation. I would look into their revenues. If it's a public company, check how its stock price has performed over the last six months. All this information is available online so I don’t think there’s any need to make blind guesses.
As for things like whether the job is remote, hybrid, or in-office - those should be cleared up before I even interview. If I know I want a remote job and they tell me it's an in-office position, I won’t waste their time or mine. It's no use.
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?
For me, it's a fairly straightforward decision. If you started interviewing in the first place, there were likely some things you weren't happy with in your current job. If getting promoted would resolve those issues, then go ahead with the promotion. A new job isn't always the right answer.
Starting a new job is almost like starting from scratch. Let's say you've been at a company for three years, and typically you'd be up for a promotion around that time. Compare that to taking a new offer at a different company where everything is new. You need to build relationships from the ground up, which is a significant challenge.
The key question is, what motivated you to start interviewing in the first place? If those problems will be solved by getting promoted, definitely go for that. Always choose that path first. But if you don't think those issues will be resolved even with a promotion, then make the switch. Don't stay.
So it really depends on why you sought out a different offer to begin with. If your reasons for looking are addressed by the promotion, then it makes sense to stay.
Another key factor you can consider is the tech stack. Sometimes you might want to work with a different tech stack, and if you're getting promoted, you might end up working with the same technologies. For me personally, a new tech stack is appealing, but I know that I want to continue working with LLMs for the next 4-5 years at least. And Python is pretty much the only language where 90% of the open-source developments in that field are happening. So I know the tech stack won't be a big factor for me in switching jobs.
But let's say you're working with an older tech stack like I was working with PHP at a previous company. Stack Overflow has a great annual survey that measures the most in-demand tech stacks. If you feel you need to switch from an outdated tech stack to something newer and more relevant, then go ahead and do that.
Again, just make sure you're making an informed, long-term decision. Don't decide based on short-term factors alone. I made that mistake once, going to a company that offered more money but had the worst engineering culture I've seen. It just didn't fit me. So you need to think it through carefully before making a switch.
Navigating Layoffs
The past year has been tough for engineers facing layoffs. Did anyone in your circle get laid off in the last year?
Yeah, just after I left Aircall, a lot of people got laid off from there. I used to get texts from friends and colleagues who were affected. When these things happen, people at your organization definitely reach out to you. So yes, I know quite a few people who were impacted by layoffs. It's a scary scenario and it can definitely make you doubt yourself.
But we also need to understand that things are not going well in the industry right now. Just like how you work for promotions from day one, collecting data and being ready to show your value, you need to always be networking. Try to talk to people, gather information about which companies are being funded, and stay interview-ready.
Being interview-ready doesn't mean you're constantly practicing everything. Just revisit key concepts periodically. You never know when you might lose your job. Savings are also crucial in case of layoffs. It's the most underrated thing. People don't think about it as long as they have a steady paycheck. That monthly salary is the most addictive thing in the world. But having a financial cushion is so important.
Keep networking, don't be afraid, and don't doubt yourself. Layoffs are often about high-level decisions, not your individual performance.
The colleagues who got laid off from Aircall, have they found new jobs by now? Could you tell me the average time it took them to find a new role?
It really varies. Some people found jobs within a week. Others still haven't found something new. There's no exact figure, but you can't really put a number on it. It entirely depends on who you are, what you've done, how you present yourself, and how your interviews go. Just this morning, I talked to someone whose brother was laid off after 12 years at a company, and they're still job hunting after 7 months. It's super sad.
So while some might find a new role quickly, you can't generalize and say everyone will be placed within X months. It's a very individual situation. And a lot of times, it's not about your skill set or experience. It's the market conditions. The available opportunities and the number of people competing for those roles are the key factors. Your qualifications help, but timing and a bit of luck play a big part too.
It's a tough reality, but staying connected, keeping your skills sharp, and being financially prepared can help you weather these kinds of challenges when they come. But there are no guarantees, that's for sure.
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. Reasons for burnout
Most burnout occurs because of two main things. First, from day one, you need to set expectations. I'll give you a simple example that might seem small but can have a big impact. Let's say your workday normally ends at 6:00 p.m. or 7:00 p.m. If you get a call from your manager at 9:30 p.m. and you answer it, you're setting the expectation that you're available at that time if they need you.
The second reason I've found myself burning out is not being organized. If I don't plan my day properly, it will definitely mess up my day. If I have a meeting at 12:00 p.m. and then another at 9:30 p.m., that will throw off my entire schedule. I can't make any plans outside of work - the day isn't mine anymore. I have other things I need to do too. So planning your time effectively is crucial.
2. Maintaining work-life balance
Work-life balance is super important to me now. After going through periods of burnout, I've become very conscious about it. I make sure to allocate time for things outside of work that I enjoy and that help me recharge.
For example, I always set aside time for physical activity, whether that's swimming, going to the gym, or just getting outside for a walk. I also prioritize spending quality time with family and friends. Socializing and maintaining those relationships is key for my mental well-being. I've also gotten better at setting boundaries with work. I try not to let it bleed into my personal time too much. Of course, there are occasionally times when you need to put in extra hours, but I try to make that the exception rather than the rule.
Another thing that's helped me is having hobbies and interests completely separate from my work. For me, that's things like traveling, reading, or learning about subjects unrelated to my job. It helps me switch off from work mode and exercise different parts of my brain. I've realized that I'm actually more productive and effective at work when I'm strict about protecting my personal life. When I'm well-rested, mentally refreshed, and have a full life outside the office, I'm sharper and more creative when I am working.
So while it takes discipline, maintaining that work-life balance is non-negotiable for me now. I've seen the toll burnout can take, and I actively work to avoid getting to that point again. It's an ongoing process, but being mindful about it is the first step.
3. Recovering from a burnout and avoiding it
From the start, you need to set boundaries. Communicate that you're only available outside of hours if it's a true emergency. In the corporate world, especially when dealing with tech systems, no one is actually dying. Setting those boundaries will really help prevent burnout. Of course, if you feel like nothing is working, definitely talk to your manager. Say something like, "I think I need to take a week off. I'm feeling this way and I don't think I'll be at my most productive right now. I probably need some time to recharge and then I'll come back."
But we also have to remember that even if you take a month off, you'll come back to the same situation. A vacation can help temporarily, but it won't solve the underlying issues.
The key things are setting boundaries, being organized, and being upfront if you're unhappy about something. It's totally fine. People will understand. Don't be afraid of losing your job over it. Firing isn't the solution to everything, even from a manager's perspective.
So be straightforward, be open about what you're experiencing, set clear boundaries, and you should be okay. It's an ongoing process and it takes practice, but it's so important for maintaining your well-being and avoiding burnout in the long run. Managers should be receptive to these conversations. If they're not, that's a red flag. But in most cases, if you approach it professionally and explain how you're feeling and what you need, they'll work with you. It's in everyone's best interest to have a healthy, productive team.
And remember, taking care of yourself isn't selfish. It's necessary. You can't pour from an empty cup. Prioritizing your well-being and creating a sustainable work environment benefits everyone - you, your team, and the company as a whole.