High Scalability offers some secrets to Amazon’s success based on interviews and writings of early employees. Some of the choice bits are below.
Teams are small. They are assigned authority and empowered to solve a problem as a service in anyway they see fit.
Work from the customer backward. Focus on value you want to deliver for the customer.
Force developers to focus on value delivered to the customer instead of building technology first and then figuring how to use it.
Start with a press release of what features the user will see and work backwards to check that you are building something valuable.
End up with a design that is as minimal as possible. Simplicity is the key if you really want to build large distributed systems.
Take it for granted stuff fails, that’s reality, embrace it. For example, go more with a fast reboot and fast recover approach. With a decent spread of data and services you might get close to 100%. Create self-healing, self-organizing lights out operations.
Open up your system with APIs and you’ll create an ecosystem around your application.
Only way to manage as large distributed system is to keep things as simple as possible. Keep things simple by making sure there are no hidden requirements and hidden dependencies in the design. Cut technology to the minimum you need to solve the problem you have. It doesn’t help the company to create artificial and unneeded layers of complexity.
There’s bound to be problems with anything that produces hype before real implementation.
Use measurement and objective debate to separate the good from the bad. I’ve been to several presentations by ex-Amazoners and this is the aspect of Amazon that strikes me as uniquely different and interesting from other companies. Their deep seated ethic is to expose real customers to a choice and see which one works best and to make decisions based on those tests.
Getting rid of the influence of the HiPPO’s, the highest paid people in the room. This is done with techniques like A/B testing and Web Analytics. If you have a question about what you should do code it up, let people use it, and see which alternative gives you the results you want.
Create a frugal culture. Amazon used doors for desks, for example.
People’s side projects, the one’s they follow because they are interested, are often ones where you get the most value and innovation. Never underestimate the power of wandering where you are most interested.
Have a way to rollback if an update doesn’t work. Write the tools if necessary.
Look for three things in interviews: enthusiasm, creativity, competence. The single biggest predictor of success at Amazon.com was enthusiasm.
Hire a Bob. Someone who knows their stuff, has incredible debugging skills and system knowledge, and most importantly, has the stones to tackle the worst high pressure problems imaginable by just leaping in.
Innovation can only come from the bottom. Those closest to the problem are in the best position to solve it. any organization that depends on innovation must embrace chaos. Loyalty and obedience are not your tools.
Everyone must be able to experiment, learn, and iterate. Position, obedience, and tradition should hold no power. For innovation to flourish, measurement must rule.
Embrace innovation. In front of the whole company, Jeff Bezos would give an old Nike shoe as a “Just do it” award to those who innovated.
[via JL (NSFW?)]