Archive for March, 2005

March 17th, 2005

SD West 2

by Tim Cull

Back to waiting for Citrix to bring up Outlook for me, so I have an excuse to post an entry.

So I’ve been learning some good stuff here. Given the ecclectic nature of the conference, I’ve been able to go to sessions on a wide range of topics and not get bored by a single topic. For example, this morning I was in a session about use cases, then followed it up with a different session on the internals of the Java Virtual Machine. It all definitely makes me miss my days doing real development; even the use case session was more development than I do in my daily job if that says anything.

Learned some cool stuff about JVMs. ‘bytes’ and ‘shorts’ get compiled into ‘int’ bytecode when you do arithmatic on them, so you’re not really saving yourself any memory by using them. Garbage collectors have gotten a whole lot smarter than they used to be, to the point where it’s perfectly fine to have lots of small, short-lived objects (if you’ve got a Generational GC).

I was in a session yesterday with Joshua Kerievsky about Code Smells, which was great. One smell I completely disagree with is the “Comments” smell (actually from Fowler): if there are comments in your code, then you need to refactor it so it’s so understandable you don’t need comments. I find this attitude as frustrating as it is (currently) fashionable. Take this example:

Country countryOfIssue = null;
if (asset.getTradingCountry()==null){
countryOfIssue = asset.getTradingCountry();
} else {
countryOfIssue = asset.getExchange().getCountry();
}

I understand this code fine. If the asset doesn’t have a trading country, then assume the country of issue is the country of the exchange it trades on. But what I need to know, 5 years later after the original coder has left, *why* would the trading country ever be null? Who said this was an ok situation? Is it safe to take this out and just assume every asset has a trading country? We have a situation just like this in my system and I don’t know the answer and it’s causing me pain.

Last observation: the lunch they’re serving here has been surprisingly good. Just sandwiches and some fruit and a side, but they’re tasty.

March 17th, 2005

President’s press conference

by Tim Cull

So I’m no fan of President Bush, let me get that out of the way. I voted against him in both elections, marched in an anti-war protest (before the war started, an important distinction I think, and a subject for a different post).

But yesterday when I was driving home I heard him in a press conference give an uncharacteristically thoughtful and articulate response to a reporter’s question.

The reported asked him if he felt a sense of “vindication” because the election in Iraq went well, and Syria is pulling out of Lebanon, and things in the Middle East are going (relatively) well. His answer was basically “I don’t have time to think about that, I’ll let history decide”. He described how he doesn’t spend his time walking around the oval office “asking different portraits, what do you think?” I’m not going to be able to do it justice, but he managed to be folksy and articulate and thoughtful, without sounding like a sneering ass like he usually does. He almost sounded like Bill Clinton.

March 16th, 2005

Greenfield development

by Tim Cull

I can’t count the number of times I’ve seen some nifty technology or development practice presented with the implicit assumption that everyone in the world is doing greenfield development. But in my entire career so far, both at commercial software companies and at internal IT shops, I’ve only ever been on one successful and one aborted greenfield development project. Everything else I’ve worked on involved taking something that already exists and adding some new functionality to it. Sometimes that’s one big sweeping change, and more often it’s a series of incremental changes.

The XP camp seems to acknowledge this reality the most, but even they make one critical assumption: the system you’re working on is fully covered by a comprehensive set of unit tests. In reality, if even one corner of your app isn’t covered by unit tests, then you can no longer refactor with abandon and not incur a high manual testing cost (or high production risk). If you can’t refactor with abandon, then you can’t design to today’s requirements and not worry about tomorrow’s requirements. If you can’t design to today’s requirements, then you can no longer start development without a waterfall-like comprehensive requirements process, and so on and so on.

For every presentation I see at a conference about a technology, I’d like to see a description of it in a greenfield environment and a not greenfield environment. Let’s call it a brownfield environment because our nice, open, green field (possibly with poppies and butterflies, etc) is marred by some gopher hole, or cow patties, or whatever our legacy environment presents us. Most metaphors are vaguely brown.

It should be possible to describe the average brownfield adoption of a technology or process, what the cost/benefit curve looks like at each step, and at what points people tend to lose courage. Maybe I’ll do it, between conference calls and diaper changes.

March 16th, 2005

House remodel

by Tim Cull

We started our addition to our house on Monday. We’re adding one bedroom and one office/hallway and it’s costing well into 6 figures, which blows my mind.

Sunday we had a good-bye BBQ for our deck, which is only about a year old and I built myself with my father-in-law and uncle-in-law. It took me many months of weekend work to create it, and only took the 3 guys from Levitch one day to take it apart and neatly pile the pieces on my back lawn. Kind of sobering!

Every day I go home excited to see what they’ve been able to do since yesterday. Monday the deck was gone. By Tuesday, they’d already dug all the trenches for the foundation. It’s like having Christmas every day, only I’m paying for my own presents and the interest is tax deductible.

I love watching things get built. Miles seems to like it, too, which is promising!

March 15th, 2005

SD West

by Tim Cull

So as my first real post, I’m going to start out pretty geeky. I’m in a bean-bag chair at Software Development West, a meeting of minds in software development in the Santa Clara Convention Center. The free wireless access is sucking me in and I’m not fighting it.

It was actually quite challenging to get here, not because it’s expensive (although it is, but luckily my company has no problem paying) but because carving a few hours out of my work schedule is challenging, much less an entire week. I’m glad I did it, though, because listening to earnest discussions about the Strategy pattern is energizing me in a way that explaining for the hundredth time to a trader why they didn’t see the price for a future they wanted to trade isn’t.

Yesterday was a session by Alan Shalloway about design patterns followed by a session by Joshua Kerievsky about refactoring to patterns. Alan is sitting right next to me in a beanbag as I type, which is pretty cool even though he has no idea who I am or that I’m writing about him. I’ve recently set the career goal of wanting to be one of these gurus, having found the management track not terribly satisfying in a personal way, even though it pays well, and it’s marginally more stable than being a line developer, and it does afford me the opportunity to make more decisions for myself. It’s helped enormously to have a long term goal even though I have no idea how to get there.

Today is “Better Software — No Matter What” with Scott Meyers. He’s got some good stuff. The painful part about each of these sessions is that much of what they say is common sense, which any given guru will freely admit. The real challenge comes in how you implement it in your own particular situation. Nobody’s going to give you a manual about how to do that.

I’m writing this blog as I wait for Microsoft Outook to finally appear through Citrix. I filled out an internal IT survey recently that was intended to figure out what each functional title does in our company in “reality land” and make sure our review and promotion process reflected that reality. To the question “What tools are most important to your daily job” I had to honestly answer “Outlook” and I found that a bit depressing and enlightening. Maybe that’s the real mark of having reached managerhood.

Oop-it’s come up now. Got to go to my paid job