The world of software development can seem like an endless supply of thoughts and dreams that can keep even the most chronic insomniac hitting the snooze button for hours. Technology seems to change by the minute and with it new ideas that overcome previously insurmountable hurdles. Although many successes are seemingly interlaced with failure, some find ways to endure and grow. Why is that? One common area of growth is a developer's analytical abilities. In a developer's early years there is a heavy focus on building skills for analyzing needs while sharpening their overall software skills. Over time some programmers will start to develop a sixth sense of skepticism.
Although this ability is not foreign to most, some begin to utilize it at an accelerated pace in development decisions. Like the tale of most comic book characters, programmers have a choice. They can use this newly strengthened ability for good or evil. Skepticism under the right microscope can be an invaluable asset during the evaluation process. It provides a counter-balance to assumption. Most seasoned developers can speak to the trouble caused by taking things at face value. Skepticism is the unofficial poster child for defensive programming wherein software is designed with the anticipation that it will be misused.
To clarify, skepticism is neither a trump card nor a tax-free exemption from time lines, resources, or budget limitations. These areas must still be respected. Skepticism can be a valuable tool in a developer's tool belt, but like most tools it is only needed at certain times. Using a hammer to remove a screw is an ineffective use of one's options. Being skeptical should also not be a crutch. Developers should hold each other accountable when concerns are raised. Using skepticism as an excuse or a political tool to fearmonger or gain favor is also a misuse of this resource.
A key word in the previous sections is balance. It's important to have a "healthy sense of skepticism." This uncertainty should be harnessed in an effort to drive out better decision making. Having an imbalance of assumption to skepticism may cause unintentional blindness on either side of the equation. Additionally, some developers may have a tendency to let skepticism devolve into negative thinking or condescending behavior. These are leading indicators that someone's skepticism might have taken a turn toward cynicism. This is where pragmatic thinking gives way to pessimistic attitudes and poor decision making. Be sure to guard against this path and use skepticism for good.