« What the...? | Main | Potato, potatoe »

October 09, 2005

Through the Valley of Darkness

Due to some recent changes in the corporate environment, my group is being brought kicking and screaming into a world populated with multiple platforms. Many of these platforms contain foreign APIs and what not. In other words it will take a little effort to understand the changes before any meaningful work can be completed on the platforms. This time can take anywhere from days to weeks and is dependent upon numerous external factors.

I've been pushing for the adoption of a cross-platform toolkit, more specifically the adoption of the Qt toolkit. Having hacked on it a bit for EROS, I've come to really enjoy Qt as an environment over many of the other cross-platform systems.

To enable this push, both group and division wide, I've been forced to demonstrate a port of some established applications to the Qt system. Not a terribly challenging task until you realize a couple of truths about software development:

1) Code Maintenance is for wimps. Yep, you heard it here first. The larger the project codebase, the more important the project must be. The more important the project, the more likely you are to have a future at the company, so remember kids, build really large and complex applications to do a really simple feature.

1.5) Requirements come and go, but no one knows which ones are the right ones currently. The code base was originally written by someone unaware of what the entire project scope was. Or whose the original scope of the project has changed and evolved as new usage models emerged. Thus the codebase is littered with adapted code samples copy-written to others outside of the company, features not really needed, and unknown bugs.

2) No matter how non-evil your intentions may be, someone somewhere will always feel slighted by your initiative to cause change. In my case, someone has become very comfortable with using an obscure language for developing their tools. By definition, it's cross-platform, and thus is exempt from many of the issues Qt would solve. Unfortunately, it doesn't allow many of the lower level CPU controls or inline assembly needed for about 90% of our tools, hence why the tools are written in C and C++.

3) When something seems simple to you, there are always others who don't see it as such. Just because we'd only have to learn one API for many GUI, socket, and threading interfaces, it doesn't automatically turn into savings. Why? Because driver land APIs are still confused, and thus the entire possible savings are invalid. Why a driver needs a GUI though is beyond me...

4) Consensus does not mean action. Even though you might get agreement from all parties that this is the correct plan of action to take. It really doesn't mean anyone is willing to take the energy to put the plan into action.

Posted by Dan at October 9, 2005 02:09 PM

Comments

Post a comment




Remember Me?