Zuckerberg called. Facebook programmer on his US interview experience and Facebook workflow

Today I want to present you an interview with a programmer, or rather a programmer from Silicon Valley, whose voice is familiar to many of you. Ksenia Pokrovskaya, the leader of the most popular technological podcast of Radio-T in Russia, has been living in the USA for 5 years, and almost 3 of them are engaged in mobile development on Facebook.

In the interview, we talked about her personal experience in finding work in the USA and the workflow on Facebook.

- I have a classical education for a programmer: I graduated from the Department of Software at the Moscow Institute of Electronic Technology. The choice of a specialty was not calculated and fully understood, I went to study what I liked and did, and it was mathematics. I went to the software department without a computer. I earned money on my first computer after the first year - then my conscious programming began.
The curriculum at Russian universities was not very efficiently built, so after graduation it was quite difficult to immediately find a job as a programmer.

Anticipating this, for 4 courses I decided to get involved in technology and went to work as a technical support engineer for Parallels, which is now quite famous among programmers in Moscow, and then only 40 people worked in it. I didn’t support users for long: after about two weeks I became boring, I raised apache on my computer, first I started doing static web pages, then more complicated things: the schedule of our department with the ability to edit. Initiatives of such a plan gave me the opportunity to quickly move from the technical support department to the development department. First I programmed in Perl, then Python. And then the iPhone came out, I was curious to try to write something for this platform, I studied this platform for about a year in my free time, а потом осуществился еще один переход внутри компании – и я стала мобильным разработчиком.

- How did you end up in the USA?

- The main reason for the move was family circumstances, and I continued to work at Parallels, but now at the Seattle office. After some time, I wanted to try my hand at one of the American technology giants, and I began to actively prepare for interviews - and for several years I have been working on Facebook.

- Before you received the offer from Facebook. How many companies have you been interviewed in?

- In interviews, as in any business, training is the key to success, so before you send a resume to a dream company, you need to test yourself for an interview with other companies. So I did: since I wanted to work on Facebook, before going to them, I went through several more interviews. And each time my ability to go through technical interviews grew. Of course, I did not receive a job offer from a couple of the first companies, but the interviews that took place at about the same time as Facebook ended in offers.

- How is the interview process in American companies arranged?

- All interviews for programmers in large American technology companies are arranged approximately the same. Startups have a slightly different organization of work interviews. If we talk about Apple, Google, Facebook, Amazon, then everything is pretty typical: the interview takes place in three stages. The first is a telephone conversation with a hiring specialist, the second is the so-called phone screen (remote technical check lasting from half an hour to an hour), and the last stage is this face-to-face interview (or, as it is called in the USA, onsite interview).

—Tell me more about how onsite interviews go?

On Facebook this process has some differences from other companies: we choose a person not in a specific team, but in principle in a company. For example, on Google or Apple you will be interviewed by exactly those people who will work with you on the same team. Questions are chosen by them at their discretion. On Facebook, since we are recruiting people for the company as a whole, the process is fairly calibrated: there is a certain set of tasks that are checked on existing Facebook programmers before they get interviewed with candidates.
The first thing that usually strikes a programmer who has just moved from Russia is that he will have to spend a whole working day on an in-person meeting with a company. In the USA, all onsite interviews (usually 5-6) take place on the same day and are divided into 2 types: technical and behavioral. The technical part usually consists of a coding interview (tasks on algorithms and data structures) and a design interview, where open-ended questions are asked, and the interviewer's goal is to understand how you think and how ready to solve complex production problems.
Facebook's behavioral interviews are designed to recognize whether you are comfortable working in a company’s culture.

- How is Facebook making the final decision on the candidates?
- Each of the interviewers makes a standardized response to the candidate. With this, attention is drawn to the so-called red flags. For example, if a candidate coped with a task, but there were moments in the decision process that could interfere with work efficiency, then the interviewer should write about this in his review. In addition to a detailed review, the interviewer gives his recommendation to hire or not to hire a candidate. The final decision should be made by a special hiring committee based on feedback and recommendations from interviewers.

- What programming languages ​​and technologies are preferred on Facebook and in Silicon Valley in general?

