Amazon, among a bunch of companies, of course, has some internal problems with leveling guidelines. For the longest time there was a requirement that you had to make a new service to go from an SDE-2 to an SDE-3.

Any time you have something which is incentivized you wind up promoting that exact behavior.

The problem we had was there were people who started to stand up services so they can check off the requirement to get a promotion. Internally, this became known as “promotion-oriented design.” This is its own problem.

I’ve seen plenty of systems where instead of a single service you wind up with a fleet of three or four interdependent services that aren’t any better. In fact they wind up being worse. They are worse from a performance aspect, a maintainability aspect, as well and an understandability and extensibility aspect.

By incentivizing the wrong behavior, you wind up overcomplexifying the problem.

Thankfully, this has been realized… we’ve changed the leveling guidelines to account for this defective aspect of our systems.

This isn’t really an Amazon-specific thing though. With any sufficiently large company you wind up with problems like this. The key, as we did with where I work, is to recognize these defects to work around them.