Working for Google. A Rotten Apple


Disclaimer: I’ve been working at Google as an engineer for almost 4 years.

Google is really a great company for programmers, but it is not perfect anyway. There are also some drawbacks and we are going to talk about them today.

I guess everything mentioned here can also be applied to similar companies. Therefore, I am going to use “Company” instead of Google. I do not guarantee, but do think that it’s the same for Microsoft, Facebook, Amazon and other big companies.

Sphere of Influence

Several tens of thousands of programmers work for the Company. But how many of them can influence the Company development in this or other direction? Some really small number, actually. It is vital for a big Company to have interchangeable employees. Just imagine that the Company business depends on each employee. Suddenly, 10% of them decided to quit the job. Nothing good will come out of it.

Therefore, any Company wants to minimize the number of key workers. So, I know that in spite of the fact that my work is important for the Company, I am just another programmer and anyone could do more or less the same in my place.


Pareto principle says that 20% of efforts bring 80% of success. The remaining 80% of efforts bring 20% of success. It is a common practice to focus on those precious 20%, but it’s not the case with the Company.

In order to start some popular project, we will have to do 80% of the routine necessary for the remaining 20%. Unfortunately, there are no two ways about it. What kind of routine is it? Rewriting and refactoring the current code, writing tags, changing various configuration files, running experiments with different parameters, starting migration of the current system to the new technology, fixing bugs, and so on and so forth… Then go through security review, usability review and get plenty of other permits. All of these things are important, but, to be honest, not really interesting.

In contrast to start-up, when all your actions produce a great and visible effect and routine is sacrifices in favor of speed, most of the work on projects has almost no effect in big Companies. And only when the ground is ready, we can write the last 20%, meaning the project itself. Companies do hire PhDs, experienced and clever programmers to deal with routine most of the time.

By the way, this approach has quite an essential advantage. Everything is done slowly, but in the end the code and the product as a whole will be more stable.


Working for the Company, you will get quite a decent salary. You will afford the latest iPod, iPhone, iPad and Mac and will not even notice the costs. Or you could even buy the latest BMW. Well, to afford this kind of purchase, you will either have to put by some money, or take a loan. Your life will be good anyway. But if you decide to buy a house, for example, you might give up buying a new BMW in its favor.

Your salary will have a limit anyway, though quite a high one. While working for the Company, you will hardly become a millionaire. Or you will, actually, before retiring, after 40 years of saving money. Anyway, you will not become rich quickly.


Your work at the Company is usually quite a highly tailored field. You are most likely to work with one or two programming languages and few technologies. If it’s a backend, you will not have to face the frontend and vice versa (another team will deal with it). Of course, after having worked for 2 or 3 years in a team dealing with the backend, you will be able to move on to the frontend, but few people do this. Most of them prefer doing the best they can and not develop other skills.

Extending your knowledge is a good thing, but it’s not going to happen. Instead, your range of interests will narrow essentially. You will hardly work with new popular technologies being released every year. As a result, after 10 years, when trying to find a new place in some dynamic start-up, you’ll feel like a dinosaur.


Any big company has a policy. It is more extended in some Companies, and less in others. But it is everywhere anyway. It’s the society rule and you will not be able to go against it. All people have their own interests that sometimes conflict.

You will face conflicts anyway. The bigger the company, more often they will take place. Sometimes your word will be the last and sometimes not. To have the final word in more situations, you will have to master the art of persuasion, have connections with right people, argumentations, and so on and so forth. And if such skills are not initially developed (that’s the case with most of programmers), you will definitely spend unpleasant days or even weeks.

As for Google, the situation with the policy is quite good, meaning that there’s not much of it, at least for engineers. I’m not sure it’s the same for managers.


Want to become a manager or a VP of a big company? Congratulations! You will spend ten, or even more years working hard and clambering the job ladder. And you will not even have the certain prospects of getting the desired position. There are actually few key positions at the Company. You will not only have to work hard, but also hope for luck that is most likely to be the dominant factor. It does not cancel the hard working part, though.

I’ve met people who grew really quickly just because they were there at the right time and place. I’ve also met those being as talented as the first ones, but they never got the desired position.

I am not the Sharpest Crayon in the Box Anymore

It is a common practice to feel quite ordinary at a big Company. Since requirements are quite high, the contingent is really skilled. If you are used to being the first one in your field, this might become a serious ordeal for your self-appraisal.


It’s really nice and comfortable to work at the Company. You will get fed, rubbed, driven to work and get paid a decent salary. But what’s wrong with it, — one might think. But this state of things has a drawback.

Comfort weakens you in a way that when feeling so nice and homey, it’s really hard to make yourself grow, move on and set ambitious goals. I could say the same about myself. After reaching the comfort zone, it’s really hard to leave it. Therefore, I always have to take a hold on myself. But it’s the subject for another article.

Google 15

It’s the drawback of “eating too much” type. When a Company feeds you, it’s really hard to take hold on yourself and not eat one or other dessert after the main course. There’s also a name for this phenomenon – “Google 15”. It says that a new employee gains 15 pounds on average during the first year.

But it’s just one pig among all the sheep. You should not forget about all the advantages, which we are going to discuss in the following article.



    Ropes — Fast Strings

    Most of us work with strings one way or another. There’s no way to avoid them — when writing code, you’re doomed to concatinate strings every day, split them into parts and access certain characters by index. We are used to the fact that strings are fixed-length arrays of characters, which leads to certain limitations when working with them. For instance, we cannot quickly concatenate two strings. To do this, we will at first need to allocate the required amount of memory, and then copy there the data from the concatenated strings.