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, FDDopen in new window and HDDopen in new window. There are so many in fact that you'll find a website dedicated to naming and shaming themopen in new window.

I'm not one to add another standard to the mix... Oh who am I kidding, let me introduce you to Chance Driven Development.

XKCD Standardsopen in new window

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 NSAopen in new window).

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 GitHubopen in new window.

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 RSAopen in new window and the NISTopen in new window. 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 *HDDopen in new window: Hope Driven Development *FDDopen in new window: Fear Driven Development

A picture of Benjamin Pannell

Benjamin Pannell

Site Reliability Engineer, Microsoft

Dublin, Ireland