Kitcoder is a tool for building things—the kinds of things a programmer would normally build—but this is not programming. There is a long and rather troubled history of tools that attempt to make programming easier. The problem they all run into is that programming (so far, at least) is just fundamentally very difficult.
Instead of trying to do without programmers, Kitcoder provides a better way for programmers and non-programmers to work together: programmers make the parts, kit-coders put them together.
In the physical world, if you want to build something, a kit offers a simple trade-off. Compared to working with raw materials, kits are way easier at the cost of being less flexible. For building software, that’s a great tradeoff because programming is tough to learn, and offers far more flexibility than most people need anyway. And because this is software, “less flexible” might not mean what you’d expect. Sure, Kitcoder kits are limited in a way that full programming is not, but they can still be incredibly versatile.
So how does it work? Code generation. Under the hood, Kitcoder writes out a bunch of files containing the same kind of code that a programmer would write by hand. Because all programming languages are ultimately represented as simple text files, Kitcoder can work with all of them, and with any library, and any framework. So you can create a Ruby on Rails app for the web, a mobile app in Swift or Java, or just a static website in HTML and CSS. All you need are the right parts.
The parts in Kitcoder are just snippets of code that snap together in the right way. A kit is a collection of parts, created by any programmer, which work together to achieve a particular goal. They are created using a new language, Clarity, which is where Kitcoder gets it’s real power. Clarity is a language for capturing a programmer’s knowledge as reusable “recipes”—instructions about what code needs to be injected where, in order to implement a particular feature. It’s like programming experience, bottled.
Sounds too good to be true? There’s actually nothing very clever going on here. No artificial intelligence, no breakthrough in programming language research. There doesn’t need to be because, in fact, programming has already been moving in this direction for years, thanks to the unstoppable success of the open-source movement. Amazing things can be built these days by simply downloading and hooking up code other people already wrote. If you think Wikipedia is a remarkable achievement, the world of open-source code will blow your mind. It’s the biggest toy box in history, but, so far, only programmers get to play.
Hooking up other people’s code has still required coding skills, but often it’s a routine kind of programming. It’s not uncommon these days to hear programmers bemoaning the fact—what happened to real programming? Well, computers are supposed to automate routine processes, right? That’s all Kitcoder does—automates the mechanical steps programmers follow to hook the pieces together and get an app working.
Of course, there’s no substitute for the intelligence and creativity of a real programmer, and Kitcoder is only going to give access to the tiniest fraction of what they can achieve. The thing is, a tiny fraction of those possibilities, which are essentially infinite, could be a game changer for everyone else.
If aspects of your project do demand a programmer, Kitcoder allows hand-written code to be injected anywhere, and custom, app-specific parts can be easily added to the library. The possibilities, then, are truly unlimited.
Finally, for established development teams, Kitcoder plays nicely with version control systems like Git, and can slot into existing CI and testing processes. Use Kitcoder for just your front-end code, or just the areas that demand careful input from design and business stakeholders. How agile would you be if you could short-cut your iteration cycle and try out a new feature in one hour, or one minute?
Kitcoder is a work in progress. So far, just a one-man-show in fact. That needs to change to get Kitcoder finished and released, which is why I've published this preview now. If you think you could make use of Kitcoder and you’d like to see it become a real product, please sign up for email updates or follow me on Twitter. Finally, of course, if you can help get the word out with your likes and your tweets, that would be much appreciated!