Interview with Suchit Agarwal, ex-Twitter Staff Engineer, Director of Eng at Spoke
I asked my close friend Suchit Agarwal if he would answer a few questions about his career for the benefit of engineers across the internet. He agreed! Suchit is a former staff engineer at Twitter, and currently a Director of Engineering at atSpoke. At some point we will do a podcast interview as well, but for now you can read the text based Q&A below:
Tell us a little about your current role at Company: what’s your title and generally what sort of work do you and your team do?
My current role is that of Director of Engineering at atSpoke. We are a small team that has the twin tasks of delivering core product features, while building and maintaining application and systems infrastructure that allows us to keep moving with high velocity while having the confidence that we are delivering a quality product. My role personally varies from day to day and week to week, and is a mix of being an IC & a tech lead, being an EM, and sometimes also being a support or sales engineer. I also manage the ML, Data, and QA teams here at atSpoke.
Tell us how you decided to become a Software Engineer?
I guess it's probably the same reason as most people of my generation from India, where there were few career choices, Engineering was one of them, and in the early 2000s computer science was the most obvious choice of major. To be honest though, I feel that I got lucky to have accidentally landed into a computer science major by a combination of my entrance exam scores, and what schools still had some openings.
To others aspiring for a long and successful career in software development, what three things would you tell them?
I think the most important thing I would say to anyone starting off in their careers, and in fact, something I constantly emphasize to junior folks whom I work with, is to have patience. Being a good software engineer, just from a technical perspective, is something that truly only comes with experience and time, and by having thrown yourself into solving lots of different kinds of problems and building (or improving) systems with different requirements and constraints. I see that people early in their career get frustrated, or worse, start to lose confidence. Just have patience. It doesn't matter if you're writing iOS or JS apps, or if you're working on a team building core infrastructure, have faith in yourself and persevere.
The other thing I would say is that in order to be a good software engineer, in our industry today, you need to be able to work well in teams. Depending on your team and your role you might only have to interact with other engineers, or you might have to interact with product/design teams, customer-facing teams, and so on. A lot of systems building requires you to think about the perspective of the user of the system. You could be writing internal tools for your support team, or you could be building a high performance concurrent key-value store, the important thing is to first engage with the user of your system, and then understand and think from their perspective. Not only does it give you empathy for your teammates, but it will invariably lead to a better outcome.
What’s your most controversial programming opinion?
To be honest, this should not be controversial: Code and tests should be co-located.
If you could mandate that every software engineer read one book, what would it be?
I am not big into programming or technical books, so not sure if I have a good answer for this one. However, I do think every software engineer should read Jay Kreps's legendary blog from his LinkedIn days about logs. It really helped clarify a lot of data architecture thinking for me and is a very good read for anyone hoping to understand how to think about large distributed systems (even if you are not directly working on data platforms). If you need any proof on how relevant this is, Confluent, the company whose seeds were in that blog post just went public at $12B.
Tell us about a time in your past that influenced your software engineering career the most?
My first two years with the Twitter Ads team. I was very lucky to be working with a team of world-class, senior engineers and product folks, who were not only great at what they did, but also great mentors. I truly would be nowhere without the folks I worked with during those couple of years (s/o @aunder, @greenberg, @matasar, @esbie, @mrm, @ronalddevera)
How do you balance work and life?
Well, to be honest, as much as I would like to, I don't do a great job of it.
I think mostly what I try to optimize my day for is identifying my peaks and troughs, and try to use the troughs to do things that help me clear my head. So, I take the mornings to do some chores while enjoying some music, and the early evenings to take long walks, and try to plan my day for productive afternoons, and on certain days, late nights.
What are your strengths as a software developer and how do you leverage them in your day to day work?
Knowing when to go for a walk to write code vs when to do a code spike. The way I define that is that when I know what I am trying to build and how it should function, I go for a walk and only actually start writing code when almost all of it is pretty clear in my head. On the other hand, there are situations where you need to just let the act of writing the code guide you to a good design and that is when you do what I call code spikes. Knowing the difference between the two proves to be very useful.
What do you think your biggest areas of improvement are?
As I am moving more into an engineering leadership role, I need to balance my technical depth of the systems my team works on with the ability to scale myself and my team.
Thinking back to the best manager you have had, what are the traits you look for in a good manager?
I think the best managers always help you get a sense of clarity on what your role is. Not very different from a coach in a sports team, there should be clarity on what is expected of an employee, and they should be rewarded if they deliver. That being said, for a team as small as we are at atspoke, sometimes the only clarity you can give is that there isn't a lot of clarity, and the role of a good manager then becomes being a partner and helping the engineers work through various situations.
What's an opinion you have that most people don't agree with?
Most people I talk to disagree with me about this (so maybe this is just me), but I genuinely think that as we get out of the pandemic and start to reopen, offices and co-working spaces are going to come roaring back. We will definitely be better off for the leap forward we have made in terms of the remote working tools and business travel will continue to be affected, but people will flock back to offices.
What are you currently learning?
Learning to read Arabic.
What is one app on your phone that you can’t live without that you think others should know about?
Other than the ones that would be the usual ones (Twitter etc), I'd probably say ESPNCricinfo .