Job Openings in my Group
I am looking for some really smart people who would be interested in working with me at Amazon.com on very interesting, advanced distributed system problems. All of these problems are in the space of extreme scalability to achieve unparalleled reliability and performance.
What kind of things am I looking for in you?
- You know your distributed systems theory: You know about logical time, snapshots, stability, message ordering, but also acid and multi-level transactions. You have heard about the FLP impossibility argument. You know why failure detectors can solve it (but you do not have to remember which one diamond-w was). You have at least once tried to understand Paxos by reading the original paper.
- You have a good sense for distributed systems practice: You can reason about churn and locality in DHTs. You intuitively know when to apply ordered communication and when to use transactions. You can reason about data consistency in a system where hundreds of nodes are geographically distributed. You know why for example autonomy and symmetry are important properties for distributed systems design. You like the elegance of systems based on epidemic techniques.
- You have good common sense about scale and availability: You frown when someone mentions two-phase commit in the same sentence as high-availability. You also realize that protocols that require a system "to be stable for a sufficiently long period of time" are not a good basis for building real systems. You understand the elegance of of state-machine replication, but understand why it is hard to apply at large scale. You have a solid intuition about the impact of design decisions on the ability to achieve data consistency, and you are not scared by the idea of building systems based on 'eventually consistent' data.
- Some of your heroes have actually built real systems: Worshipping Dijkstra and Lamport is OK as long you also know why Jim Gray and Bruce Lindsay deserve a red carpet. You dream about how much smarter you would become if only Pat Helland would go back to writing on his weblog.
- You have actually built some real systems yourself. At work or at school, you must have faced some real hard distributed problems and solved them. You are involved in an open-source project that has solid distributed systems components.
It is not necessary to score 100% in each area, but if a majority of these properties holds for you and you are interested in working on real-life, massively scalable systems you should contact me. You would be part of a group that on daily basis is confronted with complex distributed systems problems. You would be involved with building services based on scalable principles and be part of a team that maintains and runs one of those services.
Update: I did not intend to say that Dijkstra & Lamport have not built real systems, they have. They have built rather important ones actually. What I tried to convey is the following: Some people are able to innovate driven by an intellectual curiosity to find solutions to very hard problems, others innovate driven by the need to solve fundamental problems of how to construct complex systems that do real things for real people. If you want to work in my team you need to have an appreciation for both of these worlds.
Update II: You have to be willing to move to Seattle.
Posted by Werner Vogels at February 2, 2005 01:07 PM
Excellent job posting. I don't want to work for you at this time, but I do want to learn about the things you mentioned for similar reasons - I want to build distributed systems for real-life use. If you were teaching an introductory graduate course on these topics, what textbook would you use?
It's a shame that my knowledge of distributed systems is limited only to being familiar with a few aspects of the field, as I'm currently seeking a job with Amazon.com. Knowing that this is the direction their going in, I'm going to definitely look further into these topics and keep hoping I get a call from Seattle.
d. Taylor Singletary,