In the software development industry, solving customer needs can be the most challenging yet rewarding part of a programmer's job. Once a problem has been identified, most programmers jump in like eager warriors ready to attack. They propose a solution and make the necessary programming changes to see the problem to resolution. At a quick glance, this process sounds like a recipe for success. It helps mitigate scope creep, lets developers flex their intellectual muscles, and solves customer problems. Although these are true, is there a greater cost to this approach? If not, why isn't the Internet overflowing with gushing success stories of software development projects? The truth is, the number of struggling projects far outweigh their successful counterparts. Why is this? Because sometimes developers are too smart for their own good.
In problem solving knowledge is power, but it must be harnessed properly. In most circumstances a seasoned developer will provide a more complete solution than a newb simply on his/her breadth of knowledge. Although the proposed solution may meet the need, it's important to recognize how Pavlovian Conditioning plays a role in decision making. Pavlovian Conditioning is "a process of behavior modification by which a subject comes to respond in a desired manner to a previously neutral stimulus that has been repeatedly presented along with an unconditioned stimulus that elicits the desired response." Simply stated, developers have a predisposition to solving problems through the use of existing paradigms such as making recommendations that use existing software, tools, or programming languages. As Abraham Maslow stated, "If all you have is a hammer, everything looks like a nail."
Unfortunately, this problem solving blindness goes relatively unnoticed in the software industry. In fact, it is quite the opposite. Programmers are commonly encouraged to find technical solutions to problems. Although this can prove to be beneficial it also furthers a programmer's conditioning. The best way to attack Pavlovian Conditioning is not to fight it, but use it to one's advantage. Work to recondition the brain by asking the following questions:
How would this be solved if ...
- the problem had to be fixed immediately?
- the necessary time was given to provide a solution?
- unlimited budget and time were provided?
- it was too costly to make a programming change?
- the software wasn't programmed in ...?
- the solution had to be seamless?
These questions are meant to drive out multiple solutions to a problem. Some of these are intentionally non-technical in nature. Having these in hand, options can be weighed based on their importance, time, and need. Asking these and similar questions will make a positive impact on the decision making process. It can help projects avoid falling behind schedule by seeking easier and/or non-technical solutions to problems. When a project starts to feel heavy, don't be afraid to stop and ask the question, "Am I seeing too many nails?"