Facebook Software Engineer
Moscow Institute of Physics and Technology (State University) (MIPT) Master of Science (MSc), Applied Physics and Mathematics
Current Time 0:00
/
Duration Time -:-
Progress: NaN%

How did you get to where you are today? What is your story? What incidents and experiences shaped your career path?

Summarized By: Jeff Musk on Thu Dec 19 2019
Yeah, I'm Michael. Originally, I'm from Russia. That's where I studied and graduated. I would say that the way I ended up here is kind of luck. First of all, I think the university, that had kind of lab sponsored by Intel, and that's how I got my first job at Intel and it was kind of internship, but it was easier to get into regular internships. That's how I got in my field which is compilers. So originally I worked on the Intel compiler and I spent quite some time. I think around seven years I got some experience in compilers which happened to be a very niche area. So like not many people know this and at the same time, they're valuable. And I would say it's not rocket science. It's just a niche not many people know about and feel excited about. And for me, I just happen to find myself there. I worked in Russia, and at some point, I wanted to explore other countries as I consider Europe and the US as the main candidates, and I started to look for other jobs. I got a job in Apple in the US, and I moved to the US five years ago. So I worked at Apple also in compilers and I contributed to around 10 years working in compilers. So I decided to shift the little. Last year I moved to Facebook and I started to work on machine learning, but still kind of a little close to the compiler field. 

What are the responsibilities and decisions that you handle at work? Discuss weekly hours you spend in the office, for work travel, and working from home.

Based on experience at: Software Engineer, Facebook
Summarized By: Jeff Musk on Thu Dec 19 2019
I'm now a senior software engineer at Facebook, and my responsibilities are mainly now to define directions for the project that we're working on. And that means deciding what people would be working on. Sometimes it's less doing work myself. Like, for instance, I write fewer codes than previously, but you need to be able to kind of assess present constant proposals on different, like designs and solutions. So that's, I would say, my responsibility now. I usually work regular hours. At Facebook, we have shuttles, so I don't drive. So whenever shuttles come by, take them. So it's usually 10 to 7 or something like this. I do open my laptop a lot at home, but it's not because I'm required to do it, just usually, because I'm interested in what's going on there. Work travel? I travel more than my previous companies, but it's not a lot. It's probably maybe twice a year. 

What tools (software programs, frameworks, models, algorithms, languages) do you use at work? Do you prefer certain tools more than the others? Why?

Based on experience at: Software Engineer, Facebook
Summarized By: Jeff Musk on Thu Dec 19 2019
I mainly write in C and C++, unless but still quite frequent on Python. I know assemblers on Exeter six and Arm. And even so I don't write them. I can usually read them, comprehend them. But my profession language is C and C++. What frameworks do I use? I work on PyTorch Facebook. That's a framework I use and work on. Of course, I tried to be familiar with alternative frameworks. Such as TensorFlow and others. In terms of IDE, I prefer Veeam. And I realize that some IDs are more powerful and it's just my habit to use it. Another advantage of using Veeam that I kind of self-justifying my choices that you can find Veeam everywhere. While, for instance, if you use VS Code and you change your laptop, try to work on someone else laptop, you cannot find it there sometimes. I'm not religious about Veeam. It's just my personal preference.

What things do you like about your job? Were there any pleasant surprises?

Based on experience at: Software Engineer, Facebook
Summarized By: Jeff Musk on Thu Dec 19 2019
One thing that stands out for me at Facebook is that there is a lot of responsibility. Basically, you pick, what you will be working on? You're not being taught what to work on. So this is great freedom, but freedom comes with great responsibility. In extreme cases, I can decide to work on nothing and just spend one month at the beach or in the mountains. And no one would say to work to me except on until the review. Right. Because of the review, you need to show what you've been working on. Other companies work differently because you were told to work on some projects, you just report your progress on the project. Here you actually have to explain why you decided to work on this project and while not something else and of course, how far you went. So that's stressful and rewarding at the same time. Pleasant surprises? Facebook has a lot off perks and they're not always like material, but they are very nice to have. For instance, we have a woodshop where you can go and with your old hands build something like some bench or do cutting work. It sounds a bit silly, I know, but it's very fun to try.

What are the job titles of people you routinely work with inside and outside of your organization? What approaches do you find to be effective in working with them?

