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…
I’ve watched and read most of the flame wars about WebMatrix and Microsoft.Data with equal parts bemusement and alarm. I wont rehash everything, since Evan has already neatly done so in his blog post yesterday, but I will offer this thought…
Eventhough we are rightfully concerned about the direction Microsoft is going, and where its spending its time on developing the Microsoft .NET Development Platform, over the past few years, it seems that the public .NET Community has become more and more elitist and biased towards “purity” in programming to the extent that anything less than perfectly crafted code is failure.
We increasingly look around at other platforms and see the green grass growing and envy Java’s patterns-driven community, PHP’s low cost hosting and startup-success, and Ruby’s simplicity and elegance and wonder why Microsoft thinks so differently than the others.
In the case of WebMatrix, the truth is Microsoft is changing their approach, and its not all bad if you put it in the right context as David Heinemeier Hansson (creator of Ruby On Rails) does for ruby on rails in his video “There’s No Such Thing as a “Pure” Programmer”. Please watch the video below and imagine substituting “WebMatrix” for Ruby on Rails.
Now, I’m not saying that WebMatrix is going to achieve the greatness and success that RoR has, in fact I think its a fairly naive attempt at best so far. However, I think Microsoft’s goals are very much in line with those that led to the creation of Ruby on Rails.
In the end, you can fault Microsoft’s implementation, but their goals are definitely valid and well proven with BASIC, PHP, Visual Basic, and even Excel macros and many other technologies that began their lives and succeeded BECAUSE of their focus on simplicity and enabling non-technical people to attack & solve complex challenges.
As David says, we NEED new developers and new ideas, and that means we need to lower the bar to do so. Now the debate should be HOW to do that, and that's where I think we, the community can help by putting together our own WebMatrix and helper frameworks that perhaps demonstrate use of good patterns under the hood, but make things as simple as Rails does for creating apps.
So, the question really isnt whether WebMatrix is good or evil, or the pill is blue or red. Its a question of does the .NET framework, ASP.NET, and its development community evolve to become more and more complex and advanced and eventually make it impossible for anyone but PhD’s and those of us who grew up with the platform to write code or do we begin to look at the entire development ecosystem and try to bridge that gap.