I am a firm believer in building an ugly system quickly and then iterating on it. APIs do not need to be perfect on their first release. Getting something shipped and then being able to ask for feedback is infinitely more valuable than trying to imagine what customers could possibly want. There will always be refactoring that needs to be done, small improvements, changes to taste, and refactoring. The Linux kernel is still under active development and perfection is the enemy of progress. I, therefore, introduce you to my Minimal Viable Product Kimchi.
Is it the perfect kimchi recipe? No, of course not. It misses all of the nuances of centuries of Korean guidance. Is it good enough where you can say “this is kimchi”? Absolutely. For making soups, porridge, and barbecues at home this absolutely serves the purpose it needs to. It is also enough of a kimchi recipe for me to hand over to people, ask what they think, and then next time include those suggestions. You won’t know fully understand what customers expect from the scope of your product until you build something and ship it. This is that something.
Like assessing any product, recipe, or project we need to fully understand what we have to work with, what limitations we have, and what tradeoffs we have to make. Using a more familiar database to allow for faster development time or using whatever ingredients your local German supermarket has are tradeoffs that will lead to faster development. Using what is initially available and then assessing the impact and effectiveness is good practice in coding and cooking.
As important as the process itself is, it is equally as important to document the process. When making Minimal Viable Product Kimchi you will be making tradeoffs all over the place. Your first batch might taste a bit funky, and a bit weird, and the only way to understand what went wrong is if you have documented the process. Too spicy? Fewer chili flakes next time! Your project is deep in development and there are no tests? Start with test-driven development next time! Recipes and Architecture Decision Records are great ways to nail down what went wrong.
Hey, you made something cool! Whether it’s kimchi or an API: you need to let people know that you made it! Celebrate with your team/sous chef in public and praise people where it needs to be done. If there is negative feedback, which is very common for my cooking, make sure to do it personally and privately. The world doesn’t need to know that the kimchi tastes like it was made by a toddler - only the chef does. Bringing negative feedback with a clear direction and outcome will help the development of the next batch.
Minimal Viable Product Kimchi being assembled