Saturday, January 06, 2007


Today marks ten years for me as a software professional.

On January 6th, 1997, I walked through the doors of the Corporate Express corporate headquarters in Broomfield for the first time as a Systems Analyst. I had four similar offers coming out of the College of Business at CU-Boulder. My starting salary at Corporate Express was $37,500 and I received a $5,000 signing bonus (which was taxed at nearly 50%)... remember 1997 in programming folks?! I had worked as an intern (code monkey) for about 10 months prior at a company called BDM Technologies, which folded into Avitek, which folded into BEA in Boulder (and subsequently Rally Software).

On my first day, I attended a SQL brown bag session put on by our DBA's. They had worked with large systems with Sprint and Andersen. I can't remember which version of Oracle we were working with but it was the rules-based optimizer and I was taught, literally from day 1, how to write optimized SQL for Oracle. I still see some of those guys almost weekly and they've graduated on to terabyte systems at Level 3.

My first project was implemented with Pro*C, Tuxedo, and Oracle stored procedures. It was an optimized version of an existing EDI 850 processor. It was also my introduction to heads-down coding, sitting at my desk when the vacuum lady visits, and late night Chinese food.

Since that day and project, I've worked on countless lines of code, created and fixed countless software bugs, worked on and solved some interesting problems, worked with interesting technologies, and worked with a whole bunch of really good people. Some of which I've managed to stay close with over the years...

Here are some other bits of reflections that help sum up my 10-year professional experience:

  • I've worked for four companies. Corporate Express is the largest. Since then, I've worked for three dot-coms. The majority of my experience, approx. 66%, is from within small dot-com environments.
  • My average tenure at a company is around 4 years. I had one anomaly of 6 months...
  • I've worked on UI's for three installed applications: one in Visual Basic, one in Java, and one in C#. I liked the C# client the most.
  • Most of my time has been spent within the confines of cubicle walls. I've had one office to myself. I once worked in a single office with four other developers - which was one of the best times I've had on a team.
  • I've experienced three layoffs. All of which I survived and wished maybe that I hadn't. After one, I negotiated my own exit.
  • In total, I've gone on three out-of-state business trips: once to PL/SQL training in San Francisco (by Steven Feuerstein no less), once to JavaOne in San Francisco, and once to Houston for a sales presentation.
  • I've been sent to training classes for third-party technologies a total of four times, or six days: SQL, PL/SQL, XML, and Java.
  • I've been certified on a technology once, as a Java developer.
  • I've pretty much always been an application developer. But that role's held six different titles: Systems Analyst, Technical Architect, Senior Analyst, Java Developer, Software Engineer, and Senior Software Engineer.
  • I'd approximate that 75% of my development has been done on Unix/Linux, and too much of that in vi or some other plain text editor.

So what will the next ten years be like..? I've said that by the time I hit 40 I don't want to be coding any more. To be honest, I don't know what that looks like right now. I suppose I can only hope that I get a chance to work with people as great as I have in the past and on problems as challenging and interesting. Bring it on!


Friday, January 05, 2007

My 2007 Word

Instead of a list of fleeting New Year's resolutions, I choose an action verb that I intend to incorporate into as many facets of my life as possible over the course of the new year.

For 2007, that word is Execute.

Given last year's craziness, it could easily be misconstrued as "hang" or "behead"...

Seriously though, I tried less harsh synonyms such as "achieve" or "accomplish" but those don't hit the mark like Execute does. After a few years of performing this exercise - 2006 was Create, 2005 was Rise - I've found that the word just sort of comes to me from my gut and separates itself as an obvious choice.

One of the obvious personal experiences from 2006 that drove this word, I think, was keeping two stocks on a watch list and not pulling the trigger. I watched Marvel Entertainment (MVL) for months. It met all of my criteria... I called a broker when it hit $13 and he recommended against buying. Of course, now at $27, I sit kicking myself and cursing the broker. The other stock was Herman Miller (MLHR). I was actually sitting with a broker when I told him I'm interested in the stock but I wasn't sure. Literally the next day it jumped from $27 to 36$ on earnings news. Could'a, should'a... Execute. Maybe my relationships with brokers are earning the other form of "execute" this year.

The beauty of Execute is that there's a prerequisite planning that's built in. Plan and Execute.

My son is starting Kindergarten this Fall...
Plan what I what him to have going in: some reading, some writing, some math.
Execute in the form of flashcards taped around the house labelling items, a grocery list on the refrigerator with pictures and words that he adds to when we run out of something, a game that we made up called speed numbers involving up to 6 dice that we roll and figure as fast as we can, etc.

My house built in 1974 needs some love...
Plan small projects monthly and one or two large projects this year.
Execute in the form of listing priorities and budgets (more planning... recursion is very powerful), schedule time to take classes on home improvement, secure the tools or professional help and DO IT.

My body built in 1973 needs some love...
Schedule time to continue with yoga classes and consistent gym visits. Eat breakfast and pack my lunch.

My portfolio needs some love...
Research my options and pull the trigger on an index fund or services like Sharebuilder.

Set a morning routine to stay one step ahead of the daily madness.

Keep Java fresh.
2006 was a good year that involved CruiseControl, Spring (and Spring.NET), C#, .NET interfacing with Axis web services, RESTful vs. SOAP api's, XSLT transformations, interesting patterns like Strategy and Template Method, and JMX.
I need to keep the mo, possibly with the likes of Java 5, annotations, clustering, and Ajax.

And finally, (ironically) enjoy peaceful and love-filled time with friends and family. And I wish that for you as well.