As a TDD practitioner and 
Expectations<https://github.com/jaycfields/expectations>user, I've been 
following this thread with great interest! 

@Jay: Will your change in thinking have any impact on Expectations?

My experience with TDD in Clojure has been an overwhelmingly positive one, 
and it seems like this thread might be a good place to discuss the subject 
with others.

RDD is an invaluable tool for evolving the shape of your functions, and 
it's a killer feature for REPL-based languages like Clojure. However, I 
mainly use RDD in the refactoring stage of TDD, and I still choose the 
overhead of writing tests before coding my solutions. Why do I do that? 
Well, I experience a number of benefits from TDD:

   - A very clear separation of thinking between requirements and solution
   - A constant focus on delivering the Minimum Viable Product
   - Documentation, in English, of the expected behaviour of a function
   - Documentation, in code, of example inputs and expected outputs of a 
   function (especially useful in a dynamic language like Clojure)
   - A continual reminder (and perfect opportunity) to refactor
   - A refactoring confidence boost (i.e. if all my tests are still green, 
   then I can be pretty confident in that refactor)
   - The little bit of serotonin released in your brain when you make the 
   next test turn green :-)
   - Finishing a session with a red test gives you a great starting point 
   for your next session and often helps you to get straight back into "the 
   zone"
   - A clear handover point if you're pair-programming

It's clear that developers who don't use TDD can (and do) develop extremely 
high quality solutions. However, for me personally, the list of benefits 
from doing TDD outweigh the cost of writing and maintaining the tests. I am 
a better programmer when I use TDD. I prefer jumping into other people's 
codebases when they have used TDD. I find it easier to get back into one of 
my own old projects when I've used TDD.

I also understand that most other programmers don't agree with me on this, 
which might mean that I'm wrong. :-)

Cheers,
James

On Tuesday, February 4, 2014 1:06:06 PM UTC+1, Jay Fields wrote:
>
> tl; dr: I'm presenting "Lessons Learned from Adopting Clojure" in 
> Chicago on Feb 11th: 
>
> http://www.eventbrite.com/e/goto-night-with-jay-fields-tickets-10366768283?aff=eorgf
>  
>
> Five years ago DRW Trading was primarily a Java shop, and I was 
> primarily developing in Ruby. Needless to say, it wasn't a match made 
> in heaven. Fast forward five years, Clojure is the second most used 
> language in the firm, and the primary language for several teams 
> (including mine). Clojure wasn't the first language that I've 
> introduced to an organization; however, it's unquestionably the most 
> successful adoption I've ever been a part of. The use of Clojure has 
> had many impacts on the firm: culturally, politically, and 
> technically. My talk will discuss general ideas around language 
> selection and maintenance trade-offs, and specific examples of what 
> aspects of Clojure made it the correct choice for us. 
>
> A few highlights 
>
> - Where to first introduce a new language and your role as the 
> language care-taker. 
> - REPL driven development, putting TDD's 'rapid feedback' to shame. 
> - Operations impact of adding a language - i.e. get ready for some DevOps. 
> - Functional programming, the Lisp Advantage, and their impact on 
> maintainability. 
>
> Of course, no good experience report is all roses. The adoption has 
> seen several hurdles along the way, and I'll happily to describe those 
> as well. 
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to