On Programming: Lateral vs. Vertical Thinking
This is an issue that I personally deal with almost every day: How developers approach a programming problem from the standpoint of THINKING.
I bring this up because recently a co-developer asked for my help with overriding a base class property in an RSS library, and it turned out that the version of the library he was using was, more or less, defunct. Yet this individual doggedly continued to try various ways to override a base class property of type Image that returned a string, and wanted to try to coerce this in some way (programmatically) to return a different type without having to disturb the base class library. This was ostensibly because the base type was already baked into a production application that used it, and he now wanted to be able to modify it without changing the base class library.
We, as programmers ("Developers", if you prefer) -- are paid to THINK. The way we think has, in great part, a deterministic influence on what we produce -- how innovative it may be, how well - suited to the problem domain, and how effective and profitable our efforts may be to the end user. That end user might be your boss, or your company, the customer, or the general visitor from the Internet, as the case may be.
Many programmers simply have not learned how to THINK. Thinking is a science, and it can be learned through study of the right materials. Comprehensive thinking is simply NOT something that you are born with. You actually have to study and learn correct thinking strategies.
Americans have a great propensity to use only vertical thinking techniques -- or logical / critical thinking. You could characterize vertical thinking as continuing to dig a deeper hole to try to get under a fence. It's tunnel-vision, characterized by a somewhat rigid, resisting change "this is how we solve problems" development process.
Lateral Thinking is:
- seeking to solve problems by apparently illogical means
- a process and willingness to look at things in a different way
- a relatively new type of thinking that complements analytical and critical thinking
- a fast, effective tool used to help individuals, companies and teams solve tough problems and create new ideas, new products, new processes and new services.
- a term that is used interchangeably with creativity
Lateral Thinking, a technique pioneered by Dr. Edward De Bono, is a way of thinking that seeks a solution to an intractable problem through unorthodox methods or elements that would normally be ignored by logical thinking.Edward de Bono divides thinking into two methods. He calls one 'vertical thinking' that is, using the processes of logic, the traditional-historical method. He calls the other 'lateral thinking', which involves disrupting an apparent sequence and arriving at the solution from another angle.
When you are faced with fast-changing trends, fierce competition, and the need to work miracles despite tight budgets, you need Lateral Thinking. I began studying and practicing lateral thinking techniques over 20 years ago, and I continue to find myself going "back to the Master's teaching" on a regular basis. Over 20 years ago, I once checked out from a library (and never returned) one of Dr. De Bono's first books, the dog-eared copy of which remains in my library.
I'm not going to launch into a dissertation on why you should study Dr. De Bono's (and others') Lateral thinking techniques -- you can find plenty of good material, including audio books by De Bono and others, quite easily.
However, I will say this: Lateral Thinking techniques are proven to result in innovative new concepts in business and software development, and if you are not familiar with them, you owe it to yourself to devote some study to learn about the techniques.
A good place to start is De Bono's "Six Thinking Hats", which is available on audiobook (mp3) and in print.
So, putting on my Green Thinking Hat, I suggest we need to spend more time studying how to creatively come up with ideas for this solution.