Check out "Do you speak JavaScript?" - my latest video course on advanced JavaScript.
Language APIs, Popular Concepts, Design Patterns, Advanced Techniques In the Browser

README driven development

I was doing a podcast episode with Kent C. Dodds when he mentioned README-driven development. And so I decided to try it out with a new library which I just started. Here’s what I found.

README-driven development is exactly what you are thinking about. We first write the README/docs and then the actual code. It is also called documentation-driven development. For me it worked pretty well because I wasn’t really sure about the API of the library. I just started throwing ideas and step by step I fulfilled all the stuff which I wanted to make. Here are a couple of points if that approach is applied to developing a library:

  • I was able to see what is the developer experience. Seeing the library only from the outside helped me focus more on the API. The fact that I had zero lines of code freed my brain of implementation details and I designed the API in the best possible way.
  • It’s a nice sketch for the tests. I followed TDD afterwards and having the README done helped me writing the specs for no time.
  • Without battle-testing the library I don’t know about methods which are actually needed. README-driven development made me think more from the consumer’s side of the things. I had some ideas which I crossed out just because they didn’t make sense when I started writing the examples.
  • And of course it’s really easy to delete or modify everything. I changed the API drastically couple of times and that was completely fine. If I’ve had some code written upfront such changes will probably make me start from the scratch.
  • I didn’t have to go back and deal with the boring part - the documentation. That’s because I already had it. In general, following this approach made the documenting much easier and fun.

So if you are starting something new or just extending existing code base - try writing the documentation first.

If you enjoy this post, share it on Twitter, Facebook or LinkedIn.