Please join me at my new location

Tuesday, July 14, 2009

The Tailor

This is the story of two developers, Curtis and Dean. Both happily work on the same project, and have strikingly similar experience. In almost every aspect Curtis and Dean are exactly the same. The only place where the differ is in development pace. Curtis tends to take slightly longer to accomplish his tasks when compared to Dean. On a task that takes Dean 7 hours, it would take Curtis 8.

Things remained this way for a few months, but as time went on Curtis began to close the gap with Dean. Before long, Curtis was doing his tasks much faster than Dean. On the task that was taking Dean 7 hours, Curtis was completing it in 4 with the same degree of quality. Curtis and his manager were happy with the improved pace. Dean couldn't figure out how Curtis was doing it.

One day, Dean and Curtis were working together trying to solve a particular bug. After a few minutes of watching it was apparent to Dean how Curtis was able to outpace him. That extra time that Curtis had spent earlier wasn't going to waste. He had been busy writing scripts to automate the routine micro-tasks he had to perform. And the scripts were just the beginning of it.

Curtis had taken his attitude towards automating further than just scripts. Any time he noticed himself doing something repeatedly he spent some time to make sure he was doing it in the most optimum way. He had memorized the key bindings the commands in his IDE he used the most. He extended his editor of choice, Emacs, with functions and triggers to automate almost every micro-task he did on a routine basis.

Curtis had tailored his environment perfectly to suit how he works and how he thinks. Curtis' customization allowed him to get more done in a shorter amount of time than his peers. Tailoring being what it is, the customizations to his environment were useless for anyone other than himself so he never bothered to share them. To Curtis, this didn't matter. He didn't make these customizations for anyone but himself.


Obviously the above story is fiction but it serves to outline a point: you need to optimize your environment for the way you think and work. If you don't, you're wasting time. That doesn't give you a license to impose your thought patterns on anyone else, it simply means that your personal work bubble needs to be optimized.

To put it into object oriented terms: Everyone must adhere to a common interface when working with one another. The interface provides an abstraction, or facade for how the tasks are performed. How the work is done is an implementation detail.