From "3 posts in 3 days" to 1 post in 1 week, I hate being a fickle blogger. Alas, like many RoRers, our Rails project is a part time affair, and this week other work was paying the bills.
Also contributing to my IDE-absence is last weeks addition of a valuable new Dev team member, referred to herein as Voon (for reasons that shall remain unclear). Unlike this pretender, Voon's got the goods: solid web app development experience, strong knowledge of a variety of programming languages and methodologies, and a keen interest in using Rails. We're lucky to have him.
On arrival, Voon introduced us old-schoolers to the concept of Test Driven Development (TDD). The software development process lying at the heart of XP, TDD focuses on developing incremental chunks of system functionality by writing test code before real code. These tests are effectively executable system requirements. Write them first, and you end up with "Code that works". More importantly, refactoring is easy and safe - your regression tests are already there. So, the theory goes, you end up with "Clean code that works".
Of course, this approach mandates you know your requirements. A statement of the bleeding obvious perhaps, but here's the key: in TDD, the test documents the requirement. So before (and while) you code, you need to know not only what system functionality is required, but how it can be tested.
Why the hell am I writing all this? Voon's introducing TDD has forced us to stop arsing about and focus on documenting our requirements in solid testable User Stories. And that, my friends, is a Good Thing ™.
Any thoughts or experiences employing different software development methodologies? Feel free to comment...