A few months ago, I was talking to a developer and we jokingly landed on the idea of Stack Overflow Driven Development (SODD). Before long, we had concluded that there was a lot of SODD going on the IT world today and even decided to write SODD in the corner of our room's whiteboard. While this was communicated with a humorous twist, I've since realized that SODD appears to be a way of life for more developers than I originally expected.
What Is SODD?
Stack Overflow, a web site owned by Stack Exchange, Inc., was launched in September 2008 by Joel Spolsky and Jeff Atwood. The web site allows individuals to submit questions and provide answers to existing questions. Members maintain a rank by their participation (adding questions, answering questions, up-voting answers, etc.). At the time of this article, Stack Overflow had 11 million questions, 18 million answers and 45 million comments. In the past, Stack Overflow was noted to have answers to questions within 11 minutes. Stack Overflow is a very active community to say the least.
The biggest value is how Stack Overflow provides search results when performing a Google search. As an example, when I searched Google for "java.lang.NullPointerException", after the one sponsored Ad, the results contained a link to Oracle documentation and then a Stack Overflow article.
Most of the time, Stack Overflow is the first item in the search results — especially when posting a full error message into the Google search box.
The idea of Stack Overflow Driven Development (SODD) is that developers primarily rely on Stack Overflow to perform their daily tasks. In addition to resolving unexpected errors, they may browse Stack Overflow to gain ideas on how to approach a given business need.
How SODD Is Good
As one might expect, the SODD approach has some benefits. The biggest is that individuals can often find the answer they are seeking quickly. As I noted above, using Google often leads to several Stack Overflow threads that can be helpful to diagnose or resolve the issue at hand. The alternatives (reviewing documentation, seeking assistance from a co-worker, etc.) rarely produce results that are as efficient as Stack Overflow.
Another benefit with SODD is that it reduces the depth of knowledge required to meet a given goal. I recently started looking at Business Process Management applications and JBoss jBPM was a solution that caught my eye. Searching Stack Overflow, I found an article entitled "Benefits of using jBPM" that contained three answers that all provided value to me. (I wish I had performed this search a few weeks ago.) Because others took the time to provide their insight in the well-designed Stack Exchange user interface, readers can quickly gain knowledge at the topic at hand. The approach I took with reviewing JBoss jBPM was to review a great deal of material published by JBoss. I wonder just how much deeper my knowledge is compared to if I had relied on Stack Overflow.
Why SODD Probably Isn't The Best Idea
While the benefits to SODD yield short-term results, there are long-term concerns I have with SODD.
The biggest concern that I have is that SODD doesn't always lead to the best code being introduced into your environment. This is true when developers copy and paste the Stack Overflow code directly into their application. While seasoned developers are better at avoiding this approach, the market is comprised of developers at all skill levels. Unless there are proper code reviews in place, this code can added, compiled and forgotten about quite quickly.
SODD may also increase technical debt in your environment. Of course, this is an unexpected side effect. As an example, a developer may find a solution on Stack Overflow that is linked to a third party library. While the library works great, a dependency now exists in the code to the library. Down the road, updates to the core application libraries may be held up, due to the library that was put into place for maybe not the best reason.
Lastly, because SODD provides the benefit of a reduction in knowledge depth, the solution itself may not be the right or best solution. The solution met the need or fixed the bug, but if the individual had more knowledge of the topic at hand, there is a higher likelihood that a better solution would have been implemented.
Our team laughed when we wrote SODD in the corner of our team's whiteboard. The jokes continued as we referenced that same corner space when working on fixing unexpected bugs or issues. However, the reality is that SODD is a real approach and can provide benefits to developers across a wide range of topics. My recommendation is to keep SODD at the right level and not make it your primary approach to development.
Lastly, my favorite thing about Stack Overflow, has to be the "Hot Network Questions" section on the right-hand side of the screen. The questions span all areas of Stack Exchange. Just this morning, I saw the active question of "Why does everyone think that the Millennium Falcon is a piece of junk?" Certainly, some of the answers (both serious and humorous) were comical to me.
Have a really great day!