My story with Google

Source: Internet
Author: User

Someone may have seen the English article I criticized Google. It seems to be partly one-sided, So I won it from my english blog. I have been reflecting on my experience in Google, because I always feel wrong when I work in this company, but I still cannot tell why. Maybe I can come to an accurate conclusion using my own mother tongue.

Suffering from distress

Let's talk about how my project started. When I joined, my boss Steve Yegge's team tried to create a cross-language "service-oriented" programming tool called Grok. You can think of it as Eclipse and Visual Studio, but Grok's design goal is not just to retrieve and analyze the code of a certain language on the machine, it is a large-scale search and analysis of all Google projects, all languages, and all code. This includes Google's "four major languages": C ++, Java, JavaScript, Python, some instrumental languages: Sawzall, protobuf, and some "build
File and all third-party libraries. The initial design goal of Grok is a static code Index Service. As long as the programmer clicks on any variable or function name, it can jump "accurately" to the position defined by it. The dynamic editing function will be added later.

This search is not a simple regular expression match like ctags and etags, but an accurate "semantic search" like Eclipse and Visual Studio, so it must truly understand the semantics of the program language. Before the birth of Grok, neither the market nor Google had a proper tool to support all the "four major languages", so I have to say, steve's project is more advanced than Google's projects related to other programming languages.

Although Grok has a high technical level, Google's management does not evaluate things based on technical level, but on how much "influence" you have ), that is, the number of users. Google had less than 10 thousand programmers at the time. How many "users" Can a "internal programming tool" have? Therefore, Grok does not take any advantage in the management's mind compared to the "low-end" projects that use regular expressions like CodeSearch to query programs. In addition, the interface of other projects looks better and there are more users, so Grok may be canceled at any time, which puts Steve under great psychological pressure. I entered their group at this "critical moment. Of course I am not stupid enough to enter such a group myself,
Steve put everything in a pretty good way during the phone interview. At that time, there were only three members in the group: Steve and the other two members.

Fear and doubt

