Tuesday, June 10, 2008

And now for something completely different

One of the interesting things about working at a start-up company (indeed, one of the things that got me excited about moving to this new job) is that there is a lot of work to be done and people need to be able to step up and take on a variety of projects which require different skill sets. Now that may work on the customer-focused software has wound down I'm picking up a new project working on some internal workflow software for manging the way we create optical maps and do identification of those maps.

This is a completely different part of the system than what I've been working on, involves a completely different set of code and, in fact, involves a completely different programming language. After languishing and collecting dust for over 5 years I'm brushing off my Perl programming knowledge and starting to put it to use. So far I've been working on understanding the code that is already there (thankfully the man who wrote it was very conscientious about clean, understandable code) and getting an idea of how things are laid out. That being said, it's still Perl! For those that don't have programming experience with Perl, it's often said that it's a "write once, read never" language ... meaning that you just write something to get a job done and then you never go back and look at the code again. It's not the prettiest programming language. Here's a short example:


for (my $i=0; $i<=$#vals; $i+=2)
{
my ($c, $flag) = ( $vals[$i], $vals[$i+1] );
$flag = ($flag eq "n") ? 0 : 1;
push @rle, $flag for ( 1 .. $c);
}


Yeah... isn't that nice and easy on the eyes?

Yesterday I had my first meeting with some of the scientists in the company who will be using the software that I'll be creating and got some very good ideas about things that it should do and how it should look and behave. It was very nice to be talking to users (even if they're my coworkers) and seeing how the software I'm going to write is going to make a huge difference in the way they do their work. I'm excited to have something new and interesting to work on and I'm glad that it's going to be something useful.

Wednesday, June 4, 2008

Ship It!

The last month at work has been a non-stop push of implementing features, testing, and fixing bugs. We spent hours and hours testing the software that I've been working on and I think we really polished it up nicely and have something that's going to make customers happy. We've actually had a couple of customers using a beta release of my application and so far the feedback has been quite positive, which makes me happy.

Today the last official document was signed off and the software I've been working on for the last 8 months has now gone gold for the first release to customers! I'm very excited, relieved, and apprehensive all at the same time. It's exciting to know that people are going to use the software that I created and put all of my work into. I banged my head against the desk trying to solve some very hairy and insidious problems, spent hours discussing how features should work and how to make the program as useful as possible, and delved deep into performance profiling and benchmarking to try and eek out as much speed improvement as possible. It was a lot of work and I'm thrilled that we came this far and that things are looking this good.

But all of that is followed on with a niggling doubts and worries that I've missed something that's going to be a big problem once people start actually using the software. One thing is true about writing software: you can plan all you want for how you think customers are going to use your software, but you can never be certain that you've got it just right. I worry that there are hidden bugs that we didn't find that are going to crop up and cause big problems or make us look bad. I'm concerned that the technology choices I made might not be the right ones .. maybe we didn't fully understand how people are going to use the application and it just won't scale well.

But after I calm down for a little bit I remind myself that I'm surrounded by a group of people that are working hard to make sure that we don't send out something that's going to be a flop. After all the hours of testing and of talking to customers and other users I think that it's going to be a success.

But I will still worry a little bit.