Saturday, May 24, 2008

Making the complicated simple

I love this. I believe it's true. At the heart of creativity is the ability to distill the most complex of subjects into something simple. Simplicity that motivates understanding in a way that pages of detailed descriptions can't convey. A complex idea can be wrapped up in a few words or a simple image.

Some things are not easy. Perhaps you need special skills or knowledge. But there are many things that are thought to be complex or difficult, that just don't have to be. Consultants in all fields are paid large sums of money to do things that are thought to be too difficult for the people hiring them to accomplish on their own. Are the consultants really that much smarter? In most cases, I don't think so. I think that often it's just easier (and less time-consuming) to pay someone to tell you something than to discover it for yourself. Successful consultants are successful because they can distill the complex into something simple.

As a consultant, I've often heard the people I'm working with say "well, that was easy." But, they said that after I pointed out the answer. I suppose you could say that everything is easy once you know how to do it, but the challenge is learning how to find the simple in the complex.

I think that's what good software does. It makes the complex, simple. Have you ever tried looking at raw trace data (Oracle event 10046 - extended SQL trace data)? Once you know what you're looking at, you can read it. But if you have to look at much of it, the volume becomes prohibitive to your being able to determine anything meaningful from it. That's why it's nice to have a software product that can make it simple. That's what our Profiler product does. I like that. It's cool to take a nearly 50 MB trace data file and within a few seconds have our Profiler turn it into this (click on the image to see a larger, readable image):

I was handed this profile last week. The event that consumed the most response time (41.9%) for the application being traced was CPU service, prepare calls. The code being traced executed 850,058 parse calls....ouch! I drilled down and saw this (again, click on the image for a larger view):

Do you see what I see? A boatload of single row DELETE statements. Again I say, ouch! This code was created to purge data. It was not performing optimally (duh!). It had been running poorly for months but nobody could see the simple answer. They were caught up in the complex requirements and their beliefs about how meeting those requirements had to be done. The answer was obvious. The answer was simple. But the answer had to be pointed out in a clear, unequivocal manner. The profile did that. Cool....

I like working for a company that wants to help people find the simple in the complex. As one customer said to me recently "it's like being given a flashlight in a pitch black cave."

Whether it's in your business or personal life, I think it's a good practice to follow. Work to make the complicated simple.

1 comment:

Jerry said...

Hallelujah Karen!

I must say that this one of my favorite blog entries of all time. I believe I will print it out and keep a copy on my desk (if you don't mind).

I am an Oracle DBA and have been thinking about this subject for a while. Not in the context of software, but in the context of just "being a DBA". The best DBA's I have known over the years can distill a complex issue into a simple statement. For a while in my career, I was concerned that if I simplified things too much, I would seem unintelligent. With age and experience, I have come to realize that this is downright silly!

Now I strive to state issues in plain English first... then if I need to talk Oracle internals later, fine.