January 2, 2013

One Step

If my career has taught me anything, it's the importance of having repetitive tasks be completable in one step.

Every action should take one step.


Every piece of information should be one step away.

How can this apply to daily development?

Let's talk about databases. What is involved when you deploy your schema? If you can't answer in under 5 seconds, the process is too long. You're wasting time. Your brainpower is not being used effectively.

When working with a Mojolicious web app, here's my process:

myapp deploy_schema

After I write the deployschema_ command, I tend not to remember the details of how it works. Sometimes it's a wrapper around DBIx::Class->deploy, sometimes it's a fixture dump with MongoDB::Collection->insert. I don't care, because I'm busy making the application do something nifty.

It's actually enjoyable to make schema changes, because I marvel at how easy it is, every time. Internally, I'm overjoyed like a little girl. Sometimes I giggle.

This giggle affects my opinion of the project. It affects how much I want to work on the project. It affects how I feel about the other people involved in the project. It positively correlates to how well the project works, how maintainable it is, and how well designed it is.

Changing a schema requires other supporting tasks, like changing tests, changing fixtures, and running those tests; those are related, but separate processes. Each one of those are one step as well, which can be subsequently combined to create higher order one-step tasks.

Keep combining, and after a while, you've got one-step deployment of the entire product...kind of like this blog. A Perl app deployed in one click.

It's a natural progression.

Make everything one step.

I'm on Twitter!

comments powered by Disqus