Based on experience at: Software Engineer, Facebook
Summarized By: Jeff Musk on Thu Dec 19 2019
So most of the people around me are also software engineers. At Facebook level are somewhat open so you can only guess, but usually, you can guess if the person is on a higher level or lower levels if you have rough understanding. Of course, I also sometimes communicate with program managers, product managers, and people managers. Those are the people I'm working with. What approach do I find effective? I would say the most important and general rule is to find what people seeing, basically, what was their motivations behind directions. Because in general, there are no evil people. But sometimes people have different priorities. That's how people get into arguments. And if you go into an argument with an assumption that the person just wants to be bad, it doesn't help. But if instead, you try to understand why they want to choose their options over yours, then you can actually empathize and you can maybe see something that you didn't think about before. If you combine your priorities and their priorities, you can come up with a common solution that satisfies both of you. So basically my advice for people is to find a way to understand why people behave this way or not the other way, basically their motivations.

What major challenges do you face in your job and how do you handle them? Can you discuss a few accomplishments?

Based on experience at: Software Engineer, Facebook
Summarized By: Jeff Musk on Thu Dec 19 2019
I would say the major challenge, at least at Facebook, maybe not just at Facebook but in this project-specific is that it's a very the hyped area. It's very popular now, and there is a lot of demand on, like new features and just fixing bugs as well. And there are not many developers who can do this. And we really have to spread very thin because of the requests that are coming. And because of that, sometimes the features are not complete 100% and we have to pay for it later. And it's very challenging to kind of balance like you still want to work on features, but you don't want to create too much technical debt. So I'm still trying to find the right balance here. Accomplishments? It's hard to say like the major accomplishment but I think I'm trying to push towards creating less technical debt than average. It's just different priorities. Usually, people find delivering features more important but for me not delivering feature, but writing a better code is more rewarding, so that's kind of my personal preference

What are the recent developments in the field? How significant are these improvements over past work? What are their implications for future research & industry applications, if any?

Based on experience at: Software Engineer, Facebook
Summarized By: Jeff Musk on Thu Dec 19 2019
As I said, I work on Pytorch and it's my alternative for TensorFlow. TensorFlow was developed as like you describe a graph of computation and it gives you a result after like some behind the curtains optimization. PyTorch was developed from another side. It was developed as an eager mouth, kind of NumbPy improvement from which you can construct a kind of computational graph. But you can do it eagerly. You can inspect your intermediate states and at any moment so it was more user-friendly. But because of the eagerness, it's like some optimization that TensorFlow has. So currently I see the TensorFlow tries to move towards more user-friendliness but PyTorch at the same time tries to preserve this user-friendliness but achieve more optimization performance optimization. So this is the general landscape in this framework like Tensor flow is fast, but hard to use, sometimes Py torch is not as fast but easy to use, and both of them want to be fast and user-friendly. So whoever comes first, would be getting more users, I guess.

What was the hiring process like for your job? What were the roles of people who interviewed you? What kind of questions were asked?

Based on experience at: Software Engineer, Facebook
Summarized By: Jeff Musk on Thu Dec 19 2019
I interviewed at Facebook as a specialist. So there are many online resources about the interviewing process that companies like Google, Facebook and they are very similar and usually use resources pretty accurately as they describe them. One thing that I would note about it is, at least at Facebook there are two pathways, like a generalist, which is usually described, and specialist. The main difference is that in a specialist's pathway, you usually get ready with specific questions about your expertise, the main area. So, for instance, if you asked about the system designing question, it would not be something like design Twitter, but rather design some component of a compiler for me because people like me are not expected to know how to design Twitter. So people who interviewed me, I believe, were mostly engineers as well, but maybe some of them were managers. I'm not quite sure about that. What kind of questions? Bunch of online resources. I know that there is a book cracking the code interviews I think covers it really well. You usually have several rounds of coding, a couple of rounds of design interviews and one or maybe several rounds of behavioral questions. Coding questions you can check out sites like LeetCode. Sites like LeetCode can provide some examples of what can be asked for design questions. I think cracking the coding interview has some examples. For behavioral questions, it's mostly like how you handle conflicts? Can you provide examples from your past? How you do this, how you approach that kind of problem? It's a conversation with you trying to understand how you work with people.

What qualities does your team look for while hiring? How does your team interview candidates?

