Understanding and Upgrading Vital Business Software
In a recent public example of how even the largest tech companies can become burdened by their own aging technologies, a recent Google employee says that the company uses obsolete software to run its search engine and other services.
The accusation comes from Dhanji Prasanna who helped lead the Wave team and recently left his job at Google. In a blog post on the subject he writes:
Here is something you've may have heard but never quite believed before: Google's vaunted scalable software infrastructure is obsolete. Don't get me wrong, their hardware and datacenters are the best in the world, and as far as I know, nobody is close to matching it. But the software stack on top of it is 10 years old, aging and designed for building search engines and crawlers. And it is well and truly obsolete.
Protocol Buffers, BigTable and MapReduce are ancient, creaking dinosaurs compared to MessagePack, JSON, and Hadoop. And new projects like GWT, Closure and MegaStore are sluggish, overengineered Leviathans compared to fast, elegant tools like jQuery and mongoDB. Designed by engineers in a vacuum, rather than by developers who have need of tools.
As for my thoughts on the subject, I'm usually fairly surprised when any company as large as Google is using a base framework that was built or rebuilt within the last decade. Even so, there are a lot of things we can do to avoid or alleviate these problems.
Not a Problem of Scale
Although I used Google as an example, this type of problem scales to almost every company of any size. Perhaps a "mom and pop" store is using an outdated system for managing their own accounting, simply because that's what they've been using since 1992. Or perhaps a company that employs a few hundred people is still using the same flimsy data reporting system that it patched together in Excel when the company only had 10 employees.
Regardless of where a company is now, there are always many benefits to upgrading the underlying systems that help your company run. But there are also risks and other factors that need to be considered as well.
Why Outdated Software is a Problem
Here's an example that I'm sure most people can relate to. My wife and I recently sold our 1997 Saturn SL1 that we had owned for the past 13 years. For the last several years we had talked about selling it, but every year it seemed that we put less in for maintenance that we would have for buying a new car.
Despite its great gas mileage, even by today's standards, it just didn't have all the features that we wanted out of a car. It didn't have automatic door locks (or a keyless remote), the windows had to be manually rolled up and down, and it had a tape player instead of a CD player or iPod dock.
This is very similar to the process of upgrading important software systems.
With software, we often trade off the cost of upgrading to a new system for the cost of maintaining an old one. But in the mean time we often miss out on more powerful features, better security, faster processing, and improved reporting and productivity.
For small businesses, this may just mean slower systems or less reliability, but may mean that you are paying your "computer guy" a lot to come in and fix problems regularly. For medium sized businesses this may mean keeping a larger IT staff, or risking incompatibility with external providers. But whatever the case, costs of outdated systems usually include:
Loss of productivity if the system is sluggish, unreliable, or difficult to use (roll up the windows, roll down the windows)
Loss of security if it runs on outdated systems or technologies, and cannot be upgraded (oops, I forgot to lock the backseat doors by hand)
Loss of competitive advantage if your competitors are using systems with better features, quicker reporting (try taking a client to lunch in a 13-year old car)
Loss of business agility as your core systems do not scale with your business needs, and are difficult or costly to manually expand (anti-lock brakes and cruise control were costly upgrades in 1997)
Sometimes we spend more, in terms of money, maintenance and time, working on the old system than we would by upgrading. Also, sometimes the software system we have just will not give us the features we need, such as added security through the software equivalent of automatic windows and locks.
Risks
There are two ways to evaluate risks when considering a new technology. There are risks for investing in a new system as well as reinvesting in an old one. These are:
1. Security Risks2. Technology Risks
Security Risks are pretty straight forward, but vital if you are using it as the foundation of a business system. This includes the security of the system itself, as well as the security of any supporting systems.
We see this in many real situations today. For example, about 20% of business users still use Internet Explorer 6 (IE6) - a notoriously insecure system - because businesses still have a web app that only runs on IE6, or they have not upgraded their base operating system past Windows 2000, which is also very insecure by today's standards.
Related to that are technology risks. This is the measurement of the long-term viability of a product or technology.
Imagine if you bought the technology equivalent of a Mazda RX7. Why that car? This particular car has a unique feature called pistonless rotary engine. It's so unique in fact, that there are very few mechanics anywhere that are able to provide maintenance for it. So if you bought or own a Mazda RX7 or RX8 - which are very good cars otherwise - you have to understand the increased costs associated with it, and the difficulty of fixing it should anything break.
This makes owning that type of car a risk. What happens if you cannot find a mechanic to work on it? And since those mechanics are in high demand, what happens if you can't afford their higher rates, or conform to their timeline?
Many businesses actually fall into the same trap. We buy or build based on a technology that one of the developers is familiar with or thinks will be good, and then get stuck after the technology is largely abandoned and rarely used anywhere else. This is also true for off-the-shelf software.
For example, if you are buying a piece of off-the-shelf software, it is important to consider how well supported that software is. Will the company patch problems, provide updates or release new versions? If not, will you be able to find someone that can fix the problem?
Off-the-Shelf SoftwareThese risks are one reason that off-the-shelf software is often a preferable choice for smaller companies. For example, let's say you started using QuickBooks to manage the accounting for your small business. Since its original launch it has been through 12 versions, continual upgrades and now has thousands of features.
As long as it still scales with what you need, it makes a great investment. However, if you put you your money into software systems like Lotus 1-2-3 or VisiCalc early spreadsheet programs then at some point you had to convert to new systems like Microsoft Excel because Lotus and VisiCalc stopped developing their product. This would have been costly and time consuming.
When considering off-the-shelf software, I advise looking at:
Is the underlying technology environment going to be supported for at least the next 5 years? Just as nobody would invest in a DOS-based system today, are there other risks of dying technologies that might cause problems for you in the future?
What is the underlying technology in the software? In 5 years, is the vendor going to be stuck with something they have trouble maintaining and supporting?
Is it scalable with your projected growth? Is this going to help or hinder your company as it grows?
Can it do 100% of what you need, and if not, is it customizable?
Most major office software products allow for customization. For example, you can build different modules or additions to the software that can add completely new features, new capabilities, and integration with existing systems.
A common example is Salesforce, a CRM system used by many major companies. Salesforce has a robust set of APIs that allow developers to build their own custom utilities and features that are unique to their needs.
Of course building those additions might require the skills and services of an experienced custom software developer, but often those customizations continue to function properly even as the underlying software is upgraded (or may just require minor reconfiguration and installation). This gives you the benefit of using the newest technology while still having the advantages that custom software provides.
A Quick Note About Startups
This could probably be its own blog, but it is also worth pointing out that many startup entrepreneurs plan their exit strategy around the hope of eventually being bought out. For tech companies especially, but also most other businesses as well, this will depend on the core framework of your business.
If you have a modern and scalable core infrastructure then you are more appealing for large businesses because they can easily expand your current business model without redeveloping the wheel. Even if it is just a slightly customized out-of-box system, it provides you with an intellectual advantage over using an outdated or poorly scalable solution.
No comments:
Post a Comment