By working with some of the most successful tech-product companies, I realised that code is NOT an asset, it's a liability. We should strive hard to minimise code. In 2011, when I started to hack on ConfEngine, I questioned my belief in TDD. I had also started playing around with APL style Array-Programming and Functional Programming. I felt, may be, I was getting a bit too dogmatic about TDD and automated tests in-general. As a thought experiment, I decided to build ConfEngine without ANY automated test. At first, it was really scary not to have the safety-net of automated test (something I took for granted for almost a decade.)

As I scaled ConfEngine without any automated tests, I had certain interesting realisations:

  • How to embrace Simplicity and Minimalism WITHOUT automated tests
  • Why Throwing Away Code frequently helps you achieve a better decoupled-design and how this helps in better experimentation
  • Fear of Refactoring WITHOUT Tests is over-rated (Good IDE and safe-refactoring techniques can take you a long way)

ConfEngine grew from a pet-project to a 8 member product team. It has over 60K users and has done financial transactions worth over half-million USD. And we continue to push forward without ANY automated tests. Its not perfect, but it has certainly helped me challenge my dogma around TDD.

Background: In 2001, I stumbled upon the Test Infected paper. For the next 2 years, I struggled to really apply the test-first concept on real projects. Finally in 2003, I felt that I had fully internalised TDD and was able to apply on almost all projects. Then I started playing around with FIT and FitNesse, using ATDD on some of the projects. In 2006 I published "Avatars of TDD" paper in which I explained various styles of TDD and its design implications. Until 2011, I was a very big advocate of TDD, ATDD and BDD. I still like those practices, however I would not recommend it in all projects.

 
1 favorite thumb_down thumb_up 0 comments visibility_off  Remove from Watchlist visibility  Add to Watchlist
 

Outline/Structure of the Talk

  • Context/Background - 3 mins
  • Programming WITHOUT Automated Tests - 3 mins
  • Functional Programming and APL Style Array Programming - 5 mins
  • Impact of this style of programming - 5 mins
  • Lessons learned - 5 mins
  • Drawbacks/Limitations of this approach - 2 mins
  • Next Steps - 2 mins

Learning Outcome

  • How to embrace Simplicity and Minimalism WITHOUT automated tests
  • Why Throwing Away Code frequently helps you achieve a better decoupled-design and how this helps in better experimentation
  • Fear of Refactoring WITHOUT Tests is over-rated (Good IDE and safe-refactoring techniques can take you a long way)

Target Audience

TDD Practitioners, Programmers, Architects

schedule Submitted 1 year ago

Public Feedback

comment Suggest improvements to the Speaker