I'm thinking about what it takes to write really good programs. I'm thinking about this a lot lately, because I want to earn a living writing really good, useful, soul searching programs. So let's talk about cucumber. I discovered cucumber about 10 months ago, right when it was starting to become usable. The team I was working with used cucumber for writing stories in their development cycle. The whole BDD/TDD development process was new (and still is new) to me at the time, but I was having fun, and it seemed to me that this cucumber thing was great fun. I had no idea what it really did.
I suppose you should be making fun of me, it's not after all, very reasonable to use a tool you understand nothing about, but I am a jump then look kinda guy when it comes to some things, and learning is one of them (sometimes). I did what any reasonable person does after discovering something shiny and nifty, I bought a book about it.
Actually, what I bought was a promise for a book, at a special discount. The simply named The Rspec Book is a great lil' book. It's not released yet, but it's in 'beta' mode. That means I get regular updates when Dave, or Aslak, or whoever updates the book. I got it round about version 4, it's on version 10 and set to release in it's final version in December of this year. I'll get a hard copy of the book once it's officially released too. Personally, I think that this is a great way to do publishing. Since this book was first announced/released, there have been several changes to the methodology of running cucumber and rspec. There have been minor syntax changes, new habits for namespacing, etc. The book remains current. I mean, it is seriously Agile (must be Italian)! It's easy to read if you are a n00b or if you are a wannabe (like me), and the support the guys give with the Rspec and Cucumber groups online is outstanding.
The book takes you on a journey through the methodology of Acceptance test driven planning, Domain Driven Design, and Test Driven Development. This triad forms the basis for Behavior Driven Development (BDD), a system by which good software 'emerges' from the process by writing the code that answers the questions users ask.
I'll leave you with that for now.
I :heart: you guys.
G. Brandon Hoyt