Basically all OSS libraries are built by developers for developers and developers tend to think solution first while I always advocate to think API first. Let me explain.
By solution first I mean designing APIs of the library to an implementation. You wrap interface around working core which is a fundamental flaw. You lose an opportunity to make it the best version of itself, you lose freedom of thought, you are now bounded by a solution core you've already made. Sometimes it might work, but most of the time it's not.
I've noticed that phenomena when we were building chatbots. When you give developer Telegram Bot API and business demands - they usually produce a bot that works like a terminal application. Same for the clients when they used Google Sheets for business demands.
When I asked developer to use ChatFuel interface to build a chat flow for a bot immediately I got an output of a humanised version of a conversation with stickers, photos and GIFs. That led me to an idea of building chat bot design tool, hopefully we'll build someday, but this is another story.
The API first design is when you have all the freedom, you play around and fantasise on what would be the most useful and clean and compact and explicit API of the library and then and only then you try to design solution based on the API design. And do your best to fit, weigh compromises. Treat your library as a product and developers who gonna use it as customers.
Thanks!
Top comments (0)