Tuesday, March 18, 2008

Software development

For the last week, things have been busy as usual, but I have been able to play quite a bit (for me). Been in the midst of a couple different software design exercises, and we have a significant milestone this week as we present our ideas for some new functionality.

I'm guessing not a lot of you are that familiar with enterprise software, as you don't really get too exposed to it without either building it or working in IT for a large company/university/government, etc. Unlike websites and more consumer-oriented software, our software's major releases take years (literally), cost us millions of dollars to build, and will usually cost our customers tens of thousands of dollars to upgrade (and way more to implement for the first time). It sounds insane, but the cost savings/revenue generation for our customers handily makes up for their costs, and of course they money they pay us makes up for our costs. There may be a better business model for large organization's software, but we haven't seen it in practice.

With so much on the line, and because there are such high costs to start over if we get it wrong, it's really important to work hard on the up front phases of development to get it right, and that's where my big project is at right now. When it's my turn to deliver a piece that other people depend on, everything else has to stop, or at least take a distant back seat.

Over time in my career, I've gone from the guy figuring out the details to being the guy who drives the features and the project. It's nice because I'm able to set the general themes and control a broad part of the software and of the business. It's unfortunate because I actually like figuring out the details...but it's difficult to be an architect, people manager, project manager, functionality/usability "visionary", and developer all at the same time. You try to do too much, and rather than doing anything really well, you end up doing a lot of things like crap.

Over the years, I've acquired a bunch of expertise across the software development board. There's really not much about sofware development -- enterprise software, anyway -- that I don't know pretty well. Sure, there are some programming languages I don't know, as it's been a while since I've actually coded anything. I'm really talking about at the conceptual level, I know a fair amount. It's not really in conceit that I say that, more just that I've seen a ton. I've lost track of the number of projects and release cycles that I've been through, and I've taken on tons of different roles. Like poker, you can read about software development practices, which helps establish a framework, but there is no substitute for experience.

It's really rare these days that I actually come up against a problem that I haven't faced before. The settings are different, but usually I find some sort of parallel to what I've done before, and I know what works and what doesn't to solve it. One of the fun things about it is finding those parallels when they might not be immediately obvious.

I'm not really sure where this entry came from...I was going to give a quick update on how things are going in poker, and I started getting off course (and I've got to get back to my project). I have periodically thought about chucking the software career for something else, which causes me to re-evaluate how happy I am doing what I do...and the answer always ends up being pretty happy with it, all things considered.

Maybe I didn't want to jinx anything, as the good results last week have caught up with what I feel has been solid play over the last month or so. I'll try to get something else written about that soon. At least after last night, I no longer have to worry about anything I write stopping a win streak :P.

1 comment:

Gregory Lynn said...

We recently spent years of effort and who knows how many million dollars implementing a claims payment system. We got about halfway through and came to the realization that there was no way in hell it would do what it had to do. It would literally be a gigantic step backwards.

Corporate bullshit y'know?