Some ideas about the how

December, 2009

So the first question I got from my friend Sean in response to my post Movement was ‘How?’ As in, how do you iterate quickly? How do you prevent the freeze frame?

Two ways: automation and love your tools.

In order to move with agility in software development, you must have any and every mundane and reoccurring task automated. This means understanding every step that needs to be taken to go from writing some code to seeing that particular piece of functionality running live in the real world. That path might include building source, running tests, interacting with version control, building installers, deploying the application, running more tests, rolling back the deployment and so on and so forth. All the little pieces it takes to connect your code to live functionality in the hands of the end user. Iterating quickly also means you must understand all the keyboard shortcuts and secret tricks of your tools. Those seconds wasted formatting your code in VS instead of pressing Ctrl-K-D matter. You must also have  a version control system that allows you to prototype and iterate quickly without fear or mal consequences. This is very much an evolutionary/natural selection-like process where you need to be able to rapidly try out ideas and designs, keeping the ones that work and leaving behind the ones that don’t.

Secondly, in order to move quickly in software development you absolutely have to love your tools. I’m talking about a real emotional connection here. When you love your tools you want to know everything about them. How do I do this faster? Is there an option for that? Wouldn’t it be great if it did this? How do I extend my tools to do this? Maybe you’ve built some of your own tools. Maybe you love Visual Studio. Maybe you love Emacs. I’ve seen developers who use nothing but a text editor and a shell (plus a whole array of scripts and custom utilities for making things happen) so the actual specifics of the tools doesn’t really matter. What matters is that you love them and learn the ins and outs of them.  Right now, I think ReSharper is brilliant; Dropbox makes me smile daily; and Git and Github are revolutionizing version control. Your tools are everything from the physical hardware of your PC to your OS to where you write your code, to where you application gets deployed and how you managed everything in between.

Finally, your ability is iterate is directly tied to the speed at which your feedback loop can communicate. The quality and speed of communication through the network of people involved determines how quickly you can put your tools to use to connect feedback, ideas, innovations and real working software.

Tim's Avatar Building GitHub since 2011, programming language connoisseur, Marin resident, aspiring surfer, father of two, life partner to @ktkates—all words by me, Tim Clem.