Saturday, August 18, 2007

The Faster Computers Get, the Longer it Takes to Do Something

Moore’s law is often misquoted as processing power doubles every 18 months while the cost gets cut in half. The official version of Moore’s law states “the number of transistors on an integrated circuit for minimum component cost doubles every 24 months.” With the speed of hardware accelerating so quickly, why does it take longer to do something on a new machine?

Does Gate’s law hold the answer? Bill Gates did not create Gate’s law, but Microsoft does sometimes adhere to its base premise: Software generally slows by 50% every 18 months. The slowdown is due to additional software features and “code cruft.” Is this why it takes longer to do something every time you get a new machine? No.

Does Wirth’s Law explain it? Is software really decelerating faster than hardware is accelerating? Perhaps this is true sometimes, but not always. That’s not why things are getting slower either.

The root cause of actions taking longer on new hardware and software combinations is ease of use. Ease of use increases the number of times you have to click to do something. Each extra screen and subsequent click adds several seconds to a process. A second in computer time is an eternity. In fact, we are heading towards a global crisis: A horrible world shortage of mouse clicks!

The first time I tried Vista was its official release date eight months ago. It took an hour to find where everything had been moved. Thanks, 60 minutes I’ll never get back. However, not only was the location different, the process of doing something changed. The new processes forced me to click at least one additional time any time I wanted to do something.

Connect to a remote server running 2000 - one extra click. Switch how mail is setup in Office 2007? Several extra clicks. Change the IP address method from DHCP to a static IP? Extra clicks, a blue screen, and a complete rebuild to XP for stability. Thanks, 120 minutes I’ll never get back. Eight months and numerous updates later, Vista runs very quickly and reliably on my 64-bit dual core machine with 2 gigs of RAM. My new machine cost a little less than my last machine and is more than twice as powerful. However, still it takes longer to do anything because of the extra clicks.

OS X, while far more streamlined, has a similar phenomenon. Take mail for example. Adding a new account, the program tries to auto connect to the server. It you have changed the default server settings, you need to wait until the connection attempt times out for both POP3 and SMTP. Start any MAC Office program – up pops the Project Gallery requiring an extra click to get to create a new document. Time to hunt through the preferences to turn that off. Mail and Office: Thanks, another 20 minutes I’ll never get back. Again, it takes longer to do things because of extra clicks.

What is the driving inspiration behind adding clicks? Simply put: If you add extra screens to chunk information it will increase the ease of use. I once took a Ph.D. level class in system interface design and one thing it stressed was to allow the user to see only three to seven pieces of information at a time. This means more screens to display information. Of course this design pearl of wisdom comes with a cost: More clicks. Because of the click cost, we have reached and even surpassed the point of diminishing returns. Especially when you factor age into the equation.

The younger a person is, the higher the probability they are very computer literate. Stop chunking the information into such small easily digestible pieces. More pieces equal more clicks. It takes longer to do something. Most people using computers are intelligent regardless of their degree of computer literacy. It would be far easier on users to keep the process of doing something the same as the last version of the software. Users already know how to accomplish the same task the old way, why make it take longer by oversimplifying something they already know how to do?

Developers take note: Add new features and eye candy between versions, but avoid “cruft” and extra clicks with a vengeance. I fear if we continue down our current path, one day I will have a different screen and corresponding click to enter each letter of my username and password.

Tuesday, August 14, 2007

LinkedIn: It’s who you know and who you want to know

Sometimes with the crazed hustle and bustle of the day to day, it’s hard to stay in contact with old associates. That is, until you find LinkedIn.com. This website, part of the growing trend in social networking, makes it easy to reconnect and keep in touch with old contacts.

How? You can search for people you know automatically or manually. First you setup a profile that includes your work history and any groups you are in. That’s when the system goes to work. It searches everyone else’s profile and finds people who worked for the same companies at the same time you did. People in the same groups as you are also included in the results. Optionally, you can manually search for people by various criteria such as name, title, industry, etc.

What do you do with all the people you find? Ask them to join your network of contacts. You can also invite any unlinked person to join your network as long as you have his or her email address. This is the point where the LinkedIn creator’s intentions get a bit warped.

As you browse through the profiles of all the contacts you find, you come across two types of people. Those that will link to anyone and those that will only link to people they know. Some market themselves as social networking gurus, which may or may not be the case. They are open to adding everyone to their already impressive number of contacts. This is not what the creators intended.

In fact, intrigued by one person’s website, I went to join their open contact list. LinkedIn asked “How do you know this person?” and one of the choices is “I don’t.” Well, I didn’t know the person so that’s the choice I picked and submitted my link request. My request was denied. The redirect page listed all these reasons why you should only link to people you know. None of which I found very convincing. But then I thought about how the site is supposed to work.

The site is to let you track people you know and to provide recommendations to each other. LinkedIn is a business based networking site. At some point, when you switch jobs or submit some sort of proposal to a company, all of your contacts’ connections come in handy. Someone you know can recomend you to someone they know in the company you are interested in. The recommendation’s strength comes from the fact that the person introducing you knows you or a person you know and can vouch for you. If you don’t actually know the people in your contact list, the references lose their value.

On the other hand, consultants and headhunters should have large prospect lists. They don’t necessarily need to know all the people on that list, but may want to get to know them when a mutually beneficial opportunity comes along. I see nothing wrong with that.

