
Internship at Google. Another look
Mikhail Okunev, Master of Perm State University, talks about his internship at Google. He cannot post to Habr, as there is no account, therefore I will write for it. In his LJ, you can read about life and leisure directly in Zurich and about an internship at Microsoft last year.
Today I will tell you what my approximate day at work looks like:

11.00-13.00. Somewhere around this time I come to the office.
Yes, I sleep for a long time, and no matter how I try to break this mode - it turns out badly. This is not punished here, the main thing is that I complete all the tasks on time. My boss comes at 10, the head of the team - works from morning to night, but four days a week, because he has a family in Germany. In general, everything is very flexible.
So, I greet the team, dine, have a cup of coffee. Breakfast, lunch, dinner is free here. The food is tasty and varied: there is always fish, meat, some pasta and dessert. And, most importantly - there is a machine for freshly squeezed orange juice.

At 12.00 we have a standup rally. A dubious occupation, in my opinion, but the team is practicing. Everyone gets in a circle and briefly tells you what they did, what didn’t work, and what are their plans for the future. I usually skip. However, it's okay, because my project has not yet been tied to anyone but me.
By the way, about my project - as usual the details are closed by the NDA, but in the most general words. I work in team X, which makes the product Y, which is then used by the Z team. Neither X nor Y are googled, but in general we are talking about tons of data, many computers, thousands of lines of code. I have a pretty interesting project. Now I will add some functionality for Y, and then I will mercilessly optimize it. At the same time I pick up Java. After C ++ it goes like clockwork.
Then I dive into the coding, sometimes communicating with my boss, it lasts up to 8-9 hours.
It looks something like this:

The workplace is very convenient - two monitors, even more than in MS, Linux, Eclipse. Know - work.
By the way, about the work process. At first, I was worried that I would have to write in an unfamiliar language, to master the local infrastructure, but it did not seem to cause any special problems. The problems turned out to be different - the lack of industrial experience affects and as a result, I sometimes incorrectly prioritize. Say, once I spent a whole week studying and applying some internal data structure (written, by the way, by one of the former nuclear scientists). For a long time I could not understand how it works until I realized that I had taught the same thing to my schoolchildren in Kungur. But that's not the point. After I felt the internal structure, I realized that I can strain a little and speed up some process by 5-10 times, and reduce the amount of memory spent by 2 times, due to the use of implementation features. If after reading this sentence you got a gleam in your eyes, then, probably, you were once actively involved in AFM. I spent a few days, implemented it, and it even almost worked. And suddenly, on the weekend, I realized that I was wasting my time absolutely in vain, because:
1) my system is not real-time, and there is no sense in the fact that it works for a minute, and not for a second
2) the implementation turned out to be much more complicated than in the obvious method
3) the main thing - the solution relied on the use of an internal representation, instead of a public interface, which means that if you change the internals, you will have to change my piece of code.
In general, it is not so easy to get used to the fact that speed and optimality are needed only until some functionality is impossible without them. That you can spend a couple of days refactoring the code, which already works great, but we’ll split piece A into two pieces B and C, which are much more convenient to work with separately, and so on. I learn a lot here and it's great.
I really like the team I work with. It seems that almost everyone here is with PhD, and the Ukrainian Bogdan, although he did not have time to get it, is, however, an ASM finalist. Moreover, I walked up the floor somehow, and after reading the posted questionnaires, I found that almost half came from Research, many still had the same PhD. Depends on the team, I think, but still the quality of the composition is quite strong.
Before you submit a code, you need to show it to colleagues. My first piece of code on 700 lines was recently brutally reviewed by my boss, 95% of the comments were related to the style, but I've been remodeling the remaining 5% for a week now. However, another week, and it will be possible to boldly submit, on which the first, smaller, part of my project will end. :)
After work, I go to the first floor to the gym

20 minutes of running, weight training, press 100 times, beating pears, shower. Who said that a programmer is a spectacle with glasses?
After the gym, it’s very cool to lie in the room with aquariums.

And then I go to the Play room and play the piano for an hour. Of course, not a pink piano, as in MS, but it will do.
Sometimes I really want to call home, for this you can use such booths

