Please state your current profile and explain your profile. If possible help us understand any previous profiles you’ve worked for.
I finished my computer science degree in NITT in 2011, and have since been working as a software engineer at Google Mountain View. Till October 2017, I was the technical lead of a team of Google’s ad revenue counting where I learnt a lot about how online ads work. Ads contribute to 90% of Google’s revenue (~$100B per year), and my team was critical in this. CS concepts wise, it was a lot about big data processing & parallel computing. I poured my heart into this, got many accolades, and even among the top 0.3% Google software engineers in terms of amount of code reviewed.
Then I switched to Tensorflow team to learn more about machine learning while still using my big data background. ML is a booming field with tons of exciting opportunities & lots of intriguing math, so I wanted to jump in to learn more.
What skills should one develop to follow the career path that you’ve chosen? Do include courses, software, coding, internships etc.
Algorithmic programming competitions (Topcoder, ACM ICPC, SPOJ, Codeforces, etc.) laid the foundation for my career. I spent the better part of my 12th standard & undergrad doing these. I was very passionate & really enjoyed them – to the point of waking up at 4 AM & skipping parties to attend these. I was #1 in Topcoder in India for over a year. I had probably spent 1.5 hours per day averaged over my 4 years of undergrad on these competitions. Amazing times!
It later turned out that these skills matched very well with what companies look for. The interviews of big tech companies are focused heavily on algorithms. During placement season, I was able to crack Amazon India (intern conversion), Facebook US (on-campus) & Google US (off-campus). I also had MS admits from Stanford, Wisconsin Madison & University of Pennsylvania
Pick the area you’re really passionate about and pour your energy into it. There are tons of opportunities in artificial intelligence, cryptography, networks, operating systems, etc. Nothing substitutes hard work with a focus on learning. Being a 10-pointer doesn’t matter much if you’re just mugging without understanding fundamentals. Go out of your way to learn useful stuff.
Companies value hands-on internships, while colleges value research experience & papers.
In NITT, we now have the option of applying for minors in other departments. Is a minor in CSE or Computer Applications useful from a recruiter’s point of view? How much importance is given to it?
It’s definitely useful if you’re looking for a career in software. I have many friends who did a non-CS undergrad but later switched to CS-related role and are very happy.
To pursue a career in which coding is central, how useful is a well-updated and stocked Github profile? How much importance is given to it by recruiters?
Github projects, developing apps, etc are all valued by companies. Key is to have some unique selling point which makes companies want to hire you. For example, if you have a non-trivial number of users for your app, have some
That said, immediately after college, having a strong algorithm, math & logical puzzles background is the safest way to crack big tech companies.
Interviews at companies like Google, Facebook and Microsoft possess the notorious reputation of being extremely difficult. Can you explain how you prepared for them and briefly describe your experience of them?
If you do a lot of standard puzzles/aptitude questions, you should be able to crack the screening round. During interviews, it’s much more about how you sell your strengths. I didn’t prepare specifically for interviews, but I imagine there should be tons of interview questions online.
Were you a part of any club during your stay in college? Has any of them significantly helped you in your work life or in landing you the job?
I wasn’t part of any club. Clubs
What are the soft skills to be acquired for work culture? Has college equipped you with any of them?
I focused much more on hardcore technical skills early on in my career. During the initial phase, soft skills matter less (at least in big tech companies) as long as it’s not blatantly bad. As your career progresses, your soft skills will automatically grow since you’ll imbibe from your surroundings. You’ll also have choices to attend many day-long soft skills improvement courses.
How permanent is any choice of career? Do you think one should stick to a particular field or keep changing and experimenting as they grow in the industry?
This varies wildly across people & circumstances. For context, I’ve worked in one team for 6 years and now in my second team.
In the software industry, it takes at least 6-9 months to get a good grasp of what a team does. Then you start to contribute more and you grow in the company. I’m a fan of going very deep technically, understanding the ins & outs of the system and making solid contributions before making a switch. This is a small world and your network of coworkers is very powerful – make sure to leave a lasting positive impression on their minds.
There are also people who switch teams every year (still as a software engineer), focusing more on breadth than depth. That’s a fair strategy for some, but not my cup of tea.
What is your opinion on graduate studies vs working?
Depends a lot on what your goals in life are, what motivates you, etc.
For a software engineer: I’m not a big fan of college degrees. Having talked to many people, I feel that the main reason for doing an MS in a foreign university is to get a job in that foreign country. If you want to stay in India, or you are confident in your ability to get a job in that foreign country within a couple of years, then skip graduate studies. It will save you a lot of debt and a few years of your time. If you have the drive, you’ll learn things independent of college degrees.
How was the transition from student life to work-life?
Hard to do coding-related competitions/side projects when you’re already spending 40 hours a week working.
Focused much more on fitness after college since it became a routine in my work life. I lost about 50 pounds from my peak in college.
In your opinion, what is the extent one should go to find a balance between work satisfaction and monetary satisfaction?
Work satisfaction – Depends a lot on your attitude. Even in cool projects, you can describe your work in a boring way and vice versa. Work satisfaction is harder to derive in a more junior role since your impact grows over time. You need to have a positive attitude and see how you can get to a position where you can make interesting decisions. At the end of the day, you need to feel you’re having great impact & doing good for society. People differ on what “good for society” means, but give most importance to what you personally feel.
Monetary satisfaction – This will follow eventually if you’re motivated and really have a good positive impact. Focus on monetary satisfaction for the long term instead of short term. Be minimalistic, frugal and live below your means.
Never trade your integrity for money.
What are some things about your job you wish you knew in college, in retrospect?
Force yourself to do things you hate if you know that’s good for you. Have high self-control. Learn that extra interesting topic in your free time (unrelated to exams). What you do in your free time would define what you become. Anything worth achieving takes years of hard work.
Is there any general advice you’d give to engineering students?
Focus on learning from fundamentals. You should be able to answer basic questions on your strong topic at any time.