Computing power in personal computers, phones and PDAs has increased logarithmically during the last 20 years. Today’s mobile phones easily have 800MHz processors and several gigabytes of memory, which make them far more powerful than the supercomputers of the late 80s. Thanks to nanotechnology and other advances in silicon processing, the trend seems to be continuing.
But something has not evolved the same way. When I run the in-device search in my mobile phone and use it to match a single ‘Company’ record out of my 812 contacts, this trivial search takes 52 seconds. Most of my contacts contain less than four fields, predicting an average contact size to be less than 100 bytes. So my contact database should be about 100 kilobytes in size, with some overhead. (When I was 13, I wrote a student register system for my secondary school, containing 900 records. With 1 MHz processor, 32 kilobytes of RAM and a 170 kilobyte 5.25 inch floppy disk, the same task took 10 seconds.)
Inefficiencies of this kind are commonplace in modern appliances and new computer applications. The reason is quite simple: Lazy Programming. When a programmer suddenly has ten times more hardware resources at hand, optimization and smart algorithms fall out of favor. Throwing hardware at the problem is easier and may get the product out from the lab quicker, but there are consequences. These braindead functions and subroutines live on in the development code library, and manifest themselves again and again, just like hereditary diseases do.
Open Source ideology offers some remedies as an inefficient piece of code is usually quickly spotted by the community of peer programmers. However, the hereditary disease can strike there too, especially when the code is eg. a device driver for low-level hardware.
My hope for the return of a Smart Programmer is, however, on a concept of Cloud Computing. When computing resources are delivered as a service and thus shared by multiple customers, it again starts to make commercial sense to optimize resources, especially within the Cloud.
That being said, we always have a vacancy for an additional Smart Programmer. They are just hard to come by.