Chad Osgood's Blog

Chad Osgood's Old, Expired Blog

Why do you take so long?

On more occasions than I like, I've been asked by pointy-hairs why my initial efforts in a given project take "so long" [1].  My mentality with regards to almost anything development-related is to put forth more effort initially so that I can put forth less later on.  If you compound the time savings for subsequent uses of your project, your initial efforts will look very small. 

A recent example of the above would be a small tool that I wrote to convert a bill-of-materials data file from a client's business software and convert it to a tabular format for use in a relational database.  A lot of older business software platforms seem to like using monolithic data structures with all the information for a given record on the same row; makes it difficult to generate reports.  It took someone else a little over a half an hour to perform the conversion.  It took me a little over an hour to build a tool in C# to perform the conversion.  It takes the former a little over a half an hour each time.  It takes me less than 2 minutes each time using my tool.  You can easily see the time savings here, but that is not what is at issue.  This is a fundamental difference in thought process, and the perception of those who would rather repeat a task every time will always perceive those who hack out tools as being slow--at least initially.  This applies to almost all facets of development, not just tools.  

Even when there is a need to develop a "disposable" tool, a tool which is ostensibly useful only a single time, they seem to find a way to recycle themselves in the future.  I'd say it's a conscious decision on my part to always build a recycleable tool even for remedial tasks, but it's not; I can't think any other way.  I believe most developers are this way, and so does Steve McConnell:

Suppose you're given five hours to do the job and you have a choice:

  1. Do the job comfortably in five hours, or
  2. Spend four hours and 45 minutes feverishly building a tool to do the job, and then have the tool do the job in 15 minutes.

[Code Complete p505]

When I was thinking about this, I remembered reading the above in Code Complete many years back, so it seems a lot of what I read really did stick with me.  A lot of technical books I assimilate then expunge. 

I will stick with my current mentality.  If I do one task more than once and the second time around it takes the same amount of time as the first, something is wrong. 

[1] The perception of "so long" is usually without reference to the equivalent that takes less than "so long", so it's entirely subjective.

Comments

TrackBack said:

Loosely Coupled
# June 6, 2003 5:34 PM

Andrew said:

Amen
# June 6, 2003 7:28 PM

Paul Gielens said:

tha "BOM".
# June 7, 2003 4:52 PM
Leave a Comment

(required) 

(required) 

(optional)

(required)