Disclaimer: I am working on a Google engineer position for almost 4 years.
According to what I write about Google , may give the impression that the work in Google - the ultimate dream, the perfect place to work, where it is necessary to strive to get at any price. Google really very good company for programmers, even great. But ideals do not exist, and it also has some disadvantages. About them today and will be discussed.
I think all the below written almost fully true for other similar companies. So I'll write "company" instead of Google. I can not vouch, but I suspect (and suspicions are confirmed by a large number of friends), which is about the same thing can be said about Microsoft, and Facebook, and on Amazon, and other decent big companies.
The sphere of influence
The company employs tens of thousands of programmers. What do you think, how many of them can really affect the fate and development of the company in one direction or another? Very, very little. Large companies is vital that the absolute majority of its employees were interchangeably. Imagine what would happen if the company's business is seriously dependent on each employee, and suddenly 10% of them decided to quit? Nothing good, believe me.
Therefore, the goal of any company to minimize the number of key employees. And as a result, even though my work is very interesting and very important for the company, I know that if it had not hired me, in my place would be another programmer who would do more or less the same. < br />
The Pareto Principle says that 20% of the effort for 80% results. And, excuse me Captain Obvious, the remaining 80% to 20% of efforts bring results. Usually this is concluded that it is necessary to focus on those most cherished of 20%. But this is not the case company.
In the company to launch a new class of mega-popular with users of the project, at first it is necessary to make 80% of all routine work that is needed for the last 20%. And, unfortunately, it is inevitable. What kind of work? Rewriting and refactoring suschestvuschego code, writing tests, change any configuration files, experiments with different parameters, the migration of the existing system to the new technology, fixed a bugs ... Then pass security review, usability review, and get a bunch of other permits. In general, the important things that are needed, but fairly routine and, frankly, not very interesting.
Unlike a startup, where nearly everything you do has a large and visible effect, and the routine is sacrificed for the sake of speed, in large companies, most of the project has almost no effect. And only when the soil is ready, you can actually write the last 20%, which is the project itself. Yes, companies hire PhD, experienced and clever programmers to those most of the time engaged in routine.
Incidentally, this approach has a significant plus. In fact, everything is slower, but more thoroughly. This leads to a more stable product code, and a whole.
As a company, you'll get quite decent salary . If you prefer, you can buy the latest iPod, iPhone, iPad and Mac with retinitis, even not very noticeable costs. Or even BMW's latest model - the truth, there will have to dig a little, or get into a loan for a couple of years. In general, you will live comfortably clear. Until that moment, until you decide to buy a house , for example. But even this solves the problem, the truth of a brand new BMW, may have to give up in favor of the house :).
But your salary will be quite clear ceiling, even quite high. You are unlikely to become a multimillionaire, working in the company. Although there is likely to become, a pension, if you worked 40 years to save. But will not get rich quickly accurately.
Work in the company - it's usually pretty uskospetsializirovannaya Wednesday. Most likely you will work with only one or two programming languages, and multiple technologies. If this backend, then the work you will not have to deal with the front end, and vice versa (this will deal with the other team). Of course, having stayed 2-3 years in a team that deals with backend, you can leave in the frontend, but very few who do - many people prefer to do things that are good at, rather than to develop other skills.
This is good (increasing knowledge), but there is no expansion of knowledge. A review is substantially narrowed. Also, you are unlikely to work with the new trendy technologies that appear every year. Eventually, after working 10 years, and try to find a place in any dynamic startup, you can feel like a dinosaur.
In any company no matter how something decent size is what is called "politics". Somewhere it is less somewhere more, but it is everywhere. It is the law of society, against which no arguing - all have their own interests, and sometimes these interests come into conflict.
Inevitably, periodically your interests will conflict with the interests of another person, and the larger the company, the more likely it will happen. Sometimes it will be on your way, sometimes not. And lest you think it was often necessary to master the art of persuasion of people, keeping in touch with the right people, the argument ... And if you have this skill is initially not very developed (and many programmers it is true), some friction and unpleasant days or even weeks, are inevitable.
Here I want to add that in Google with "politics" is pretty good, in the sense it is relatively small, at least at the level of engineers. I do not know about management.
Want to become a director or VP in a large company? Congratulations, you have in front of ten or even more years of hard work and climbing the corporate ladder, with very uncertain prospects for obtaining the desired position. Key positions in the company, compared with the number of people willing to get them, not enough to swear. And there will have to rely not only on themselves and their skills, but also for good luck, which probably plays a role much more than hard work and talents. That, however, does not negate the past.
I've seen people who grew up very fast, being in the right time and in the right place. And those who were at least as smart and talented as the first, but got stuck on the career ladder.
I am now not the smartest
Quite common when a person who was a mega-cool in their own company, comes in a big company and discovers that he is middling. As the requirements for hiring here are quite high, and it is chosen contingent rather serious. For those who are used to being "the smartest in his sandbox," it can be a serious test for self-assessment.
Work in the company is very nice and comfortable. And feed you, and namassazhiruyut, and bus and taken away will bring, and a decent salary to pay ... It would seem - what's wrong? But in this situation there is a drawback.
Comfort relaxes. When a person reaches a comfortable state, then it is very difficult to force yourself to grow, to move on, to put itself ambitious goals. I notice this even on their own - if you leave yourself without attention, the number of "starperstva" I have increased, and the desire to reach for something outside your comfort zone is reduced. And I, by the way, is not the most prone to starperstvu employee :). So you have to keep yourself in good shape. But this is a topic for another article.
This lack of a series of "zakushalis", and in the truest sense of the word :). In companies where the food is tasty and free, it is difficult to restrain yourself and do not try something, and this, and still won the tasty dessert. For this phenomenon we even have a name - "Google 7". Which reflects the harsh reality that the new employee in the first year, on average gaining 7 kilos.
However, it does fly in the ointment. Do not forget that we still have a barrel of honey. But about it will be discussed at another time.