On software productivity and generating CRUD code

As a past and present small business owner, computer programmer, application designer, and a consultant who gets paid by the hour, my primary interest when creating software applications is this: How do I/we create great software applications as fast as possible? That is, how can we be more productive today than we were yesterday?

In 2002 I learned about a technology named "Function Point Analysis", which provides a way to measure software development productivity. I was stunned at that time to learn that we weren't really creating business applications much faster in 2002 than we did in the 1980s or 1990s. (The only real difference was that we were getting better at distribution: We didn't have to burn and ship CDs to distribute and update our applications, we could just deliver applications over the internet, and update them instantly.) I was floored to learn that we weren't much, much faster at delivering applications.

Boilerplate code

My reason for mentioning this today is one of my particular gripes as a software developer. I hate writing boilerplate code. It's boring, tedious, and mind-numbing. Think about it, the way we write business applications is this:

  1. We talk to users about what they want.
  2. We design a solution.
  3. We design a database to match that solution.
  4. We write the code to use that database.

Because we almost always design the database before we write the code, it makes sense to generate boilerplate source code from the database design. Why take the time to write boring CRUD (Create, Read, Update, and Delete) code when it can be generated much faster? If you write the boilerplate code by hand you'll bore yourself to tears, and worse yet, you're not being a professional, you're not being as productive as you can be.

Enter the Cato CRUD Generator

Getting to my point, this morning I released the latest version of my Cato CRUD Generator. Cato is a free, open source "CRUD generator". It's based on templates, which means you can create templates to generate any form of CRUD you want. It's also language-independent, meaning that you can generate CRUD for any programming language or tool you want. I use Cato to generate all sorts of CRUD for Java and Drupal applications, and with this new release, you can new generate CRUD forms for the Scala Play Framework.

Without any further introduction, you can find the latest information on Cato at this article, Generating Play Framework 2 CRUD forms with Cato. I also have a dedicated website for the Cato CRUD Generator, but at the moment it's slightly out of date; the first link is probably a better resource at the moment.

As you'll see in the first link, the latest Cato source code is now available on Github, which means you can modify it as desired, and also create your own templates to generate anything you want from your database design, including source code, configuration files, and other code.