No, I don’t want a platform
I was doing a roadmap review with one of my teams today. I asked a team lead, “what is your next delivery?” He gave me a long answer: “I am working on xxx, which will use AWS Lambda, copy the image to S3, then trigger a message in SQS …” I was like “Whoa, wait a minute! What is the thing you are gonna deliver exactly?” He said, “I am delivering a platform!” “What will this platform deliver as the first result that is meaningful to stakeholders?” “Oh, we haven’t decided yet.” … As engineers we all love to work on pure stuff: nothing is more pure than working on reusable platform or framework. But there are huge risks of setting a platform as the goal. 1. First, it is hard to measure the success of a platform. It is so much easier to measure a feature launch or an operation improvement’s success. 2. Second, using platform as the goal tends to encourage over engineering and premature optimization. So let’s not develop platform? That is not what I mean. AWS itself is a Cloud Computing platform. KMS in many ways is a platform that offers cryptography primitives to customers. But usually a platform is grown organically out of engineering necessities: when we keep doing similar things, we abstract the reusable parts into a platform or framework. It takes at least three such “things” to justify a platform. “Don’t repeat yourself!” is the driving force for most of the engineering innovations. So I told the team lead: “how about you deliver feature x as the first result? You can design a platform if that makes sense, so that when we need to deliver feature x+1, x+2 … they will become easier and easier. But the platform is your implementation details. To stakeholders, it is the features that are delivered on time, and hopefully ahead of the time soon, thanks to the power of your platform, that matter!” A platform is used to deliver the same type of things simpler and faster. It is a mean to an end. But for most engineering teams, platform itself shouldn’t be the end goal of a delivery. It is much better to grow platform iteratively, as a lovely side product of delivering customer values or solving real problems. So if you are working on a platform or framework, be extra careful.
Last updated
Was this helpful?