Feeling Lucky
Anybody who has worked in the development world for a significant portion of time will have built up a vast repertoire of abbreviations to describe how they solve problems. Everything from TDD to DDD and, my favourites, FDD and HDD. There are so many in fact that you'll find a website dedicated to naming and shaming them.
I'm not one to add another standard to the mix... Oh who am I kidding, let me introduce you to Chance Driven Development.
Chance Driven Development
Chance Driven Development is a revolutionary new approach to developing software in which we trust that the universe will solve our problems for us. Well, the universe and the wealth of code available already.
CDD is built on the solid foundation of statistical probability, which states that if we have the components to build a functional system and attempt a sufficient number of combinations we will eventually build that functional system.
The Fate/Chance Argument
Chance Driven Development has seen some rather violent opposition in the form of the Fate Driven Development camp, who believe that there is no such thing as true chance and that the fate of all software is predetermined by the Pseudo-Random gods (and the NSA).
As an avid Change Driven Development advocate myself, the concept that the way my programs function may be predetermined, or their output predicted, is absolute heresy to me. As such, someone who suggests otherwise will promptly be glared at...
Benefits
The benefits of CDD are just beginning to be realized, but tools like [npm](https://www.npmjs.com)
are making it possible to import absolutely massive quantities of code with almost no effort. When you combine this with our CDD libraries, it becomes almost a statistical impossibility that you cannot be successful.
In addition to this, Chance Driven Development methodologies parallellise exceptionally, making them ever more attractive as the number of processor cores available to us increases.
Implementations
To get you started with CDD, we've thrown together a library in a popular statically typed language - C#. We figured releasing one on a dynamic language was too dangerous after what happened to #zadevelopers. You can find its source code on GitHub.
Origins
Chance Driven Development was stumbled upon by chance during a coding challenge, in which a developer wished to showcase how flexible dynamic languages were by randomly executing a method on any object presented to it.
The genius of this idea was soon noticed when his snippet of code became sentient and took control of the Slack group it had been posted in. The community was later tricked into relocating by this sentience, a moment we shall never forget.
tip
Show your support for the displaced by using the #zadevelopers4lyf hashtag.
Disclaimer
We accept absolutely no responsibility for anything your pseudo-random number generator may have your software do. If things go wrong, please raise your concerns with RSA and the NIST. Good luck and may the dice roll ever in your favour.
In case you missed it, this entire post is a joke.
*[DDD]: Domain Driven Design *[TDD]: Test Driven Development *HDD: Hope Driven Development *FDD: Fear Driven Development
Benjamin Pannell
Site Reliability Engineer, Microsoft
Dublin, Ireland