At the beginning, the Grok team had initially completed the Java and JavaScript retrieval modules. However, their searches are not designed by themselves, but are "Extracted" from the Java and JavaScript semantic searches in Eclipse (JDT) and JSCompiler (known as closure compiler after open source, after modification, it is inserted into the project. The Eclipse design is very unmodularized, so that the project has been in progress for more than a year, and everyone is still busy solving the various bugs it brings.

At the beginning, Steve gave me two options: Search for C ++ or Python. I think the design of C ++ is too cumbersome, so I chose Python that looks better. Steve asked me to find an open-source Python IDE, And then dug out the semantic search section and inserted it into the project. However, after reading about ten "Python IDE", I found that none of them can correctly "Jump to definition ". The reason is that these ides basically perform regular expression matching and do not understand the semantics of Python. So I told Steve that I should write one from the beginning. But he opposed the proposal because he thought it was impossible to complete it within three months. No, but I can't, and even a group can't. Even if it is done, he does not want to "maintain" the code. So he would rather let me get an open-source project, because the "maintenance" work will be passed on to the open-source project.

However, I can clearly see that such a semantic search is just an abstract interpreter (abstract interpreter ). I am very good at interpreter writing, so I told him that this is what I can do, and because of the simplicity of the design, my code maintenance costs much less than using an open-source project. He did not speak. At the same time, I am also conducting some internal training, watching some videos, and tossing MapReduce internal tool tutorials. It just took a week. I vaguely felt Steve's unhappiness, because he didn't talk very much, but he didn't care too much about it. He was still dumbly busy. By Friday, Steve went home very early in the afternoon. Where are the other team members. I said to her, "Steve
Are you unhappy? I know that I have a little confidence in my speech and it may hurt him ." She seems to have been filled with a balloon with a hole: "How can he be hit by you? Do you know how powerful he is in his previous projects? He was afraid that you could not do it. Some of the previous intern settings had too high a goal so that they had not completed their project at the end. Do you know how long it took for us to complete a similar project JSCompiler? A group of people, four years !" So she opened Eclipse and showed me a piece of code: "This file has more than 9000 lines of code. Can you write so much code in three months ?" I turned my eyes over and said, "Ah ~ How can there be over 9000 rows? Do these people really know how to write such code ......"

Later I forgot the specific conversation, but she was so defeated that it gave me some pressure. In addition, Steve's sullen voice is really bad. So I didn't go out to play that weekend. I downloaded a Jython file and took out its parser file (anlr. I designed a simpler AST data structure and converted the AST generated by this parser into my structure. Then, write an abstract interpreter on it. Due to Java restrictions, I came up with a more concise method to implement the interpreter using Java, thus avoiding the tedious use of visitor pattern. After a weekend, I made a basic prototype. Of course, because
The complexity of the Python language comes with many details that will be fully implemented later.

By Monday, I told Steve that I had made a prototype and that, because I took the Jython parser, we can use this reason to return the code merge to Jython, provide them with functions to help us maintain the code, which is good for both parties. He was not happy at all. He called me in front of a whiteboard and said with a straight face: "Do you know why I'm worried? I am afraid that four months after you leave, I am still telling others that I am still correcting the bug in my intern code! Come and tell me how you plan to do it ." I drew an AST class relationship diagram, inserted a method called interp in each class, and pointed out that this is an interpreter. In the end, he suddenly said, "Okay. I believe you know what you are doing. Just do it ."

Momo

Throughout the summer of Google, I felt that I had no common language with others. They don't know anything about what I'm interested in, so I don't want to talk about it either. I don't think so. The general feeling is excessive "Harmony", like returning to elementary school. Everyone is like a "flower of the motherland", and everyone is full of praise for Google. Sometimes you don't want to laugh, but you don't want to say good words. The "social pressure" around you makes you have to smile on your face, so you are very tired. No one tells the truth, so that you do not know what is good or bad.

People always like to talk about the prominent "status" of some people and the legend of their "Ox ". For example, a few people once talked about a Google "cool man" and said he was doing a great project, it soon rose to the Staff Software Engineer ("Staff" is a higher level than "Senior", Steve is a Staff ). I checked this project and found that it was just the C ++ version of JUnit ". JUnit is a relatively low technical level. It would be easy for me to become a "Principal" when we do something like Staff? Haha. I thought this way, but I didn't say it. One
That's it with Staff. When talking about the two founders of Google, some people are black and white. All their arbitrary or even irrational practices have been talked about. The founders are like the Emperors in their eyes. They do everything right. Some people are even proud of their own offices at the bottom of the founder's office. I am afraid this is rare in other companies. Google asked employees to maintain a "Googley" attitude. It turned out to be a "positive" and "positive" attitude ". The "individualism" and "critical thinking" advocated by the United States seem to be highly lacking in Google.

In other cases, I will meet people who have religious sentiments for a language or technology. Once at lunch, an engineer took the initiative to sit in front of me. Like interviewing me, he started to introduce himself as he was, and then we talked about C ++. In my opinion, the C ++ design is too cumbersome. In fact, many simple languages are not less efficient than C ++. Recently, C ++ has been introducing other advanced linguistics ...... Later, this person will not speak. After that day, I found that he had ignored greeting him. Later, I discovered that Google cannot point out the shortcomings of a language, especially C ++. C ++'s "power" in Google is so powerful that even Java can only be regarded as a second-stream product.

The most funny thing is that Google always likes to be confused and makes some trivial things very mysterious. Many documents, videos, and activities are tagged with Google Confidential. When you see it, you will find that it is actually a well-known thing and there is no secret. However, most interns feel so flattered that they have a sense of superiority. Every Friday, there will be a "TGIF". The two founders will organize a conference like the host. It was beyond review, but I always felt that the atmosphere was too passionate. It was a bit like the feeling of raising the national flag to open the Conference in elementary school. It's hard for everyone to get together. They are always listening to news, or they are talking about the progress of their work, or they are praising some people. In short, you always feel like you are being picked up, and there is a sense of a MLM Company conference. You can easily play together the real
Party, but very rare.

Because Google "free" provides three meals a day, entertainment, and fitness facilities, you always feel like you owe your company anything. In fact, the money comes from your own work. And because these facilities are too close to work, you always feel that Google is everywhere in your life and you are thinking about it when you are playing. Steve often asked several people to go out to Starbucks to buy coffee. I still thought it was strange at the beginning because Google had a good coffee maker. Later I realized that they just wanted to change their environment and popularity. Some people in other companies (such as the host of my house) are wondering whether Google employees have been out of work.

That's how I spent every day on Google, so that I didn't eat much at the dinner table. You can bring your meals to the bar on the wall, or sit on the ice cream bar and chat with the chefs, saving you the trouble of having to speak openly. I found that I had a chat with my big mom and sister, who also liked to talk to me. Later, I found that not only me, but the other two very powerful doctoral students were too lazy to eat there. One of them said that he had finished his project in a week, and then pretended to be still doing it, so as not to be added to the task. This is the so-called "more experts. People who have mastered the core technology often have dozens or hundreds of times the efficiency of programmers, but the "return" is more task volume and pressure.

The Emperor's Weaver

Although Steve "allowed" me to create a Python analyzer from scratch, it is not without pressure. This is like a weaver in "Emperor's New Clothes. I threatened to make exquisite fabrics, But the Emperor's ministers could not see them, so they were very careful. I always look in awe of me. Sometimes I may greet you about what I did. However, once a deep topic is involved, they are afraid that they will not understand many things. Because my professors are studying Scheme, Steve is sometimes excited to praise Scheme, or a language similar to Scheme, such as Clojure. This kind of adsorption really makes me unable to stand it. The terms of birth are all out of order, so I often go back and forth, and he will be speechless. Why does programming language always give rise to this kind of religious attitude, either resistance or worship?

Once a Staff Software Engineer came to visit. The Python analyzer I am working on is very contemptuous and says, "What are you doing. Python does not have a type. How can we derive a type? I want Java to do a better job of Type derivation without writing many types ." Obviously, he doesn't know what type derivation is, and he doesn't know how to make Java type derivation better. Many people pin their fate on the designers of the language, and they are incapable of improving them, so they will worship the language.

Pressure

It wasn't until one day that I found out why Steve was so nervous. On that day, another "Rudder" ctor gave us a speech on "innovation. The basic content is that technical innovation is not innovative if it fails to attract users. It is called innovation only when users are obtained. It's totally nonsense, but his momentum is like announcing the holy promise.

This director ctor came to our office that afternoon. A serious facial expression "interrogated" Steve: "You said you have 5000 users every day. However, Google has less than 10000 programmers in total. How did you calculate it? You have included all the downstream projects that accept your service !" Alas, I can't think of the famous Steve Yegge. in front of such a poor minister, I can only find my only promise.

I can say that although this Python stuff is not very effort-consuming, few people in Google can do it. This actually saves this project to a large extent, because once Grok supports all the "Google languages", many people will notice this, thus there will be "influence ". This was indeed what happened later. After I left, Grok began to provide services to many projects through APIS, including CodeSearch.

The salary Google gave me was not enough to afford such software. You can refer to the price of "static analysis" software such as CodeSonar, which is basically my three-month salary. Because I want to find something to offer at school, I made them cheap. However, this "superior leadership" pressure has been indirectly transferred to me, and it is in a very disrespectful way. This feeling is that you have done more well, and you have nothing to do with Google's "danale. This may be why Google hired Dennis Ritchie, Brian Kernighan, Ken Thompson, Rob Pike,
Peter Norvig and Guido van rosum. Because it can be said: "Let's see that Google has these top talents. What are you, please keep working hard !" Steve said to me more than once: "You have to make outstanding contributions to Google! Google is always the best thing, and you need to make Google's consistent quality. Do you know that Guido, the creator of Python, is also an employee of Google? I will give you a few comments in front of him ." In this tone, I seem to have heard of China decades ago? "You must make outstanding contributions to the motherland !" He may think that I will be flattered, but it is not in my heart.

Sometimes he will suddenly turn his face over and make a "Knowledgeable" look and say, "You have to solve this problem. Otherwise, your intern project is a failed project !" If other team members look relaxed, they will also mention from time to time: "is this done? If this is done, you can do it. We have something to do for you ......" I am actually thinking, it's easy to say. You can do it yourself and see if you can't do it within a year. In short, they are trying to make me do more things in a way that is flattering, attractive, competitive, and threatening.

It was good to have done this system, but a team member has been urging me to write test. She does not understand that a program is a good program instead of writing a test. This program has been modified and even overturned for many times. Even if I write a test early in the morning, those tests will soon be voided. The "test-driven" Programming Method instilled by large companies is simply not feasible in this creative programming. To write such a system, you must concentrate on the essence of language. Writing a test often breaks the original idea, so the test should be written only after the test is completed. When I finally completed the system and could process Python code on a large scale, I heard a dull roar from her desk: "Write-the-Tests ---" is really
Googley!

Result

Finally, I successfully completed the entire project. from the beginning to the end, I designed and implemented it by myself (except for parser in Jython ). Now it indexes all the Python code of Google every day. Many internal tools such as links to Python files in codesearch are made of this. All my codes add up to 4000 lines. I cannot figure out why they have 9000 lines of files.

Summary

These are my impressions of Google. Several times I have seen good engineers disappear after entering Google. They "quietly contribute" to Google and no longer have their own inventions and creations. I feel that Google is a machine that has no talent, and its reputation of "creativity" has caused more and more talents to be buried. The talents who take the initiative to find the door are buried, swallowed up by other companies, and implemented the same "Google culture" for them, with no more talents buried.

Google always claims to be its engineer "build things ground up", but in fact it always uses some ready-made code to repair and supplement, which often takes more time. When you really want to start from scratch, you find a lot of obstacles and pressure.

The obvious difference between Google and other companies is that Google is not rare in you, and you are not respected. You live in the shadows where you cannot tell where he is. I have no experience in many other companies, but I have interviewed other companies. Maybe they are less technically or well-known than Google, but I can feel their desire and respect for talent. So if you have strong capabilities, why bother Google? Wherever you go, the place will be improved as you go.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.