First of all apologies for the clickbait title. Today’s post will be a journey. I felt like I needed to let go for a while and just let the flow take me…where ever it will. Topic came to my mind while I realised that I’ve been too rigidly thinking about APIs only. My life for the past 5 years has been writing and studying APIs related topics from different angles. That is quite limited view point.
Again my thoughts went to supporting the developer who is in desperate situation. Boss is demanding results and saying “Get that application ready today!” Bosses as dick as that are hopefully rare though I hope. Anyway developer is having a tight schedule which is not rare nowadays. Work life requires efficiency and speed. The app must come out or we’ll lose the markets to competition!
If the developer is thrown (like a bone) your API with excellent documentation, the work can at least start given that there’s easy self-service onboarding available preferably with freemium plan. The developer has chosen React to build the app for the customer. It was customer’s preference but the developer is happy too since it’s familiar stack. Luckily the API documentation contains node code examples for the endpoints. “Phew! At least something practical to start with.” thinks the developer.
What if there was a library instead of 6 APIs…
Then the developer starts to wonder. “What if there was a library to use? The amount of APIs I have to learn to accomplish the needed result in app is like 6. The authentication seems to have something to study too…” If there would be a library which would be mature enough, the developer could just install it via npm. The library would simplify the operations by hiding the 6 APIs with plethora of endpoints, various methods and dozens of parameters behind a couple of methods.
That library would also handle the authentication more easily. In addition the library would handle the JSON to node native and back data decoding/coding/serialization. Now would that be cool and save several hours if not days of work! Luckily developer finds the library from Github and readme advises to use npm to install it. “Wow! I can feel the flow state coming!” thinks the developer. (In real life the developer might have stumbled upon the library already in API docs, but that would ruin the story. So that never happened!)
What if there was a library of UI elements…
“Now I have the data flowing back and forth. No need to fiddle with API endpoints and plethora of parameters. What about the front-end…” wonders the developer. The developer most likely ramps up React and starts to build the front-end. If s/he is lucky there’s UI/UX design done already. Probably not… Again the developer starts to think: “What if there was a UI library for the main functions of the APIs…”.
Developer feels lucky since the library was there too. Perhaps there’s something that would help him in this too. “Holy shit!” yells the developer and office becomes dead silent. Everyone is staring at the developer since such bursts are not coommon to him/her. S/he just discovered that the API provider has not only build a productised library on top of the APIS, but also open source library of React elements in Github. In addition the React components are 100% match with the library methods! “Fu*king holy shit!” is in the air and developer’s boss starts to look a bit annoyed and red in face. The other developers just have a smirk on their faces…They know that one of us is getting the candy - flow state is coming!
Happy developer is supported all the way
Despite of the angry faces around the developer shines inside. A big smile on his/her face, fingers dancing on the keyboard code and results start to build fast. Developer has reached the flow state. The surrounding environment and other duties are pushed far away and developer is one with the task at hand.
This time there was a happy ending. Too often API providers or at least platform providers are satisfied with the APIs and documentation related. That is the beginning of all, that is the foundation, but it’s not the end nor the goal. As a API provider you should be thinking all the time, how can I make the developers’ life even more easier, how can they be more productive with my products?
Is this fantasy?
Now your head is tuned into the idea of full stack DX. Does the story look like a fairy tale? Perhaps, but look at what Stripe has done and think again. The above is close to what they have and more:
- https://github.com/stripe/react-stripe-elements - React components for Stripe.js and Stripe Elements
For some the gold mine is around JS driven technology, for some it’s java or python. A lot of the web apps are now build with node an React. You probably don’t have resources to build Full Stack DX for all the technology in the world. Focus on the one which is the most lucrative and around which you can build living community. If you play wisely, your strategy leaves space for the community to fill in other technology directions for your products (open source).
Some more to read from 100 Days DX
- #85 - Great Developer eXperience requires fluent internal workflow
- #84 - Theory of Economics of Developer eXperience
- #83 - The Space of API Design Decisions is missing
- #82 - Purpose of API Evaluation Framework
- #81 - Should We Move to Stack Overflow?
- #80 - Four data driven ideas for improving API documentation
While you are here...
Check out Platform of Trust in which I've worked to enable best possible developer experience!