Midnight arrives, I leave the building and in half an hour walk I reach my apartment, where there is only a sofa from furniture, but, by the way, this is more than enough for me. And everything repeats.
Today I will tell you what my approximate day at work looks like:

11.00-13.00. Somewhere around this time I come to the office.
Yes, I sleep for a long time, and no matter how I try to break this mode - it turns out badly. This is not punished here, the main thing is that I complete all the tasks on time. My boss comes at 10, the head of the team - works from morning to night, but four days a week, because he has a family in Germany. In general, everything is very flexible.
So, I greet the team, dine, have a cup of coffee. Breakfast, lunch, dinner is free here. The food is tasty and varied: there is always fish, meat, some pasta and dessert. And, most importantly - there is a machine for freshly squeezed orange juice.

At 12.00 we have a standup rally. A dubious occupation, in my opinion, but the team is practicing. Everyone gets in a circle and briefly tells you what they did, what didn’t work, and what are their plans for the future. I usually skip. However, it's okay, because my project has not yet been tied to anyone but me.
By the way, about my project - as usual the details are closed by the NDA, but in the most general words. I work in team X, which makes the product Y, which is then used by the Z team. Neither X nor Y are googled, but in general we are talking about tons of data, many computers, thousands of lines of code. I have a pretty interesting project. Now I will add some functionality for Y, and then I will mercilessly optimize it. At the same time I pick up Java. After C ++ it goes like clockwork.
Then I dive into the coding, sometimes communicating with my boss, it lasts up to 8-9 hours.
It looks something like this:

The workplace is very convenient - two monitors, even more than in MS, Linux, Eclipse. Know - work.
By the way, about the work process. At first, I was worried that I would have to write in an unfamiliar language, to master the local infrastructure, but it did not seem to cause any special problems. The problems turned out to be different - the lack of industrial experience affects and as a result, I sometimes incorrectly prioritize. Say, once I spent a whole week studying and applying some internal data structure (written, by the way, by one of the former nuclear scientists). For a long time I could not understand how it works until I realized that I had taught the same thing to my schoolchildren in Kungur. But that's not the point. After I felt the internal structure, I realized that I can strain a little and speed up some process by 5-10 times, and reduce the amount of memory spent by 2 times, due to the use of implementation features. If after reading this sentence you got a gleam in your eyes, then, probably, you were once actively involved in AFM. I spent a few days, implemented it, and it even almost worked. And suddenly, on the weekend, I realized that I was wasting my time absolutely in vain, because:
1) my system is not real-time, and there is no sense in the fact that it works for a minute, and not for a second
2) the implementation turned out to be much more complicated than in the obvious method
3) the main thing - the solution relied on the use of an internal representation, instead of a public interface, which means that if you change the internals, you will have to change my piece of code.
In general, it is not so easy to get used to the fact that speed and optimality are needed only until some functionality is impossible without them. That you can spend a couple of days refactoring the code, which already works great, but we’ll split piece A into two pieces B and C, which are much more convenient to work with separately, and so on. I learn a lot here and it's great.
I really like the team I work with. It seems that almost everyone here is with PhD, and the Ukrainian Bogdan, although he did not have time to get it, is, however, an ASM finalist. Moreover, I walked up the floor somehow, and after reading the posted questionnaires, I found that almost half came from Research, many still had the same PhD. Depends on the team, I think, but still the quality of the composition is quite strong.
Before you submit a code, you need to show it to colleagues. My first piece of code on 700 lines was recently brutally reviewed by my boss, 95% of the comments were related to the style, but I've been remodeling the remaining 5% for a week now. However, another week, and it will be possible to boldly submit, on which the first, smaller, part of my project will end. :)
After work, I go to the first floor to the gym

20 minutes of running, weight training, press 100 times, beating pears, shower. Who said that a programmer is a spectacle with glasses?
After the gym, it’s very cool to lie in the room with aquariums.

And then I go to the Play room and play the piano for an hour. Of course, not a pink piano, as in MS, but it will do.
Sometimes I really want to call home, for this you can use such booths

Midnight arrives, I leave the building and in half an hour walk I reach my apartment, where there is only a sofa from furniture, but, by the way, this is more than enough for me. And everything repeats.