- As I said, on Facebook people are not recruited into a specific team, but into the company as a whole, and the company has a lot of different projects, so almost any language and technology will find application. The interview can be held in any programming language, but, of course, it may happen that the interviewer will not know your language enough to evaluate your deep knowledge. Php or Hack is a good option for Facebook, and Python is good for any company. If you are a mobile developer, the interview will be held in Java for Android or Objective-C / Swift for iOS programmers, and the interviewer will definitely know the same language.

- How important is previous work experience for a successful interview?

If experience and knowledge are put on the scales, then most technology companies definitely make the choice in favor of knowledge. The philosophy is this: for example, you have been in the industry for a long time, but it so happened that you did not have any impressive projects, while you have very good knowledge and are capable of more. No one wants to miss such a candidate.
This approach, of course, is not ideal, because they usually interview on algorithms and data structures - this knowledge is fresh from recent university graduates, but not from people with experience.

- Imagine that the candidate successfully passed the interview and received an offer from Facebook, but after a couple of months he realized that he was not interested in the project or uncomfortable working in a team. Can he change the project / team? How does this process work?

- In general, on Facebook for the first 4-6 weeks a new employee gets into a conditional bootcamp and goes through the “young fighter course”, solving real tasks that go into production with the help of a mentor. At the same time, a new employee actively communicates with managers of different teams to make a choice.
If after some time you understand that this is not your team, not your technology and somehow you are not happy with everything, then the process of finding a team which was tested in bootcamp just repeats itself.

- What project are you working on on Facebook?

“I'm working on a library that makes it easy to create a highly optimized UI in iPhone apps.” The ideology is very similar to React, but the framework is completely native.

- How is the workflow on Facebook generally organized: from setting the task to going into production?

- I will not undertake to speak for the company as a whole, I will talk about my experience. As already mentioned, I am developing the library and my end users are developers. In this case, the workflow is very much determined by the team itself. We propose and discuss ideas within the team and with our users, decide which ones have a higher priority and, according to these decisions, form a plan and deadlines. Next, we are already acting according to the plan, we decide how many people are needed to complete the project and how to coordinate all those involved.
Another point that greatly affects the workflow and helps us understand that we are going in the right direction is collecting metrics. Google, if I'm not mistaken, was one of the first companies to implement this approach. At Facebook, we are actively using it.

- Tell us about the main technologies on Facebook?

- Facebook is a huge company with a wide technological stack. For example, the Facebook social network has a backend written in C ++, Instagram has Python, and WhatsApp has Erlang. Of course, each company has flagships, Facebook, for example, has been working on its own dialect of PHP for several years, which is called Hack, to simplify it, it is statically typed PHP, this language is quite actively used internally. But the general trend in most large technology companies is that there is always a project that uses any of the more or less popular technologies or languages.

- How fast are Facebook developers' career growth? How long does an average developer go from Junior to Senior?

- It very much depends on the person. I worked with a very talented programmer who grew from Intern to Senior in a year, but this is rather the exception. It is quite possible to go from Junior to Senior in a few years, if you continue to move within the same technological stack. If, for example, you started as a backend developer, but after a couple of years you got tired and you decided to do machine learning, keep in mind that at first, you will most likely not be so useful to the company, because you are in a period of accumulating knowledge.

- Tell me about your career plans. You already work in the company of your dreams. What's next?

- I think that working on Facebook is not the end stage. Now I’m just thinking about where and how to develop further. At the moment, I am engaged not only in programming, but also in creating effective interaction between the teams that are involved in my project, my position is called tech lead and it is at a crossroads between the managerial development path and the programmer one.
If in the near future, I understand that the organization of processes is more interesting to me, then I will start looking in the direction of the manager’s position, perhaps, on the contrary, I will immerse myself in programming in full. While programming is more understandable for me and the pleasure of the result is greater. I wrote a code, discussed it in a review, made a note - the result from each step is noticeable and gives a bit of a sense of work done, then in the case of coordination and organization of other people, you can invest a lot of effort, but not get the result for reasons independent of you. In general, this is an unresolved issue for me now.