I got a message on LinkedIn:
Hope things are going well with you these days. You have a very interesting background stemming from your degree at Rice University. I just wanted to see where you are at with your current engagement at Klink and if you have any interest in any of the opportunities I represent here at Amazon in Seattle, WA. If you do maybe give me a brief idea of what your ideal position looks like and I can let you know what roles we have that would be in line with that. If you are currently happy and not interested in hearing more no worries just wanted to touch base anyways.
I responded with interest, and sent my email.
After some back and forth, he sent me a job description that he had picked out for me.
Amazon Identity Services is looking for software engineers who like to solve complex problems, and relish the challenges of building and operating complex, distributed, mission critical systems under extreme loads. Our systems manage hundreds of millions of records, and serve millions of service requests. Do you think you are up to the challenge?
Identity Services provide the core services that identify, authenticate and authorize our customers, and provide the information to hundreds of services within the Amazon service oriented architecture. We manage the customer authentication and authorization experience, and are embarking on new and exciting initiatives in this space, both on the web and on mobile devices. If you are excited about solving new business problems using state-of-the-art technologies, and open standards such as OpenId and Oauth, or developing applications and frameworks for mobile platforms, we’d love to talk to you.
Duties will include design, implementation, documentation, support and operations of various facets of Identity Services. We are looking for self-starters who are interested in leading new initiatives. Successful candidates must also be innovative, creative, flexible, self-directed, and able to design and write high-performance, robust and maintainable code. They must have excellent verbal and written communication skills. The ability function at a very high level in a fast paced environment along with a team of very talented engineers is essential.
If you enjoy working in a dynamic environment to deliver world class mission critical systems, this may be the career opportunity for you.
It goes on to say things like they want somebody with a CS degree, and programming experience, and close with “Ability to handle multiple completing priorities in a fast-paced environment.
I can do that. Then came the phone screen. It was a live programming session in a shared document system.
The person on the other end game me the basic problem: You have a list of star coordinates, and you need to find and print out the closest 50 stars to Earth. I asked if I could have a PriorityQueue API, and then was able to complete the exercise with time left over. That was fun.
So, a few days later, I got an email that said, “The hiring team has really enjoyed speaking with you and we sould like to schedule a time for you to come to Amazon for in-person interviews!…” (Yes, they did not put a comma in that sentence.) It went on to describe roles which were really senior, and which I did not actually feel qualified for. The recruiter assured me that not many people outside of Amazon’s core engineering team was qualified when they started, so please come in.
So I flew to Seattle.
It was February, and it had actually snowed the night before. Doesn’t normally snow much there, so there were many traffic problems. The interview was in a tall building downtown. The building had a really great view of the Space Needle, so it had that going for it. I went to the lobby on whatever floor it was. There was a holding area just for interviewees. You had to show ID, and then they printed a visitor’s badge. The entrance to the interview rooms was strictly behind a badge lock.
They took me in. They told me that if I needed to use the bathroom, somebody would have to walk me there and back. Lovely. Felt like a prison.
I had three whiteboard programming problems, and one architecture problem. I would be surprised if my answers to the architecture problem were worth anything; I felt lost.
I don’t remember one of the other problems. However, one of them was a computational geometry problem. I spent 20-25 minutes trying to figure out the definition of a “ray”. It did not help that English was not the interviewer’s first language, and he had a really hard-to-understand accent. That was frustrating.
The other one was this: Given an arbitrary object, write something which would output the object in JSON format. This is not hard, but it is very, very long. I wrote and wrote and wrote and filled three white boards and really did not see the point at all.
That day did not go well.
I had several onsite interviews all bunched together. Resolution of this interview will be in a future post.