The sun began to set over the mountains, which had been turned light green by the slowly advancing line of new spring leaves that had nearly reached its peak of the tree line. The second of two days of deck deconstruction and reconstruction was coming to an end, and looking around, I was secretly disappointed at how little visible progress we'd made.
At some point during those two days I'd had a flash of insight, the kind of moment when you can practically feel the synapse firing in your brain. This is just like a software engineering project. And not just because we got less done than we intended, either. The more I thought about what we had undertaken and accomplished, the more parallels I saw.
The project as a whole was a deck deconstruction (several supports and pieces of the deck itself were old and rotting) followed by a reconstruction. It may help to put a microscope on one specific example here. Since several supports had been replaced and had slightly different dimensions than the old ones, some of the deckboards were no longer completely snug with these supports. Definitely not a structural issue, but a minor aesthetic one; also, the boards themselves were certainly aging as well, but it wasn't completely necessary to replace them. In other words, a tossup on whether or not to rip them out and replace them with new boards.
The owner of the deck, an elderly but still strapping gentleman who was also the foreman of this two-man work team, decided that there was reason enough to install new boards. Prior to making that decision, he probably did a quick cost-benefit in his head - how much better will it look with new boards? What about the fact that the new boards won't match with the old ones? How long will it take to rip up the old boards and put in the new ones? Are there any requirements from the client (his wife) about what the deck should look like or how long it should take? What are the penalties associated with not meeting those requirements?
Further similarities emerged after I started to take the board out. The nails used to hold the boards in were very old and tough to remove; it was therefore taking much longer to finish the first part than anticipated. Do you continue on the current path? Maybe even reassess the situation and make another decision with the new information?
At another point we realized that the ideal tools/supplies we needed were in town, a 30 minute drive. Another decision - do we use a "workaround" (very common term on a software project)? Sacrifice the time to get the supplies? How does that impact the amount of daylight we have to work with, and is there anything else we could pick up from town while we are there to make it more appealing to go?
I also realized (again) that I tend to think in very general terms about things - this is part of the reason I make these far-flung connections in the first place when other people think I'm off my rocker. A "project" is therefore anything that one or more people put their time into (ideally with some sort of plan for it), a "client" is anyone that anyone has to answer to, "requirements" are the things that constrain the design and give the project a shape and direction. People that work as consultants have similar mindsets - which may be why very little "actual" vocabulary is required outside of technical vocab. But in some sense, everyone is a consultant, since everyone works with resources, such as their own time, skills, and wealth, in order to create something for a client. In the ultimate meta-thought: the term "consultant" itself has become vague to the point of meaninglessness.
Profound thought of the day: The nuances no longer come in the words we use to describe the world, but rather from our experiences as we interact with that world.
[Update: Discovered a related post and discussion over at the 37 signals blog recently.]
Monday, May 05, 2008
Of Projects, Decision-Making, and Vocabulary
Thursday, April 10, 2008
Google Reader Stats, an Update; Plus: Googlegängers
And the moral of the story is: never start work on solving a common problem until you've done your due diligence to make sure there isn't already something out there that will do the trick.
After noticing in my last post that the standard scatterplots available as gadgets in Google Spreadsheets did not allow for multiple values to be plotted, I contemplated spending some time to put together a gadget of my own to do the trick. While this would have no doubt been a great learning experience (maybe I'll try it anyway), that plan was short-circuited when I realized that there was already a type of gadget that could be abused to serve this purpose:
Now the intended use of this gadget is way cooler than what I am using it for, but I'm also a little proud that I was able to hack it to serve my own purposes. It also has the nice feature that any viewer of this site can mess around and put different values on the axes (try it! you know you want to). These settings are not stored in the gadget in any way (try refreshing the page); however, Google has just introduced a way to persist data and presumably settings in a gadget. I wonder if it's effectively creating a shared document or spreadsheet for each instance of the gadget and pulling the data that way, which would be a similar structure as these embedded gadgets, or if it's a different way to store the data entirely.
Ironically, I'll probably share this very post tomorrow when I go through my Reader, thereby altering the stats. How meta!
And speaking of meta: I was just reading about Googlegängers. A play on the German doppelgänger (another one of my favorite words), "Googlegänger" is a neologism coined to describe other people who share your name, preferably that you discover by Googling yourself.
Inspired, I decided to re-Google myself, since it had been a while. I came up with some really great hits. There's Andrew Brett the model, Andy Brett the bird photographer, and, to coin a new phrase, my REVERSE-Googlegänger, Brett Andrew, the musician. So cheers guys, and best of luck.