Based on experience at: Software Engineer, Facebook
Summarized By: Jeff Musk on Thu Dec 19 2019
Our team interviews candidates in the same way as all of Facebook's team interview. But we do look for some specific background for our candidates. For instance, if we have some compiler related project, we would look for people with compiler background. It's just so safe sometimes because it's not an easy area to quickly grasp, so other than that, the process is the same as usual. It's the same. several rounds of interviews like coding, design and behavioral, it's a standard for Facebook, and I think the same goes and other big companies as well.

What are different entry-level jobs and subsequent job pathways that can lead students to a position such as yours?

Based on experience at: Software Engineer, Facebook
Summarized By: Jeff Musk on Thu Dec 19 2019
I think the most popular entry-level point is internship, and I think it's a great opportunity for students to show themselves. It's like a better interview because in one interview that is still high the variants like you might feel but feel sick on that day, and then you will screw up your interview not because you're not prepared but just because you have a headache or something. On the internship you have usually, I think, several months. So in several months you can achieve some. It isn't about results. It will be much more accurate indicator of the level of your commitment, and usually, if you do a good job, you can not always, but you can expect on the offer for a full-time position usually would go back to university, finish our studies and then come back for this offer.

What were the responsibilities and decisions that you handled at work? Discuss weekly hours you spent in the office, for work travel, and working from home.

Based on experience at: Software Engineer, Apple
Summarized By: Jeff Musk on Thu Dec 19 2019
So at Apple, I worked on the lower level, so I had more time working on the code myself, which is actually nice that as I understand now. My hours were more regular than now. I usually didn't work from home at all, so I was in the office maybe 10 to 6 or 10 to 7. I didn't travel much, I would say I used it to go to conferences once in a while but that was it.

What major challenges did you face in your job and how did you handle them? Can you discuss a few accomplishments?

Based on experience at: Software Engineer, Apple
Summarized By: Jeff Musk on Thu Dec 19 2019
There are technical challenges and personal challenges. I think the personal challenge for me was that I stayed in the same field for quite some time, and at some point, I wanted to change. And that's how I decided to leave Apple but other than that, it's a very good company. It's very comfortable working environment and excellent people around. But that said, it's kind of hard to transfer team internally because Apple's known to be very secretive. You often just don't know if there are opportunities close to you. So for me, it was easier to just change companies. 

What was the hiring process like for your job? What were the roles of people who interviewed you? What kind of questions were asked?

Based on experience at: Software Engineer, Apple
Summarized By: Jeff Musk on Thu Dec 19 2019
At Apple, I think the interview process is less standardized than at Facebook or Google. But still, I had several rounds of coding questions. Mine was more related to the compiler. For instance, at Facebook, protest for me was I was invited to fly to the U S. There was a home screen in which I had some conversation about my experience. After I pass the screen, I was invited to fly to the US. That time I was in Russia, so I flew to the US for I think, a weekend and I had a full day of interviews. Monday, I believe, and the rest of the people who interviewed me arranged from engineers to directors. I believe I remember that I was interviewed by a very famous person in the field Chris Lightner, and who is now the senior director of Google. Something like this. So that impressed me. Lots of people like that interview kind of general engineers

How did the program prepare you for your career? Think about faculty, resources, alumni, exposure & networking. What were the best parts?

Based on experience at: Master of Science (MSc), Applied Physics and Mathematics, Moscow Institute of Physics and Technology (State University) (MIPT)
Summarized By: Jeff Musk on Thu Dec 19 2019
So in our university. I think the I told the program doesn't reflect well what actually happened. I think we had a lot of classes about software engineering, even though it's not reflected in applied mathematics and physics. As I said in one of the previous questions, I had a really nice opportunity to join international companies earlier as interns and it was embedded into our education plan. When I worked in my bachelor days, that was part of what I did for Intel. So there was no conflict between, like finding a job and finishing your studies. It very well blended together. I think that was very specific to my university, at least in Russia, which I'm very thankful for.

Do you have any parting advice for students and professionals starting out in your field? What three mistakes they should avoid? What three things would help them the most?

Based on experience at: Software Engineer, Facebook
Summarized By: Jeff Musk on Thu Dec 19 2019
I think discipline and dedication go a very long way. And that's what differentiates good candidates from the average candidates. Usually, you see if a person spends some time on this problem like you can give a task to someone and you can accomplish it on a minimal level. Or you can go on an extra mile and, like, accomplish it and also cover some area around with them. You usually can see if the student is excited about the task. There is such a feeling that you can trust this person is able to keep working on whatever is needed. I don't know how to actually make it to an advice, but basically, if you feel the area interests you just keep digging into it.