Experiments
My phone rang.
“Hello, this is Jared.
- Hello. I'm calling you about a phone interview at the Giant Search and Advertising Company [obviously, this is Google - approx. lane].
- Yes! I was looking forward to your call!
- Okay. Can you write an algorithm to find the K-th largest value in a binary tree?
I shut up. Disconnect completely. Never got into such a situation. A blank Google document stares at me, and the cursor blinks in slow motion. I am sketching in something as the first pass.
- Can you write a test case for this algorithm?
Sure. I could if I hadn't been completely drugged and my inner ego was not melting under the burning fury of a dream dying before my eyes. Is this what all my hard work over the past few months has boiled down to? Around January 2019, I decided it was time to find a new job. As if the gods of software engineering had blessed that very thought, and a recruiter from the Giant Search and Advertising Company contacted me on LinkedIn for a phone interview. This was spectacular!
This is not the first time this has happened. As a brilliant young engineer who had just graduated from high school, I recently started my first job and was doing pretty well at it. But then my world turned upside down. I worked on a particularly nasty bug and did what any self-respecting software engineer would do before trying to solve it on my own: google it. As soon as I hit Enter with my corresponding blunt query in the search box, the screen went black and I was thrown into the console.
You speak our language ... Want to solve a problem?
1. Yes
2. No, thanks
I almost choked on the lukewarm Costco coffee. I wanted to jump up and scream for my colleagues to come and watch. But then I suddenly got worried that I had glitches, in which case I would find myself in a very delicate situation. Fearing that my spirit was about to fly out of my body, I pressed 1.
You are given an array nums containing n + 1 integers, where each integer is between 1 and n (inclusive). Prove that at least one number is repeated. Let's assume there is only one duplicate. Find it.
You have 24 hours!
I had a minor heart attack. When I was able to revive myself with another shot of Costco coffee, I realized that I could quite solve the problem. I already had a plan. So I did. As soon as I pressed the "Submit" button, they gave me another solution. This was repeated five times, and each time it got harder. When I posted the last reply, I saw another message:
Congratulations! This code is very good! Looking to interview the Giant Search and Advertising Company?
That's all. My whole professional world has changed. One of the most powerful organizations in the world has infiltrated my 22-year-old brain and rewrote the register. None of the previous career goals mattered anymore. Before that, I was blissfully unaware that such a top company could hire me. But it’s obvious that somehow I ended up being worthy of attention.
The phone interview was like a nightmare. I was asked to program Conway's Life game in 45 minutes. Actually, I did pretty well. I wrote the whole program and tested it. The next day I was refused. Inwardly, I was depressed and confused. What exactly did I do wrong? Didn't all the tests mean anything? Why did I have to write such a complex algorithm in such a short time?
After my first problem solving experience at this level, I decided that I should improve my skills. The interview took place in April this year. I drew up a three-month curriculum and got down to business. Every morning I did three practical tasks before going to work. In the evening, after jogging and having a snack, I still worked. In three months, I solved 114 practical problems in total. Arrays, Backtracking, Binary Search, Binary Trees, Breadth First Search, Depth First Search, Dynamic Programming, Graphs, Greedy Algorithms, Hashing, Linked Lists, Probabilities, Sorting, Stacks, and Prefix Trees are some of the topics I studied. ... How could I fail with such a preparation?
Failures
An interview with Giant Search and Advertising Company ended in flames. I couldn't solve the problem. But that was only the beginning of the madness. At first, I very strategically approached which companies to contact. I needed not just “good”, but “correct” work.
The next was a self-driving car company. I got a response almost immediately after submitting the application and set up a code editor. The interviewer, annoyed and with a very strong accent, asked me to code a very complex image filtering algorithm. I wrote it. "Looks very good!" - he said. The next day I received a formulaic rejection letter.
Then there was a research company that asked for a three-sentence homework assignment. I did the best I could and wrote a very complex multi-threaded image processing system. I got a polite "No" from the recruiter, and when asked to explain, I was told that my implementation was "too ineffective."
After that, there was a payment processing company. I had a great phone conversation with the recruiter and she admired how well my resume matched the job description. The next day I received an email from her that they could not find a job for my skill set.
Another example was with the Giant Social Media Platform Company: “Jared! Thank you for your application! We think you will be perfect for working in our company! I have sent your application directly to the hiring manager at your regional office! " Eight minutes later, I received a stereotyped rejection letter stating that my skills were not suitable for the position.
Countless outside recruiters have contacted me. All conversations ended in nothing. Perhaps the one I liked the most was a sound processing company. The recruiter contacted me and said that after reviewing my resume, the team is very excited and eager to talk to me, so she will contact the HR manager. A week passed, I asked her how she was doing. The recruiter said she contacted the HR manager - and he doesn't think my skills are right for the job. I accepted it ... however, as a test I sent my resume to another job - and I was immediately contacted by another recruiter. I was amazed that they called immediately. I have to admit, this time I didn’t do well. The next day, I received a formulaic refusal by mail.
Finally, I got to the interview stage at the office of the Giant Social Media Company. I answered a series of coding questions with several people over four different interviews - all of them correctly and satisfactorily. On the way, I was asked a number of confusing and tough questions like "Tell us about that time when ...". It was refreshing since for the first time while looking for a job I was asked about my experience and insight as an engineer in general. This was followed by a final system design interview. The interviewer quickly gave me a small system to develop. I started talking about my decision, and along the way I was asked questions. Finally, we got to the point where he said, "Okay, let's say we have a microservice architecture ... can you design it ...?" I immediately saidthat I have no experience with microservices. He looked at me questioningly and asked: "No experience?" I confirmed. I've tried to be clear about my skill set and experience in the PC, embedded and mobile development areas. He fell silent like a man who understands that he has made a mistake. Excellent! I spent four months preparing for this interview, spent almost all of my non-working time preparing, solving practical problems, and rehearsing how to present my experience in communication skills, and he did not bother to spend 10 minutes reading my resume.I spent four months preparing for this interview, spent almost all of my non-working time preparing, solving practical problems, and rehearsing how to present my experience in communication skills, and he did not bother to spend 10 minutes reading my resume.I spent four months preparing for this interview, spent almost all of my non-working time preparing, solving practical problems, and rehearsing how to present my experience in communication skills, and he did not bother to spend 10 minutes reading my resume.
I could continue to mourn the many disappointments I experienced in this difficult job search. There was a lot. I have always strived to be completely honest with myself and others about my abilities. I was not applying for a job that required years of experience that I did not have, or missing skills. Of course, I wanted to return to the web from embedded programming, but I had two years of experience as a web engineer in addition to my other experience as a mobile app developer and machine learning algorithm researcher. I fully acknowledge that I have countless opportunities for growth and self-improvement. But on the other hand, I am quite confident that I have the skills that will allow me to start a new job very quickly. In my opinion,programming is a distilled art form defined by learning and new experiences. No software engineer is going to stop developing for the rest of their career. At least I hope not: those who do so will very quickly be left by the wayside. So what is really going on here? After going through this grim process for so long, I decided to decompose and analyze my observations and then ponder them to get a clearer picture.I decided to decompose and analyze my observations and then ponder them to get a clearer picture.I decided to decompose and analyze my observations and then ponder them to get a clearer picture.
- . , , -, . - — , . , , -. , , . , . . — .
- :
- — , .
- — , .
- — . , : , .
- — , . , . . . . - , -, .
, , - . , , - . - :
- , — , , .
- ? . , , , , . , . , ? . , .
- ? , , . , . « ». . , , . — , , . , , , , , . , , ?
- . , . , . LinkedIn . , . , . , , , , «» .
- , . . , . , . . . — () , . . : « . ? : «, ». « ? ?» : « . ». . , — ?
- , . , . , . , A. . ! ! . , . . ! ! - , , . : , , A : , - .
- . 45 . . , . «», 50 , , . , 15 , . . , , . . 45 ?
- . , Google. , . : « » « ». . , . , , , . , , « , , ». , , , . , «» , , , «» . , . - , . , . , . , , , , . ! ?
- ? . , , , , . , . , ? . , .
- , ? , . , , « ». ?! , ? , , . ? , ? . , , . , . , , , , . , .
I'm pretty sure I could have continued in the same spirit. I have about eight more points in my notes. But for now, the article looks more like a diatribe than a blog post. I hope that I was able to share some of the difficulties that I went through over the past seven months. In the end, I have ambivalent feelings. My current employer just fired my entire office, leaving me unemployed and alone to write about how I hate all this. Not really sure if I want to go through this process again. I thought a lot about my experience and came to some simple conclusions:
- , — 85 000 Java- , , . Python, . embedded C C++ , . Flutter . Clojure, . C#. , -. .
- I don't understand why I am not allowed to write software - there is a fundamental inconsistency between the public claims that companies are desperately looking for software engineers and the brutal reality of screening out candidates. These coding challenges under intense do-or-die pressure seem to be more of a hazing mechanism than a valuable assessment tool. Using them is like shooting police candidates before asking what they know about the law.
- I don’t know what it looks like from the other side - the fact is that the criticized process may be the only way companies can sort out good and bad candidates. I've never been on a hiring team, and I'm sure I don't know a lot.
In conclusion, I have a few thoughts:
- — , . , , . . , , ( ) , . , . , . , . , . , , , — , .
- — -. , : -. , . , . ? , ? , ? . , . , Agile. , . , . Java Python, Python, ? , , , . , - , .
- — . , . . , -, . , , , :
.
. :
- « : »
- « »
- « »