Saturday, February 18, 2006

Internet Servers and Conservative Software Developers

Two subjects not related to each other and both a bit of a rant.

Internet Servers

Firstly, as some people might know, the people who arrange the hosting disappeared a couple of weeks back. They were a small company who had moved the servers around a bit, but originally were cheap compared to other web providers and we'd been running with them for many years without a hitch.

So what happened from our point of view? Well, the web server that hosts out pages went off line and email stopped working. It took almost a week to get back up and running. The process was basically try to contact them, get a new provider, contact the DNS agency to change over, wait for them to try to contact the old service provider, etc.

The web pages going off-line is bad for a tiny shareware company (for any company?). Additionally, since we released the Zex beta we were waiting for feedback and it had just started coming in on the forum. Practically all that information was lost - since we don't do daily backups. We did have a backup that wasn't very old luckily. In the interim we re-directed the product pages on Versiontracker and MacUpdate to the new provider - but only after we'd confirmed in our own mind the old one was dead and got a new one.

If the web pages going offline wasn't bad enough we also lost all lightsoft email for a week. From a personal point of view this was as bad as losing the Zex feedback or sales since ALL of my personal email comes in via lightsoft (to avoid problems if I have to change ISPs). This includes not only customer support emails but mailing lists, friends and family but internet shopping and contacts for various technical matters.

The moral of this story? I'm not sure. I guess in our case we've gone with a big provider who we know does a good job.

Conservative Software Developers

Doing lots of software I get to work both on my own, with Stu and with larger teams. Both myself and Stu are technophiles. We investigate new technologies, learn new languages, try out new techniques. Contrary to my previous post (regarding C++) this can be things that are not necessarily popular but might be powerful. Of course you don't know whether something is powerful for you until you try it yourself.

Sometimes I have to temper my desire for improvement in the knowledge that constant change doesn't ship. This can be settling with a good enough language, avoiding restructuring bad code or just doing the minimum to ship. This balance is hard to strike but is critical if you are not going to end up never shipping or shipping product that won't be useful in the future. Both ends are bad.

This leads me to my problem; Software developers are meant to be into new stuff. In my experience this isn't true - software developers, for the most part, are not computer geeks. They tend to be people paid to do a job and even the ones who are technical tend to be very conservative in their choice of technology.

This has really being irritating me for the past few months, not because being cautious is a bad thing - in fact avoiding too much change is critical to avoid wasting vast amounts of money for your employer. But there is the opposite extreme - not changing at all.

Thing I tend to see:

Not sure about C++ ... lots more space, confusing to developers, etc. C can do everything anyway.
I don't like OO - might take lots more space, be slower, etc.
I don't like (automatic) merge policy version control, seen problems (manual merges).
I don't believe in UML - don't believe there are any advantages.

Now the problem is that these people demand proof that the techniques or tools will give improvement. As far as I can see there is no magic metric that will give this. But it feels to me, and many others, that some of these things will help improve things like reliability, ability to change code and maintainability. Of course, taken to extremes they can be damaging. But generally can they be so bad if so many (clever) people use them?

Arguments like "well we can do any change you want in this C code" don't mean it couldn't be lots more maintainable. Deciding what to improve is hard, of course. Some changes won't have the desired effect and they may have a negative effect. But it's critical to consider how things could be done better and actually try out some of those techniques lest someone make you irrelevant. Also, the customers for software want quick changes as well as other things - the driver for fast changes as a customer need is much harder to measure. It doesn't mean that it's not important.

As an example of types of change that could be done - migrating from C to C++ is great because you can test the water of OO whilst mostly writing C in C++ compiler is entirely possible. Hence you can test whether it's an advantage (or at least not a disadvantage) and learn as you go.

Luckily with the right approach you can encourage change. It's slow and hard work. And the one advantage with Software Developers: they work with technology and generally have a logical mind. If you ask if it's worth trying to improve software quality or maintainability long term they will very seldom disagree.


Post a Comment

<< Home

Newer›  ‹Older