I’m a big fan of the everything as code trend.
We can design what our infrastructure looks like using simple yaml files, no matter how complex. Our applications can be built, deployed, configured and managed in similar ways.
Documentation can be written and maintained this way too. C4 graphs are easily kept up to date without much technical skill. And programming languages like Rust and Go automatically create documentation for the end user right from the source code.
Even this blog is written in Markdown, saved to a git repo, compiled automatically into static HTML and deployed for all to see using Hugo.
And the cool part is, it all lives in the repository right along with the code that it supports. Everything that is related can be edited and versioned without leaving your text editor, and deployed with a save and a push.
But then we have to log in to a heavy service to update project status. A serious break in our workflow. And these services ain’t cheap.
The birth of an idea
I started fiddling with the idea of kanban as code a couple of months ago. It would be cool to keep a bunch of markdown files in a series of folders that can be rendered as a kanban board. I started writing it in typescript + vue, with the idea that I could easily embed it in a service for using it in the traditional way, but also as a vscode plugin for using it right in my IDE. And the tasks are right beside the application code, as easy to read and edit as this article.
But then I worked with a team that uses Basecamp and their hill chart concept. Which of course led me to the obvious hill chart as code idea.
Now we have a pattern.
The call to action
Someone should design a framework to make it easy to build productivity as code tools. I think the goals should be:
- all the various tools should be independent, so that developers can pick which features they want
- there should be a consistent look and feel, that can be styled in one place, so that these tools can integrate easily into existing toolboxes and give a sense of unity without overly bogging down the setup process
- it should be written in javascript so that it can easily be integrated into CI/CD systems, hosted toolkits, and IDE plugins
What other productivity tools would also fit here? I don’t really know, but I bet you do. Do you think this idea is even worth pursuing? Is there something that I’m missing? I’m looking forward to your feedback in the comments. Even if you’ve decided to take it on yourself, and you just want me to cheer you on!