Is this just “test && commit || revert”?

Keep/Scrap Development is an idea that is directly inspired by Kent Beck’s test && commit || revert. It’s the idea that if your code does not instantly work, it shold be scrapped. You only keep the work that passes the tests.

I was interested in this idea both as a teaching tool using Swift Playgrounds and a full development methodolgy. After being inspired by Kent Beck’s video, I decided to see if I could create the tooling to make this possible in an Xcode and Swift environment. Well, after about a week of obsesison and trying out all sorts of automation hacks, I made a pretty good set of tools that enabled Keep/Scrap in a Swift Playground.

test && commit || revert does away with the doctrine of always having correct tests but I also wanted to do away with the idea of using git. For all its ubiquity, git is a vastly complex, barely understood tool that trips me up almost weekly. It’s not something I want to introduce novices too. So the name was beginning to both feel too techincal for this amazing idea and tied itself directly to git.

For a while, I settled on Play, Keep or Scrap as it uses layman’s language directly analogous to the original name. But it was still a mouthful. I thought that the idea of play was important as I was using Swift Playgrounds which are run using a ▶️ button and the technique encourages playfulness. Repeatedly saying Play, Keep or Scrap became a mouthful so I started shortening to Keep or Scrap. I managed to mispronounce this as Keep or Scrape several times in my video about building a fibonacci function so even this was troublesome for me.

Whilst reviewing my notes, I noticed that I had started using Keep/Scrap. This works for me. The / echoes the | in test && commit || revert but has the advantage of being common vernacular whilst not needing to be escaped in markdown. I’ve made several tables accidently by typing ||.

This is why I am trying out the term Keep/Scrap Development to describe what I am doing.