The pitfalls of GDD.
Over the years, I have sampled approaches to software development ranging from RAD, XP, Waterfall, Agile, Scrum, SOA, TDD, and have recently started looking more seriously at the BDD/DDD(D) camps. However, throughout my forays into this potpourri of acronyms and metaphors for programming, I continue to find myself falling back on the crutch of GDD – the least Agile and productive approach of all.
Yes, I’m referring to none other than the ubiquitous Google-Driven Development (GDD).
Its like when I first realized how dependent upon Intellisense I had become, except now I find that GDD is far worse since it is simultaneously more subtle, insidious, and disruptive. At least Intellisense tries (yet arguably fails) to help you get things done faster, but GDD despite its popularity and benign appearance is truly the greatest time-sucking vortex in the universe.
GDD dulls the developer’s mind, lulls us into a complacency about trying to solve problems ourselves – since by simply Googling, you can let others provide an answer for you. GDD is like dark-matter obscuring developers from grokking quality software engineering. It is the elusive Higgs-Boson particle of development that is driving us toward anti-productivity and mediocrity. It is the reason why aspiring developers’ growth often stalls mid-career, becomes stunted and eventually causes them to revert to (MS-style) demoware quality development rather than maturing into true software engineers, craftsmen, and thought-leaders of the industry. GDD is more subtle than the common-cold and a greater pandemic than H1N1, and it must be eradicated. [1]
Inevitably if we continue to abuse GDD, we may one day be faced with a future similar to that depicted in the fictional (yet highly plausible) movie Idiocracy where our development communities are filled with below-average developers and hacks who are ruled by a few barely-average people and their well SEO implemented code repositories.
Diagnosis
I implore you to perform this self-diagnostic test today to see if you too have acquired the GDD addiction:
Ban yourself from Google (and/or Bing) for 1 day…If you find that you struggle to produce code without searching for 3rd party libraries & open-source, notice a sense anxiety at being unable to find blog code samples, feel concerned that you cannot validate your ideas against posts in forums and sample apps, or cannot make coding progress without seeking out online API’s and reference sheets, then you too may suffer from Google Driven Development. [2]
Remedy
GDD is difficult to completely eradicate from our lives, however here is a proven 7-step approach that helps to reduce its harmful affects;
- Blank Browser - Change your browser start-page to about:blank (or equivalent) rather than a search page.
- Cleansing Period - Perform a 1 week cleansing period of total search abstinence.
- Moderation - Afterward, slowly reintroduce Google and other search tools with extreme moderation.
- Reward Abstinence - Reward yourself each time you successfully complete a task without search that normally you would have. (note: don't use GDD as a reward for GDD abstinence)
- Cheat Hour - Schedule one timed GDD Cheat Hour each week where you allow yourself to indulge in unadulterated hard-core GDD. (Note: make sure the 1 hour isn't exceeded)
- GDD Diary - Keep a log of how much time you use search tools for development. (Tools like RescueTime.com may help)
- GDD Monitoring - After 21 days of intense anti-GDD focus & moderation, open up your calendar and schedule 1-2 days of GDD abstinence each month to measure your progress. If abstinence of GDD still causes excessive anxiety, repeat these 7-steps.
Note: beware that its common to see GDD sufferers seek-out alternatives, or shift habits towards Twitter, StackOverflow, and other social networking sites. These are just variants on GDD, each with its own set of problems, thus should be avoided. [3]
Good luck!
[1] Okay, I’m not really saying never reuse code, but hey, try writing some stuff yourself first and at least you will better understand the problem rather than taking other developers’ word on how to solve it.
[2] There is obviously some truth in this post, but I really hope you don’t think that I’m totally serious and off my rocker with all this stuff. Its just a fun way of pointing out something we all know already, which is that we tend to go down rabbit-holes when we google anything, and waste more time googling and digging than it might have taken to write it ourselves in the first place.
[3] This is also a belated partial-rebuttal of Phil Haack’s 2007 post “Increase Productivity With Search Driven Development” in which he argues the value of Search for code/solution discovery. I don't even mention the risks to Intellectual Property and job security if you are a commercial product developer…