In fact both sides of the coin have their place. I feel that Linkedin should listen to the market trend. They should add the ability to keep a secondary contact list. Each person can maintain people they know and don’t know separately. That way the original intent of the site is not lost and new “I may want to meet you” functionality is added. Linkedin may also be able to turn this demand into another revenue stream. Any day of the week, an extra revenue stream beats fighting a losing battle.

A few changes are all the creators need to make and everyone wins. As the saying goes it’s not what you know; it’s who you know. Perhaps it should read: As long as you know something useful, it’s not just who you know but who you want to know as well.

Monday, August 13, 2007

Adopting New Technology

The technology life cycle has three distinct phases:

Bleeding Edge: The technology is brand new and few companies adopt it.
Leading Edge: The technology is generally accepted and many companies adopt it.
Over the Edge: At this point whoever has not adopted the technology is potentially losing out in some way.

When you adopt a technology can make a big difference.

Not all businesses need every new technology; it really depends on your strategic goals. In general, it is best to be an early adopter when a technology useful to your business is just transitioning to leading edge. In general, avoid bleeding edge technology because it has higher costs, is more likely to have significant bugs, has a higher probability of being displaced by the next best thing, and is generally less understood. The exception to that rule is if you gain a significant strategic advantage from using a bleeding edge technology.

Waiting until a technology is over the edge puts you in a reactive instead of proactive position. This can leave you playing catch up with the competition without really getting the benefits of being an early adopter.

Sunday, August 12, 2007

Framework for System Analysis and Design

Determining the needs for a system is really the hardest part of the system analysis and design process. It involves far more than just picking the right piece of hardware and software. Needs determination requires “soft skills” long before you can design and build the system.

Any system, be it a technological or a human based business process, starts with interviews. All stakeholders must be interviewed for several reasons:

1. Each stakeholder may have different informational and operation needs.
2. Including stakeholders early in the design process overcomes objections and resistance. Furthermore, it develops a necessary trust and a sense of ownership that creates stakeholder buy-in.
3. Someone will inevitably point out a dimension of the system that you as a designer have missed. For a system designer, it’s sometimes hard to see the forest through the trees.
4. Interviewing all stakeholders provides a global view, which in turn, allows the designer to build the system correctly from the beginning. This means that missed functionality does not have to be patched on as an afterthought. Patching functionality makes the system more complex and far more likely to break.
5. The information gathering stage is the least expensive part of the design process. Once hardware and software are purchased, the roll out costs mount quickly. The more information and stakeholder buy-in culled from the beginning, the more efficiently the system can be rolled out.

The interview process should yield the following:

1. A list of inputs for the system.
2. A list of outputs for the system.
3. A list of business rules that determine how the inputs are processed.
4. A list of feedback loops to ensure data integrity. Each feedback loop entails a method to cross check data entering the system to make sure it is correct. Call it a system of checks and balances.

Data integrity is extremely important and often overlooked. Data integrity is an expansion of the garbage in – garbage out theory. If the data business decisions based on have an element of uncertainty, then the decisions inherit that uncertainty. The uncertainty may even be magnified. This often leads to costly mistakes.

An example would be predicting demand to decide on cyclic and safety inventory levels. You will never accurately predict the future so you know there is already uncertainty in your decision. Plus or minus 10% is usually considered a good error percentage for predicting inventory. If your data is accurate and you create your prediction, you then decide what level of safety inventory you need to cover the 10% of uncertainty.

Now imagine that your base data is incorrect. You expect your prediction to be off by 10%, but it is actually off by 50%. You commit the resources to either buying too much or too little inventory. If you buy too much, the probability it will become obsolete increases. If you buy too little, the probability of lost sales increases. Both potentially costly scenarios can be avoided by proper system analysis and design. Additionally, you now have to redesign your system to ensure your data is accurate. If a system is not designed right the first time, you will eventually build the system again. It is far better to roll out new systems that provide new business advantages than fixing systems that were not designed correctly in the first place.

Once the interview process is complete, you can translate the system needs into goals. Communicate the goals to all stakeholders and adjust them if necessary. The goals are then translated to project milestones and assigned dates. Each project milestone is then broken into sub steps and resources are assigned.

One milestone will always be actually designing the system. If it is a technical system, this will also involve choosing software and hardware. I cannot stress enough the importance of designing a system to be as simple as possible. Simple systems have higher uptime, are easier to troubleshoot, and are less prone to errors.

Which machine will have a problem first, the one with fifty moving parts or the one with a thousand moving parts? Simplicity is good. Simplicity works. Design the system as simply as possible to meet your needs.

For example, there is a lot of material written on data silos, separate islands of information in companies. The idea of a data silo is great as long as you only have one silo. A single silo means that all of your data is in one place so no interfaces need to be designed to cross connect data sources and ensure data integrity. A single silo is simple. It is easier to create, manage, and troubleshoot. The two obvious choices are a single data silo mirrored to multiple sites for redundancy or a meta-framework that seamlessly links multiple data silos into a single virtual data silo. The virtual data silo adds an entire layer of complexity. The extra layer potentially represents a whole new arena for things to go wrong. This increases support costs and can disrupt data integrity, which can lead to uncertainty in business decisions.

By following a few simple system analysis and design rules, new systems can be designed and rolled out with far greater efficiency. Define your needs long before you design the system. All stake holders need to be involved in the interview process. Plan feedback loops to ensure data integrity. Derive your system goals and translate them into project milestones. Design your system to be as simple as possible. Remember the acronym KISS: Keep it Simple Silly.