Maintainability: if you can only just understand what you developed, no-one else will be able to

Among Software Developers there is a distinct range of abilities and level of understanding that ranges from ‘ability to solve business problems’ and then on the other extreme is ‘ability to write compilers’. I’m not saying that if you are capable of writing compilers you cannot solve business problems, because if you work for a tools company that makes it’s money from developing compilers, you’re most likely in the right place.

The issue is, on the majority of software development projects, either in-house development or consulting engagements, you don’t often (if at all) find yourself solving anything technically that has the complexity of developing compilers. This is where the issue is with different developers on this ability/skill scale. For a developer who is entirely focused on solving business problems, and on a consulting project that is the reason you are there, this type of developer will have a hard time understanding why The Compiler Developer is inventing all kinds of wild and wacky technical solutions to problems involving every possible API and open source project they can find. The Compiler Developer on the otherhand has trouble understanding why The Business Problem Solver has no interest in investing time and budget in incorporating all these technical gizmos and doo-dads into the system that from The Business Problem Solver’s point of view just increase the risk to the project.

In reality I believe a project needs to have a good mix of ability to solve business problems and ability to use technology to best solve these problems, and it’s up to the management of the project to keep this balance healthy. If you swing the mix too rich in either direction I think you’ll have a hard time getting anything complete.

One of my most favorite quotes sums up the issues that can be created by leaving Compiler Developers to their own devices:

"Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're
as clever as you can be when you write it, how will you ever debug it?"

 

– Brian Kernighan, the ‘K’ in ‘K&R’ (Kernighan and Ritchie), co-developer of the C programming language, from http://en.wikiquote.org/wiki/Brian_Kernighan

Kernighan makes a great point, if you have developed something that is so complicated that you have no hope of debugging it, how will anyone else be able to understand it? This is why, unfortunately from the point of view to the Compiler Developers, you need to develop code close to the lowest common denominator of technical abilities on any project, otherwise you are potentially creating a maintenance nightmare for yourself or your client with code so complex that no-one is able to understand, maintain, or fix.

Apple tablet on the way for 2010

It’s been rumored for a while that there was a tablet-like device coming from Apple, and the latest rumors from sources say manufactures will have the device ready for early next year. The device is expected to cost somewhere between an iPod Touch and the low end MacBook, and be largely based around the iPod Touch.

Will the Google Andriod marketplace eventually outsell the Apple iPhone store?

Right now I have a crappy Windows Mobile phone. It’s a disaster of a phone since it hangs, crashes and at random times like when trying to answer an incoming call it becomes unresponsive. When my current contract runs out I’l be upgrading to something else, and never a Windows Mobile phone again.

As a software developer it bothers me that it is so restrictive to develop applications for the iPhone. I haven’t tried or looked into it, because I don’t want to invest time in the development language/tools to find out that my app is rejected, and therefore wasting my time. Google’s Andriod platform on the other hand to me as a Java developer is immensely attractive because I can develop in Java and run what ever apps I want on my the platform. Although I would love to have an iPhone because it would sync well with my mac, the attraction of the openness of the Android platform is pulling me in that direction, and I suspect that is where I’ll be going next for my next phone.

Reading Dion Almer’s blog, seem like he has the same opinions too.

Microsoft u-turns an releases 20,000 lines of driver code to Linux code base

I love it how Microsoft flip-flops about trying to find their way. At one time according to Microsoft there was no future in the internet and they decided to put all their effort into their own closed content dial-up information service (anyone remember the first MSN?). We know what happened after that with the reversal in strategic direction that followed shortly.

This week’s change in direction is the announcement that Microsoft are releasing 20,000 lines of code to Linux to help Linux run on Windows on Hyper-V, and take advantage on optimizations to help Linux run faster when running in a VM on Linux.

Huh? Err, Earth to Ballmer – you were intent on killing Linux, and I’m sure you don’t need reminding about that Open Source stuff that you referred to as a cancer to the software industry – you appear to now be helping Linux run on Windows? What on earth is going on up in Redmond! Are they planning a Microsoft classic ‘embrace, extend, extinguish‘ attack on Linux? If I were running Linux servers commercially I would be massively suspicious of running this Microsoft code on my Linux servers and would avoid it like the plague. I imagine others would have the same feelings too.