« Welcome to my blog! | Main | Its heading your way! »

December 06, 2004

Real products ship

Of all things, I am working on a Java client for the Internet Chess Club (ICC). Such projects are big and take a lot of time. "But the time is now!" and more on that later.

Even though all companies try to pack in as many features as they can, everyone knows that real products ship. At one point or another, the developer has to let go and say that this is it.

Many companies pre-announce release dates and upcoming features. But programming is a not predictable profession and plenty complications arise in the stupidest places. More often than not, these release dates are not met (and thus pushed back) and features get pulled out.

Features, not bugs, sell products. That is why Microsoft Windows has a monopoly. To meet these dates (whether announced or not), companies rush through coding these features. Instead of coding these things properly the first time, they just make them work - they take shortcuts.

This results in bugs. Correcting bugs is easy. But pinpointing their origins is tricky (and realizing that they even exist!). And it takes a lot of valuable time. This also hinders future development. Think of it as a castle made of playing cards. Now suppose the base is made badly. If you want to replace the base, you would have to start all over again.

Why do companies take shortcuts? When programmers spend their time developing, they want to see progress. And progress must progress. People just don't focus on one aspect of the program (then they will be frustrated when they hit a dead end) - they shuffle all over the place.

I announced the first release of LavaTech (that is how I called my program) on Dec. 16, 2004. In my case, I am developing the entire program. Sometimes I work on the console, sometimes on the chessboard, sometimes on the GUI (Graphical User Interface), sometimes on handling datagrams.

As more underlying code gets done, bugs get fixed. Yet new bugs arise - but they are on a higher level. But you just cannot ship a product with bugs (unless you're Microsoft). There is this urge to fix these bugs, but to do that you develop more code, create more features and thus more bugs.

That is why pre-release dates are annoying. When, its time to meet the deadline, things must be done right. And programming becomes frustrating and stops becoming fun. Its not only about completion, its also about publishing.

When releasing the product, it has to be presentable. I am not talking about creating a readme file or taking screenshots for your website because it's fun, I am talking about spending ten hours (without rest) fixing the bugs.

Now, a final question. Why do developers pre-announce release dates? For two reasons. First, programmers want to commit themselves to features, secondly they are excited and want to share them with you.

Posted by Oleg Ivrii at December 6, 2004 03:25 PM

   Copyright © 2004-2005 Oleg Ivrii, Liscensed under: Creative Commons.
   RSS: Big Party, RSS: Linklist.