Tell us about your software engineering journey. What path did you take to your current role as Senior Software Engineer at Microsoft?
You could pretty much break it down to 4 parts really (okay, perhaps a slight oversimplification, but more or less 4 steps):
- Passion: This is the prerequisite for all things. You need to have passion; for building things, making things efficient, optimized, organized and more productive. Some of these are tough challenges, and they won’t be enjoyable unless you are passionate about them.
- Fundamentals: This is where you grab the books. Go to school or learn the core stuff yourself. No matter how complex a project is, you always end up simplifying them to smaller units of core engineering and computer science concepts that you mastered early on.
- Put It Into Practice: This is where you go beyond just your courses. Contribute to open source projects, build stuff, relentlessly improve existing code. This is also where you put your fundamental knowledge into practice. I clearly remember trying to throw in a design pattern or a programming paradigm wherever I could. Looking back now, it feels excessive, and perhaps even silly. Not to mention, most of those were not even implemented correctly. But that is not the point. The point is to relentlessly improve and learn, and build your drive to make things as close as perfect as possible. And along the way, you also develop an intuition for how to go about solving challenging problems — where to look, whom to ask, what to obsess on and even what to let go.
- Deliver: By this point, you’ve probably gotten your opportunity. Now it’s all about delivering, working hard, and being humble about it. 🙂
When did you first get attracted to software engineering and how did you make the decision to pursue it?
I was always attracted to building stuff, especially with code. Something does not exist, but I can imagine it, conceptualize it, break it down into smaller modules, then code it. And just like that, it comes to life! This process blew my mind very early on, and I was hooked! Maybe it was the sense of power, maybe it was the immediate gratification of creating something from an idea, or the sense of possibility of being able to do so. By 5th grade, I was already making simple games in GWBasic. I also had a few friends that were incredibly good, who always inspired me to try to get better. And in the process, I became very passionate about it.
To you, what is the most exciting thing in the future of software engineering? What are the huge trends and changes that you are looking forward to? What motivates you to keep walking this path?
The most exciting part of software engineering is how fast it evolves. The field of computer science itself is very new, less than even a century old. In that short time, we have come from punching holes in a card to flying Teslas in space. Right now, the big trend is definitely cloud computing and artificial intelligence. Blockchain has also had a huge impact on security. But because of the sheer speed at which tech evolves, who knows what the next great thing in 10 years will be? And that is also the beauty of it!
What is a typical day at work like?
It depends. Usually, I have a few projects I am juggling. I’ve got tasks I have planned out for the week and up to a month. I act as a collaborator in some of those projects, I lead some. So each morning, I do a quick health check on progress to see if any course corrections are necessary. Sometimes a colleague is blocked, so I help them. Other times, a higher priority task suddenly comes in, and you drop your regular work schedule to sort that out. Unlike in the movies (where engineers are sitting in cubicles all the time), engineering in reality is a very social/collaborative effort. So, there are discussions, idea exchanges, meetings, and so on. Some days are more hectic than others, especially around deadlines. Others are more relaxed, with the odd happy hour thrown in there! It is fun, engaging, high-pressure, but in the end, very rewarding.
Tell us about a highlight in your career journey so far.
That would have to be when I started working for Microsoft. I grew up using Microsoft’s technologies. My first ever machine was on Windows. So to be able to work here and be a part of the next generation of Microsoft products is pretty cool.
What is the best decision you have made with regard to your own career growth?
My first job after my Masters was at this place called Epic Systems. It was a great place, I think the biggest healthcare software company in the US (possibly the world?). But a few months into it, I realized that the technology stack they used was pretty archaic, and there were no plans to update it. The job had amazing perks and I was paid very well, but if I continued working there, I would specialize in their tools only. About 6 months into it, I decided to quit. A few months later, I took a job in Chicago that paid significantly lower and had no perks whatsoever. But what I learned there in terms of engineering was invaluable.
Tell us about a time you had serious doubts about your own ability in this field. How did you overcome them?
To be honest, I have never really doubted myself in the sense of feeling that I wasn’t capable of doing something. Instead, I take a very structured approach to it. I set a high level goal, I break it down to small, achievable goals. Every time I complete any of those small goals, I reward myself. This sounds too simple to be true, but really, if you get good at modularizing your end-goal and just focus on your next goal from there on, it really becomes simple. It also helps depersonalize the process. Your task then becomes to go do the next goal and you avoid thinking about how overwhelming the whole journey could be for you. Checking those small goals over and over again also gives you confidence, which is paramount in reaching goals, so it is very important to maintain, and manage that.
Any thoughts on the opportunities for merging your identities as a technology worker, Nepali national and a global citizen?
I am constantly looking for ways to give back. I’m still learning and growing, so a bulk of my time goes into that. But as much as I can, I do look for ways to use technology to help out. In 2007, we established a social entrepreneurship organization that built small technology solutions to raise funding for homeless children in Nepal. We sent 6 children to school from the funding raised via a calling card website. Eventually, I would definitely like to do something with higher impact. Being part of a leading global tech company gives me insight into the impact technology can make. Also, innovations take a while to propagate to developing countries, so there is always opportunity to make an impact there, even if it means replicating an idea that has already been a staple of the developed world.
If you were in the hiring committee, what qualities would you look for in a prospective new hire for your team?
I am part of the hiring committee as an interviewer at Microsoft. While the qualities we look for can vary by the position’s requirements, generally, the goal is to look for problem-solving smarts; fundamental CS/engineering knowledge, coding aptitude, adaptability, collaboration, ability to form optimal algorithms, etc. We call them core competencies here. In addition, we also look for a culture match because that is very important, too.
How can young people who want to follow in your footsteps prepare themselves? What kinds of skills should they pick up? What sacrifices should they be willing to make?
Like I said previously, the most important thing is to invest on your passion! I cannot stress that enough. I get a lot of messages from young folks in Nepal on LinkedIn or Instagram asking how they can land a job here. They are willing to learn coding, they are willing to do whatever it takes. While that is admirable, it is important to look at it bottoms up. I often get asked, “I really want that job, what do I need to do to get it?” Instead, a better approach is to say, “I am really passionate about coding, and I am going to invest my time on it, how can I maximize my investment?” The rest will follow.
Obviously, if you are from Nepal and want to work for a top tier company abroad, you have to do other things as well, like get good grades, take the TOEFL, SATs, and land a great scholarship. The journey is pretty hard, but becomes exponentially harder if it isn’t driven by your passion.
Can you recommend 5 universities that someone with an interest in your field should check out?
Honestly, learning to code does not require any classes. Make sure you have a machine to code on, and an internet connection. Then you can check out:
Coursera (great free classes)
Udacity (another great resource, often free)
MIT Opencourseware (totally free)
Can you recommend 3 resources for people looking to get into your field
This isn’t much different from the above question. The resources are exactly the same. If you are looking for a job, then LinkedIn!
Tell us about the role of mentorship in your professional life.
Find a mentor! It is one of the most important things you can do. Mentors not only teach you the trade, but also inspire you, motivate you and set the bar. I see a lot of folks doing the opposite — waiting for someone to mentor them. That won’t happen. You will need to go find one.
What is the best career advice you have ever received?
Your career should be passion-first, everything else will follow. If you don’t have a passion, invest on finding one. Your life will be much simpler that way! Also, work hard, complain less, and always strive to be better than yourself. And please, be humble. Lastly, don’t stress over it too much. While pressure and anxiety is part of a modern-day competitive career, the point is still to enjoy the journey!
The career advice you wished you received in your twenties.
What I just said as part of my advice. 🙂
Final words of advice for someone who wants to pursue a career in software engineering at a top company?
Be passionate about engineering! Work on your own projects, build stuff, look to optimize everything! Get involved in open-source projects. Don’t just rely on school, be a self learner. That being said, if you want to work abroad, do your due diligence in terms of college, standardized tests, etc. Above all, have fun doing it!