Tuesday, May 01, 2007

Re-factoring, abstract, re-factoring, abstract.. survival of the fittest

I have a headache. Too many late nights of programming. I'm re-factoring my code at the moment. As much as 80% of the code written is new. Basically I have re-implemented my software. But it's for the better. A lot of it is now abstract and can be re-used in many other ways. If you sit down and think about it. The most powerful things, are abstract. Layers upon layers of abstractness. We're using them, everyday. Shoes with soles and shoe laces. Shoelaces built from string and plastic. Children are powerful, babies are powerful, because their minds have not been moulded like an adult's. Therefore even though they have nothing to build on, they are very adaptable. Like plasticine. In software, things have to be abstract as much as possible if it was to be re-used.

I like to follow this motto. Less code, is better code. Therefore no code, is great code.

My software will be the best in its class when it's released, not only in terms of functionality, but looks as well. I think many of today's software look like utter ugly crap, designed by engineers with no concept of design, but with the "implementation model" in mind. Basically, the simpler it is, that's what an engineer will follow. But it is not necessary the ideal way of interacting with the software. There's a conflict of interest. The engineer wants to design it as simple as possible. The user on the other hand, wants the end product to be easy to use and interact with. Engineer designed == BAD for user!! Why should people use something just for its functionality? Isn't software art itself? It should be pretty AND functional. The world of Windows applications has gotten to such a point that people use their computers, because they have to. Even if it's ugly as anything, they'll still put up with it. That is why anything that looks good, and functions well, will have a signficant advantage over any other product. If it's in house development, no one cares, but if it's in public domain, it better look good or it's not going to last if (when!!) a superior one comes along. Look at Netware. They dominated the network market for a while because they were the only ones with networking capability. But it was too God damn hard to use. Along came Windows with its built in networking (and far far easier interaction) capabilities and it's goodbye Netware. When was the last time you heard of the Netware running.. anywhere?

Like all survival of the species rules, this applies to software. In the software world, if you're the only solution (for now), good for you, but I'm sorry to say that inevitably an easier to use solution will emerge and take a stranglehold on your business.

No comments: