Hi! I'm Varun Shrivastav, working as a Software Development Engineer at Microsoft in Lehigh. I graduated from University of Utah last year. It's been a year for me, I have been working here at this company, so this is what I'm currently doing. But before working at this job, I was a developer at Infosys in India for over three years and basically the question where... 'what shaped my career path', is that my interest in Java Programming! I just knew how to program stuff and I just knew a few algorithms and stuff. And basically my interest in having a problem and solving it, writing a basically executable code for it is something that basically got me here. I was really interested in those things and I started small. And step by step I learnt things and working at Infosys for three years as a Java Developer so that gave me an opportunity to learn a lot of stuff there. While being at the University of Utah, I did HackerRank and stuff, so that really helped me gain more command on my programming skills, and that basically has helped me shape my career where I am today.
It's different! Right now with software developer companies, you have sprints. For my company right now I am given the responsibility, it's me who actually decides what are the tasks that I'm going to complete. We have a definite one month plan with twenty days coding period, ten days testing period! Every individual, every developer has their own responsibility to come up with a task that they think that they should be able to finish in this sprint and that is a plan. Say last week of the month there is a planning where we define all the tasks and have a discussion with our manager, they help us to decide if that is too much or if it is too less. So that is the kind of responsibility and decision that I have to make at work. There's more to it, in fact... I mean that's how the work works, that's how we do our work, but we are given a lot of... I mean we are actually supposed to make a lot of decisions on ourselves and not rely on our manager or other people to come and help us making decisions. Like decisions would be owning up a feature and let's say if that feature doesn't look good from the customers' end point, I am the one who can make a decision if that feature should be, let's say the UI should be like that or we should change it. That's something we're expected to make a decision and come up with, and have a discussion about it. So it's kind of very free, you're very independent and you are appreciated for making those decisions and coming up with those things.Working hours: As long as we are doing our tasks, it doesn't really matter but officially like everybody has to be here. 10 to 4 is the time where all the meetings, all the official meetings are supposed to happen. But people come here seven o'clock, as early as 7 and then leave by 3. Depends on what kind of responsibility they have, they have kids, they have other responsibilities to fulfill so it's very prompt. Like if I might not be able to come tomorrow, I can just drop an email 'I'm not coming tomorrow'. It is not very dependent or tied that I have certain number of hours in my work. It's free, but the thing that matters is that whatever I plan in my sprint, that task that I was supposed to finish, if I'm able to do it or not! We get a lot of freedom in terms of work-from-home and sick leaves, but at the end of the day it's the work that matters. As long as the work is getting done, we don't really have work hours!
Its not a generic thing where we're using standard tools. Obviously we are using Visual Studio 2017 for our (software) development. We use Git for our repo, repository, which is I think very common everywhere because Git is really easy to handle code. And then we have different tools to debug and logs. If you know a SQL database storage. We use different browsers, we have testing devices ranging from all different OS (operating system) from chrome, from macOS or iOS. What other tools do we have! We really rely upon Outlook, that's our first tool for our meeting stuff and scheduling is an important thing here because everybody is kind of like working independent, so you cannot expect anybody to be free at some point and you can just go and get help. Usually that is how it is, people appreciate it. But then if you really want to work it or find.. if there's a dependency, you'd be like meeting, you should be planning ahead. So prioritization is something that really is important at work. We also use Typescript for our UI. So let me tell you a little bit about my work. I'm sorry, I haven't been able to tell you that. We work for Microsoft Azure Cloud for mobile device management. We basically can remotely... if you buy a subscription of Microsoft Azure, you'll be the admin and you'll be able to remotely manage the mobile devices. In short it's like if you enroll your Windows laptop and you are the admin, you'll be able to send policies and settings can be configured on your devices for security reasons and stuff. For example, if your devices are enrolled by your admin, he can actually configure your mobile device to not use a camera for example for instance, or not to be able to use certain tools, not to be able to download something, like those things we use for security. This is enterprise product so we have this UI where admins can go and create stuff. Basically, coming back to the tools that we use is basically Typescript for our UI and we use C# as language. We use Power-Shell Script a lot for automating things. We also use automation but that also uses C# and those are pretty much tools that I work with every day. If I prefer other tools or not: It actually is something which I can make a choice, like I can use any editor I want of my choice, like I could use Atom or I could use Notepad++ for my thing or I could use the Visual Serial code. We could actually use those stuff and make our projections. We're not bound that we have to use certain amount of things but obviously the code bases isn't some language that which we have to follow so we just follow that.
A lot of good things about my job! So, for instance, for paternity leave, you get 3 months paid holidays. You're really valued as an engineer, which is something that I appreciate most! Like I get a lot of appreciation for the work that I do. I have a lot of independency in terms of planning my work. I can stay home and do it from there, and I can come here and do it from here. I don't have to report to my manager. We have weekly one on one. So I can go and discuss with my manager if I have any personal aspirations that can be fulfilled with my work or if I'm facing any problem, people are really approachable, they're really friendly, and they're really smart. I get to learn a lot of stuff from here, so that's something about working here. I kind of like pretty much everything about my job! Pleasant Surprises: There's always pleasant surprises! People are always at least, like they're bringing food and stuff in the morning. There are always cupcakes or doughnuts! There are always surprises. Late last year, we had hackathons. And just for the surprises, we were given Bose headphones, we first created small projects and everybody gave demonstration! So we get a lot of goodies and swag items in terms of t-shirts and stuff, so, yeah, pretty good about it! That's pretty nice in here!
People generally work with our Software Developers from different teams. Other people involved are the Program Managers who are people who design the product in terms of how customer should, they're the people who think on how the product should be so that it is more intuitive and helpful and easy to work with customers. So basically they're the people who plan the aspect and they want a Software Developer to implement those aspect and finish the work. So it's Software Engineers that I work with, there's Program Managers that I work with. It's also the Principal Architect but sometimes the aspect is something that couldn't be done straight away, we have to make some tweaks or we have to make some design and we have to come up with some new projects to implement those things, so in those times we try and take help from the Principal Engineers which are kind of senior, which are like ten years or fifteen years of experiences. And then you have your manager who's again a Principal Manager. they also have good experience for about twelve years- thirteen years, so those are the people that I really keep working on.What are the strategies: Basically you have to value everybody's time. You cannot just go and expect somebody to help you right away. So if you need somebody's help you probably want to drop an email and then expect or set to... Sometimes people are really busy because everybody has got their own sprint. They have got their own task, everybody's trying to finish their own task, but collaboration is a thing and everybody would want to help you, but not at the cost of putting their time away and not doing their own work. A simple strategy is to go up front and talk with them and then ask them and they can help you. And also making your manager aware of everything that is going on, is something that I learnt late, but it is something that is very important because your manager should be knowing if you are struck or not. You cannot just waste your time if you're stuck on some task and your manager doesn't know about it; that's the worst thing that you can do. So that is the strategy, your prioritize your work, you value other's time, and then you let your manager know about the work that you're doing or if your blocked because she's the person who will really, who will help you out with that! So ya, keeping your manager aware is the best strategy I guess, anywhere.
Major challenges in my job is that it's a very complex system. It's not like a given problem and that you have to start, have to code and then finish it. It's like a huge architecture, it's a huge product, it's an enterprise product and they are probably twenty different teams working on it; everybody owns a small part of it. So if there's a bug, that bug can be anywhere or if you have to implement a feature, that feature could be anywhere lying in those loopholes and you do not have information. You don't own or you do not understand every piece of it! So basically as an engineer, figuring out how things work, where the code is, what code changes do I make... if there is any regression issues like if I make the code changes and make my thing work, is it going to break somebody else's work? Is it going to break any other feature in my product? Those kinds are things are that are really challenging, to figure out what you have to do, where is the code change that have to do and what is the regression that you should be expecting! That is one of the biggest challenges at my work here.A few accomplishments and challenges: The accomplishment was... I finished one feature- Windows wifi feature, so admin can go and create a Windows wifi profile and send it down to all the devices that they're in road. So every device will get the same wifi and they can connect to it. That was something that our customers are really looking forward to. They wanted wifi configuration. So I did that and I got a lot of appreciation for that. So that was pretty nice!Challenges: The challenge was to understand what code changes do I need to make! It's also like there's a lot of the product already made. So you do not have a lot of freedom to just go and do what you want. There's already a design and then design over design, it's basically understanding how things are working. As a Software Engineer your skills are more used that you can understand code and then make changes to it so that you can work something. So that was a pretty good challenge, to understand what code changes I'm supposed to make. So basically all I had to do was take some feeds from the UI and make some XML and send to the device. It sounds simple, but then how do I do it on top of the system that they have was the challenge.
The hiring process was that I applied for the job at the career fair and all of a sudden one morning when I wake up I have an interview (e)mail; that mail is about the telephonic round interview they wanted to schedule the interview. So going forward I scheduled a telephonic round. At the telephonic round, this guy talks to me about..., helps me relax and asked me about my experience, my previous work experience. Then he asked me a few questions, a few technical questions. Following the technical questions, he asked me a couple of personal questions. So basically that interview went on for like forty, forty five minutes. We also spoke a little bit about physics because of my interest and it just came up. So after the telephonic round I got an email after one day that, okay they want me to come in at client location for client interview. So now this interview at the location is one day full interview with five rounds. What they do is you go to the reception and there's this guy, he's a Principal Manager; he comes and takes me in his office and everybody's got their own office in here, he takes me in office, he puts up a question on the white board and he wants me to solve it and write an executable code for it. Similar was all the other rounds. My interview got over and then he dropped me back at the reception and then I waited for five minutes and then again the other guy comes, he's a Senior Software Engineer, he takes me to his office, he gives me a question on white board and I'm supposed to solve it. So there were five interview rounds. Out of those three were coding interviews in which they gave me a problem and I'm supposed to write the executable code for it. I had the choice of choosing the language that I wanted to code in. I chose java. Also, solving the problem writing the code, it's not the end. They want you to optimize the code, find the convexity of the code, find the test cases that your test... the code that you wrote is going to fail, the edge cases! So it's a whole software engineering cycle where they want you to solve the problem, they want you to write executable code, they want you to find the complexity of it or if you can improve the performance of the code and they also want you to find the test cases where your code is going to fail. That is how three rounds of interview were. The other one interview was design interview. We spoke about how Instagram, if wasn't there and was supposed to be made, how would I make Instagram. This round was a little difficult but then they just want to see what kind of challenges that you can think of in performing, implementing or creating such apps. The first is robustness and scalability, and the authorization of the user, the safety, then GDPR, global data protection.. so all those things, I spoke about it and I spoke about how probably I would design it and then this interview also had a little bit of UI interview questions from java script or JSON or xpath. That was one round of interview. The other one round of interview was with the Director of Engineering at this client location and then we spoke about behavioral stuff. We spoke at length about what my aspirations are and why do I want work with Microsoft and stuff. So that was it! And after five rounds - full day of interview, I was going home and as soon as I reached my home garden, I got an email saying that 'hey, here's the offer letter and you're supposed to sign it and send it in two days!' It was quite exhausted, but I really felt good the way it was. It was a full day interview so it's not like an interview where you go and interview for an hour and then you come back. Those interviews are great as well but this interview really like helped me... even if I wouldn't have got an offer letter I really liked the kind of workout that I did, it really helped me gauge myself. Like if I wasn't selected, I would have known where, which areas do I need to go and work more. Even the interviews are such crucial that now I know that if i get interviews like this, I'm supposed to be working hard for it; prepare for it and go for it because it was an amazing experience being interviewed here!What questions were asked: Questions were basically your simple questions. Basically they won't give you tough questions where they are trying to make you feel miserable that you're not able to solve it. So the first round of my interview, the first question the interviewer gave me was a pretty simple question. The question, basically I was given a roman number, you had to convert it... I'm sorry, I think it was vice-versa. Given number that I had to convert in a roman number or probably it was the other way around; it was a simple question. What they want is to see how you approach towards the question, how you solve the questions first and when you solve the question, then you start writing the code. So basically when I started, I struggled! I couldn't... I was so nervous I couldn't do it for like ten minutes. I just dropped it, 'okay it's gone! It's done', that's how I felt. That's not gonna happen anymore but then I think it's very important and that's what I did. I just closed, like took a moment, took a deep breath and just imagined, 'hey there's nobody in here. I'm just at home, I'm trying to solve this problem. So let's not bother about the interview.' I was then calm and composed. And I started talking to the interviewer, 'here's the thing what I think' and he helped me back and then we constructed. We actually solved the problem and I started writing the code. That's how it is. They actually want you to be successful at it, so try to have a conversation with them because they really help and they like the attitude. If you have an attitude for problem solving that is very, very, very much appreciated by these interviewers. They want you to have it because even in my working situations if I'm given a problem, I wouldn't be able to go and solve it, I would need to go and discuss with my manager. So they really like the attitude where you're trying to solve a problem by having a conversation. So yeah, the type of questions were simple, but then you have to write the executable code for it. The other two rounds: they had pretty more algorithms. There were more graph theory. One was graph theory. Actually both the other interviews were graph theory, problem based on standard algorithms that we have; white cross algorithm or there was one on the problem one. I don't remember the algorithm but it was again a graph theory problem. So you need to do those standard algorithms, like breadth first search, depth first search, white cross algorithm... So they are like ten, or maybe even less like six algorithms and graph theory that you should be thorough with. And that would really help you through this interview!
As I said before, the team is looking for somebody who knows software engineering; who knows about coding, who knows about software engineering testing, who also knows a little bit of of object oriented programming. So those are the skill things that they're looking forward to. They want to know that if you're given a problem you can solve the problem, you can code and you understand software principles. But they also really much... they care about what is your communication skills, are you an introvert! I think so, I'm not sure about this but this is what I really think is very important that you are really open and you're honest about your skills and you can have a conversation about solving a problem. Having a conversation, being upfront, being prioritized, how to manage your work, having a good communication is something that really work. They very much value kind of the behavioral skills that you have. If you're somebody who doesn't talk at all or doesn't communicate, it's gonna be tough for the manager to be able to working with you. So they want somebody who could understand diversity and work with different people because that's something that is really important more than, probably even more than your coding skills! It's like 50- 50%. So your behavior skills and your coding skills, they are like 50- 50%. How does my team interview candidates: The candidates basically, as I told you... You et a telephonic round, once you come to the client for interview, you are having five different rounds with five different persons, which is basically Principle Software Engineers and Senior Software Engineers. And then they will have a set of questions that they would want to ask you on that parameter. They also have internal discussions. So like, one interviewer finished the interview and and he just goes to second interviewer, gives him a heads up 'okay, his coding skills are really great. So probably you don't want to test him on that.' Or he could give a feedback, 'okay his coding skills are average. Probably you should also test him on coding skills and have a say on that.' So those are the things. They're pretty nice. They really help you. They make you comfortable, and you also have one interview where you get food. So that is basically a 2 hours round. You get food, you get your lunch. That's what they call it 'lunch interview'; you get your lunch and then you're also asked questions at the same time. They're pretty nice!
Right now I'm working at Microsoft. I'm only trying to understand their complex system, learn more into it, and be an expert in the area. That is my first short term goal in here. But there are also a lot of internal job opportunities, and there are like, really good work being done in different fields! Quantum computing, in AI... all these fields, they may sound so diverse but they all require software engineers. So if there is an opportunity that is really interesting to me, I can make internal team change and go and join some interesting work. So we have a portal where you get all the internal job postings, and you can switch teams and start working there and gain experience there.
It actually depends on what company that you're working. Let's talk about positions... you can have a different position, you can be a data engineer, you can be a business analyst, you can be a data scientist, you can be a software developer. The saleries: I would say data scientists are the ones that get paid the most, then there are software developers, then there are automation engineers, then there are business analysts and data engineers. I would say that is how it is. Data scientists can.. like I have known a few people, they are earning 250- 300. I know Facebook pays 700 to data scientists! I'm not saying they are really expert, I really hope that they're really experts. But here in Utah, the starting range will be something around 80 -90. That would be a pretty good deal. Typical career paths after starting positions: As you're in position where you can learn about yourself, your interest more and something that you want to pursue more and you can change the field. Like right now I'm trying to move to a team which is working... if in Microsoft they're working on quantum computing, which is the next big thing and they're doing some amazing work. So i'm trying to work with the manager and make a team change. Similarly at your own job at your own company, you can see different opportunities; what are there, what your interests are and you should be very prompt about it, very open about it. Go talk to your manager this is something that you're looking for, your career aspirations are aligned with something like this, and you would want to change. And you have to make that move! You have to make the conversation! You cannot stay in your bubble and think that good things will happen to you.
When I worked as a Senior Software Engineer at Infosys, the whole paradigm, the working environment was different. We didn't have sprints, we had long projects that went on for six months and year. It was very different from working at Microsoft in here. Responsibilities: It was a service based company, so basically we had a client; we were handling the enterprise application, it was a java application that we were handling. We would get good request from them that they would want to change this or they would want to do this or their business logic has changed, they want to add a customer loyalty program. We had a set of things that we had to do. We didn't have any inputs on how the sprint should be or we could not design how the UI should be. Here I have the independence to design my feature and if I don't think it is right I can make the decision or make a meeting and make people come and listen to me. But in Infosys we had a very strict spec, we had to follow and we had to make those things. My working hours in Infosys were from nine to six. It also like depend on the feature, how we're working. If we needed more.. sometimes we needed more and we need back log. When we had back logs, we need to do more work so I stayed, at some point stayed as late as 9 pm in the night. But that was it. And and I had a good learning experience there.
I was hired in Infosys from college, I was a college hire. I finished my undergraduate in engineering, and then they came from placements. So India, like you finish your undergrad and then companies, they come and they interview. But it was like one of those interviews. They came, and then they saw.. they have a few cutoffs, they have a few parameters. They check your CGPA and stuff, and then the interview. So I was interviewed and then they selected me, they wanted me to come and join and start. So it was a college hire. And then the training: They first first put you on rigorous training for three months, and then they actually put you in a real work environment where you actually start coding. So they take you from college, they train you and then they make you work. Questions were really simple that they asked. Really, really simple like object oriented programming question. What is encapsulation, what this polymorphism! And they asked a few puzzles questions which are really simple puzzle questions. And they also check basically the communication skills, because I think that is something that everywhere is taken into consideration, if you can really talk to people.
for : Master’s Degree, Management Information Systems, General, University of Utah - David Eccles School of Business
Summarized By: Jeff Musk on Tue Oct 02 2018
I picked David Eccles School of Business because I got to know about this school from one of my friends. He really gave me a good review from the school. I also looked at the faculty of this school and then there are great professors and that you can just go and do your own projects and learn so many things. I also got scholarship that was one reason as it was easy for my finances and come join this school. The other universities that I considered was the University of Cincinnati and University of Illinois. I didn't apply for much universities. Those were basically three universities that I applied and I came and joined University of Utah. The program has helped me a lot in terms of developing as a professional, knowing to speak up, knowing what are my responsibilities and and how should I be taking care of it in a professional way, being a friend, bringing things and not keeping to myself if there is a problem.. those are things. I also learned a great deal of stuff in terms of the things that I've learnt at the University of Utah and this school, in terms of analytics and visualization or database; I took java classes as well in school. It was a great learning experience! The professors are really great, they want you to grow, they want you to learn. They are really, really helpful, like I never imagined the professors would be that helpful at a school. So, I liked everything about the program. I learned so many things.
for : Master’s Degree, Management Information Systems, General, University of Utah - David Eccles School of Business
Summarized By: Jeff Musk on Tue Oct 02 2018
So at school I had the opportunity when I prepared in terms of my resume, my cover letters and how should I be applying for jobs. I also had interview mockups. I had the opportunity to speak to professor and find out really what is out there in the market, what they're looking for and their inputs were really really important to understand what kind of preparation that I need to do. Also at the University of Utah, I had the independence to go and choose a program from School of Computing which is really great school again, School of Computing! I picked a program. So I was really like having the freedom to plan my Master's program around things that I want to learn and what I want to do. Getting inputs from professor, what they're looking for. what skills I need to develop and then going and picking resources from University of Utah and picking my own subjects in terms of what I want to learn was the best thing. Then there's great networking! I got good job interviews and offers from QuadrigaCX and a couple of different more companies just because of networking. So networking is great. I knew nothing about networking unless I came to school and there is alumni support. So there's this bunch of resources at school which basically help you prepare for things, prepare for interview and really know what you should be learning and picking up things for.