<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-11200164.post5447043298856733861..comments</id><updated>2007-03-29T05:44:10.704-04:00</updated><category term='Python'/><category term='Performance'/><category term='Architecture'/><category term='Evars'/><category term='Hibernate'/><category term='AJAX'/><category term='String'/><category term='Parsing'/><category term='Pragmatic'/><category term='Beer'/><category term='Future'/><category term='Concurrency'/><category term='Programming'/><category term='Felix'/><category term='event sourcing'/><category term='Web Development'/><category term='Opinion'/><category term='Scala'/><category term='Community'/><category term='Collections'/><category term='TDD'/><category term='Server Side'/><category term='hardware'/><category term='Software Development'/><category term='URL'/><category term='UML'/><category term='XML'/><category term='Modeling'/><category term='Design'/><category term='Java VM'/><category term='Java'/><category term='Data Driven'/><category term='Null'/><category term='Extreme Programming'/><category term='Refactoring'/><category term='Open Source'/><category term='OPath'/><category term='Competition'/><category term='Loud Thinking'/><category term='PyConsole'/><category term='Linux'/><category term='Eclipse'/><category term='How-to'/><category term='Debug'/><category term='Tooling'/><category term='Frustrations'/><category term='Non-tech'/><category term='Patterns'/><category term='blogging'/><category term='Ant'/><category term='Gargbage Collection'/><category term='Optimization'/><title type='text'>Comments on Nirav's Contemplations: Six reasons why TDD is necessary</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.nirav.name/feeds/5447043298856733861/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11200164/5447043298856733861/comments/default'/><link rel='alternate' type='text/html' href='http://blog.nirav.name/2007/03/six-reasons-why-tdd-is-necessary.html'/><author><name>Nirav Thaker</name><uri>http://www.blogger.com/profile/07204297663478577248</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_PebfjbIpLKY/SYO5wL9XgUI/AAAAAAAAByY/MhgUWfUq5Hc/S220/DSCN1212+-+Copy.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11200164.post-5411263765767805383</id><published>2007-03-29T05:21:00.000-04:00</published><updated>2007-03-29T05:21:00.000-04:00</updated><title type='text'>I admit I have never practiced TDD on any non-acad...</title><content type='html'>I admit I have never practiced TDD on any non-academic project where I was not just exploring TDD. But I will speak based on what I learnt from these projects as well as other projects where I did not employ TDD.&lt;BR/&gt;&lt;BR/&gt;"None of these reasons really explain why we should be writing our tests first."&lt;BR/&gt;&lt;BR/&gt;Yeah, the reasons in the post are really more about tests in general and not about TDD specifically.&lt;BR/&gt;&lt;BR/&gt;"And writing tests last feel a lot more intuitive and less impractical (e.g. IDE problems) to most developers."&lt;BR/&gt;&lt;BR/&gt;While at face value this seems right, I don't think writing tests first needs to be awkward. If you're like me, as you write code, you have a general idea of the immediate goals you are trying to achieve with the code. For example, if you were writing a XmlWriter class, you know the output it would need to produce given some input DOM tree. And this is generally the case - you have at least a basic idea of the inputs and outputs for the portion of code you are working on at the moment. TDD is just a way to formalize these ideas that are sort of floating around your head already and are already guiding your design and code. It gives you something more concrete while you design and develop.&lt;BR/&gt;&lt;BR/&gt;"TDD is clearly unnecessary, as working code predates TDD."&lt;BR/&gt;&lt;BR/&gt;Design, UML, XP, other Software Engineering practices are clearly unnecessary, as working code predates them. TDD is another practice in the Software Engineering toolset. It can &lt;BR/&gt;&lt;BR/&gt;"If you tell me to write a test for a thousand line C# method, I can write a simple one. Run the method. Does it throw an exception? No? Ok, passed. It's an awful test, but most are."&lt;BR/&gt;&lt;BR/&gt;I think this is the same point you are trying to make but I'm not sure - one of the benefits of TDD is that it gets you to avoid writing code where there is one big method that really should not be one big method. When you write the tests first, you have to design in such a way that you have manageable units to test.&lt;BR/&gt;&lt;BR/&gt;"For example, in most of my tests, I call ContextUtility.debugContext(), which gives me a Context object, but that Context object is suitable only for running tests."&lt;BR/&gt;&lt;BR/&gt;Nothing wrong with mock objects for tests. More below.&lt;BR/&gt;&lt;BR/&gt;"Writing tests first limits your ability to quickly evolve new code"&lt;BR/&gt;&lt;BR/&gt;Drawing on a point from above - having tests first is really a way to have something more concrete from the beginning. It means more rigor. When you design your software system without having tests first, you will already have an idea of how the various objects in your system interact with each other and the external environment. The tests are a way to bring the ideas from your head into actual code. For example, when you create a mock object interacting with some other set of objects, you have something in code which describes and tests the way the objects under test are supposed to behave in your design.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11200164/5447043298856733861/comments/default/5411263765767805383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11200164/5447043298856733861/comments/default/5411263765767805383'/><link rel='alternate' type='text/html' href='http://blog.nirav.name/2007/03/six-reasons-why-tdd-is-necessary.html?showComment=1175160060000#c5411263765767805383' title=''/><author><name>Ravi</name><uri>http://www.blogger.com/profile/00218631193242764335</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.nirav.name/2007/03/six-reasons-why-tdd-is-necessary.html' ref='tag:blogger.com,1999:blog-11200164.post-5447043298856733861' source='http://www.blogger.com/feeds/11200164/posts/default/5447043298856733861' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1460325150'/></entry><entry><id>tag:blogger.com,1999:blog-11200164.post-1126131315630754230</id><published>2007-03-28T11:01:00.000-04:00</published><updated>2007-03-28T11:01:00.000-04:00</updated><title type='text'>"Writing tests first limits your ability to quickl...</title><content type='html'>"Writing tests first limits your ability to quickly evolve new code"&lt;BR/&gt;&lt;BR/&gt;Don't agree with this assumption, nothing limits your ability to evolve the code/design, for example, refactoring demands TDD as the basis for evolving code. I've done mammoths refactoring without writing tests first and I know the regression impact and pains of it beyond words. Generally beloved "test last" isn't of any significant help in such scenarios,  but of greatly frustrating.&lt;BR/&gt;&lt;BR/&gt;Any sufficiently good developer will not write as simplistic test as you mention without writing test (validating preconditions), writing good tests are implied. &lt;BR/&gt;&lt;BR/&gt;You'll sensibly achieve granular pieces of methods, but without tests backing it up, how is it assured that it works the same way as it was in a single method? people generally don't have luxury of repeating trial and error.&lt;BR/&gt;&lt;BR/&gt;N00bie can be inducted, and It's not very good reason to avoid believing tests are not understandable, unless the "new" is out of programming world.&lt;BR/&gt;&lt;BR/&gt;Well your "print to console" example is fairly trivial, I don't see any sign of testability there as well.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11200164/5447043298856733861/comments/default/1126131315630754230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11200164/5447043298856733861/comments/default/1126131315630754230'/><link rel='alternate' type='text/html' href='http://blog.nirav.name/2007/03/six-reasons-why-tdd-is-necessary.html?showComment=1175094060000#c1126131315630754230' title=''/><author><name>Nirav</name><uri>http://www.blogger.com/profile/07204297663478577248</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_PebfjbIpLKY/RgV4wTXO_yI/AAAAAAAAANE/qnoTeTLPby4/s320/DSC00066.JPG'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.nirav.name/2007/03/six-reasons-why-tdd-is-necessary.html' ref='tag:blogger.com,1999:blog-11200164.post-5447043298856733861' source='http://www.blogger.com/feeds/11200164/posts/default/5447043298856733861' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1065815620'/></entry><entry><id>tag:blogger.com,1999:blog-11200164.post-3139169032272863895</id><published>2007-03-28T10:34:00.000-04:00</published><updated>2007-03-28T10:34:00.000-04:00</updated><title type='text'>@Cedric&lt;br&gt;&lt;br&gt;Agree to "most of the points are ab...</title><content type='html'>@Cedric&lt;BR/&gt;&lt;BR/&gt;Agree to "most of the points are about tests and not TDD in it's real sense", but my primary motivation of practicing TDD has always been making testable designs. I don't agree that developers can be test conscious by default, it's a myth! &lt;BR/&gt;&lt;BR/&gt;I used to write tests and code parallely (more or less, code first), then I found myself getting into the loop of "IDE Refactoring" the code and failing "old" (stale) test cases.&lt;BR/&gt;What's the use of those tests, if they are not doing what they are supposed to? had I always been following TDD, would it not always be useful?&lt;BR/&gt;&lt;BR/&gt;On your generalization "test last is more intuitive and less impractical" :&lt;BR/&gt;&lt;BR/&gt;"Test last" may be intuitive because most of the developers write them for verification that it works and not for making it testable, and about practicality of it, just try it out....</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11200164/5447043298856733861/comments/default/3139169032272863895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11200164/5447043298856733861/comments/default/3139169032272863895'/><link rel='alternate' type='text/html' href='http://blog.nirav.name/2007/03/six-reasons-why-tdd-is-necessary.html?showComment=1175092440000#c3139169032272863895' title=''/><author><name>Nirav</name><uri>http://www.blogger.com/profile/07204297663478577248</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_PebfjbIpLKY/RgV4wTXO_yI/AAAAAAAAANE/qnoTeTLPby4/s320/DSC00066.JPG'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.nirav.name/2007/03/six-reasons-why-tdd-is-necessary.html' ref='tag:blogger.com,1999:blog-11200164.post-5447043298856733861' source='http://www.blogger.com/feeds/11200164/posts/default/5447043298856733861' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1065815620'/></entry><entry><id>tag:blogger.com,1999:blog-11200164.post-1036255641169483057</id><published>2007-03-28T10:12:00.000-04:00</published><updated>2007-03-28T10:12:00.000-04:00</updated><title type='text'>@Vamsi&lt;br&gt;&lt;br&gt;Yes, You are right, TDD always pays ...</title><content type='html'>@Vamsi&lt;BR/&gt;&lt;BR/&gt;Yes, You are right, TDD always pays off. Well, I agree it's not matter of application being big or small, its equally good for small (non-trivial)applications.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11200164/5447043298856733861/comments/default/1036255641169483057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11200164/5447043298856733861/comments/default/1036255641169483057'/><link rel='alternate' type='text/html' href='http://blog.nirav.name/2007/03/six-reasons-why-tdd-is-necessary.html?showComment=1175091120000#c1036255641169483057' title=''/><author><name>Nirav</name><uri>http://www.blogger.com/profile/07204297663478577248</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_PebfjbIpLKY/RgV4wTXO_yI/AAAAAAAAANE/qnoTeTLPby4/s320/DSC00066.JPG'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.nirav.name/2007/03/six-reasons-why-tdd-is-necessary.html' ref='tag:blogger.com,1999:blog-11200164.post-5447043298856733861' source='http://www.blogger.com/feeds/11200164/posts/default/5447043298856733861' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1065815620'/></entry><entry><id>tag:blogger.com,1999:blog-11200164.post-7116391464972456271</id><published>2007-03-28T10:03:00.000-04:00</published><updated>2007-03-28T10:03:00.000-04:00</updated><title type='text'>"Writing tests first limits your ability to quickl...</title><content type='html'>"Writing tests first limits your ability to quickly evolve new code."&lt;BR/&gt;&lt;BR/&gt;This is a strawman. It has nothing to do with the testability of code, and is not necessarily true. &lt;BR/&gt;&lt;BR/&gt;I do see where you're coming from. How can writing a test, then writing code to pass it, then refactoring the code and its tests be more efficient than simply refactoring the code until you're happy with it before finally writing the tests? &lt;BR/&gt;&lt;BR/&gt;The answer is that writing tests first ensures test coverage of your most important code, and provides a safety net for the refactoring. If your units are small enough, the tests should be trivial and not likely to prevent quick evolution of new code.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11200164/5447043298856733861/comments/default/7116391464972456271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11200164/5447043298856733861/comments/default/7116391464972456271'/><link rel='alternate' type='text/html' href='http://blog.nirav.name/2007/03/six-reasons-why-tdd-is-necessary.html?showComment=1175090580000#c7116391464972456271' title=''/><author><name>Jeremy Weiskotten</name><uri>http://www.blogger.com/profile/01868696039970401724</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.nirav.name/2007/03/six-reasons-why-tdd-is-necessary.html' ref='tag:blogger.com,1999:blog-11200164.post-5447043298856733861' source='http://www.blogger.com/feeds/11200164/posts/default/5447043298856733861' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-640841106'/></entry><entry><id>tag:blogger.com,1999:blog-11200164.post-8746282025012497041</id><published>2007-03-28T07:25:00.000-04:00</published><updated>2007-03-28T07:25:00.000-04:00</updated><title type='text'>&lt;i&gt;"TDD is clearly unnecessary, as working code pr...</title><content type='html'>&lt;I&gt;"TDD is clearly unnecessary, as working code predates TDD."&lt;/I&gt;&lt;BR/&gt;&lt;BR/&gt;Disagree.&lt;BR/&gt;&lt;BR/&gt;What if you break your working code unintentionally?&lt;BR/&gt;&lt;BR/&gt;When you have a huge code base, a huge network of objects interacting with each other, you make change in one class how do you ensure that no other code is broken, by reading the code, or by walking through the entire application? How good if we have something automatic that says your change has broken this and this and this? &lt;BR/&gt;&lt;BR/&gt;when we write tests first we are documenting what we want a piece of code to do everytime it is run irrespective of what happens to the environment (the network of objects it uses or delegates to). And this documentation is executable. That's a respite! Even after 1 yr of writing code I know what I expected from it.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11200164/5447043298856733861/comments/default/8746282025012497041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11200164/5447043298856733861/comments/default/8746282025012497041'/><link rel='alternate' type='text/html' href='http://blog.nirav.name/2007/03/six-reasons-why-tdd-is-necessary.html?showComment=1175081100000#c8746282025012497041' title=''/><author><name>Vamsi</name><uri>http://www.blogger.com/profile/04447248592459194100</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_zfUYf0rQF3Q/RcNscYX7sCI/AAAAAAAAAAM/r-o7k4xsTnQ/s320/DSC00265.JPG'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.nirav.name/2007/03/six-reasons-why-tdd-is-necessary.html' ref='tag:blogger.com,1999:blog-11200164.post-5447043298856733861' source='http://www.blogger.com/feeds/11200164/posts/default/5447043298856733861' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-53357129'/></entry><entry><id>tag:blogger.com,1999:blog-11200164.post-3297360859299132472</id><published>2007-03-27T20:16:00.000-04:00</published><updated>2007-03-27T20:16:00.000-04:00</updated><title type='text'>TDD is clearly unnecessary, as working code predat...</title><content type='html'>TDD is clearly unnecessary, as working code predates TDD.&lt;BR/&gt;&lt;BR/&gt;TDD specifically is about writing tests first, which isn't the same as writing tests, as it specifies an order.&lt;BR/&gt;&lt;BR/&gt;If you tell me to write a test for a thousand line C# method, I can write a simple one.  Run the method.  Does it throw an exception?  No?  Ok, passed.  It's an awful test, but most are.&lt;BR/&gt;&lt;BR/&gt;I'll try to work out what the method is supposed to achieve and test that, by looking at its inputs and outputs (including 'this' parameters and any globals).  If it tries to achieve too much to write a good test for, then I'll consider breaking it up.  That way I can sensibly choose how to break it up.&lt;BR/&gt;&lt;BR/&gt;It's not necessarily true that reading the tests tells you how to use an API.  For example, in most of my tests, I call ContextUtility.debugContext(), which gives me a Context object, but that Context object is suitable only for running tests.  Real code that needs a Context should accept it as a parameter to a static method, rather than instantiating it.&lt;BR/&gt;&lt;BR/&gt;If a new programmer joined my project without realising this, he'd cause trouble.&lt;BR/&gt;&lt;BR/&gt;The green bar is a little bit of a problem.  When I wrote some Lisp code recently, I had some automated tests that failed, which were basically for features I hadn't bothered to implement yet.&lt;BR/&gt;&lt;BR/&gt;When I scrolled to that point in the source code, I evaluated the tests that should pass, and they did, then I evaluated all the tests that shouldn't pass, and they didn't.&lt;BR/&gt;&lt;BR/&gt;In other words, my issue tracker was my source code.  If I used JUnit (I use something similar in Java), I'd be tempted not to write the tests for the features I've not started writing yet, because they'd a) probably not compile, and b) fail and annoy me.&lt;BR/&gt;&lt;BR/&gt;"If you've always written code first then you never worried about testability of your code".&lt;BR/&gt;&lt;BR/&gt;That's untrue.  Writing tests first limits your ability to quickly evolve new code.  For example, with some code that just outputs stuff to the screen, I might decide what format the stuff should be in while I'm writing the code, then write the test later.  That doesn't mean I'm not considering testability.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11200164/5447043298856733861/comments/default/3297360859299132472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11200164/5447043298856733861/comments/default/3297360859299132472'/><link rel='alternate' type='text/html' href='http://blog.nirav.name/2007/03/six-reasons-why-tdd-is-necessary.html?showComment=1175040960000#c3297360859299132472' title=''/><author><name>Ricky Clarkson</name><uri>http://www.blogger.com/profile/13845104548520132930</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.nirav.name/2007/03/six-reasons-why-tdd-is-necessary.html' ref='tag:blogger.com,1999:blog-11200164.post-5447043298856733861' source='http://www.blogger.com/feeds/11200164/posts/default/5447043298856733861' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1026072933'/></entry><entry><id>tag:blogger.com,1999:blog-11200164.post-5403585089968936589</id><published>2007-03-27T15:49:00.000-04:00</published><updated>2007-03-27T15:49:00.000-04:00</updated><title type='text'>None of these reasons really explain why we should...</title><content type='html'>None of these reasons really explain why we should be writing our tests first.  They simply state that tests are good.&lt;BR/&gt;&lt;BR/&gt;The bottom line is that if you're diligent about making your code testable, it will be testable regardless of whether you write your tests first of last.  And writing tests last feel a lot more intuitive and less impractical (e.g. IDE problems) to most developers.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11200164/5447043298856733861/comments/default/5403585089968936589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11200164/5447043298856733861/comments/default/5403585089968936589'/><link rel='alternate' type='text/html' href='http://blog.nirav.name/2007/03/six-reasons-why-tdd-is-necessary.html?showComment=1175024940000#c5403585089968936589' title=''/><author><name>Cedric</name><uri>http://www.blogger.com/profile/13274064962794267826</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.nirav.name/2007/03/six-reasons-why-tdd-is-necessary.html' ref='tag:blogger.com,1999:blog-11200164.post-5447043298856733861' source='http://www.blogger.com/feeds/11200164/posts/default/5447043298856733861' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-618496659'/></entry><entry><id>tag:blogger.com,1999:blog-11200164.post-3600936086177943848</id><published>2007-03-27T05:36:00.000-04:00</published><updated>2007-03-27T05:36:00.000-04:00</updated><title type='text'>Nice points Nirav.&lt;br&gt;&lt;br&gt;My short experience with...</title><content type='html'>Nice points Nirav.&lt;BR/&gt;&lt;BR/&gt;My short experience with TDD says that it can be best understood by implementing it. The above points should be kept at the back of the mind and while implementing we'll automatically be able to relate to any or all of these. So take a framework and start using it. It really pays off.&lt;BR/&gt;&lt;BR/&gt;One thing that happens to us while only 'listening' to TDD is that we start to feel it is only meant for BIG applications, having lot of business logic. These are the applications where we find all the above points materializing. But there is nothing  preventing us from using TDD for small applications, trivial applications. Who knows how they grow to big ones. In such application all these points might not be realized like the "low level design". Trivial apps might not have any design, just some piece of code. what say?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11200164/5447043298856733861/comments/default/3600936086177943848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11200164/5447043298856733861/comments/default/3600936086177943848'/><link rel='alternate' type='text/html' href='http://blog.nirav.name/2007/03/six-reasons-why-tdd-is-necessary.html?showComment=1174988160000#c3600936086177943848' title=''/><author><name>Vamsi</name><uri>http://www.blogger.com/profile/04447248592459194100</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_zfUYf0rQF3Q/RcNscYX7sCI/AAAAAAAAAAM/r-o7k4xsTnQ/s320/DSC00265.JPG'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.nirav.name/2007/03/six-reasons-why-tdd-is-necessary.html' ref='tag:blogger.com,1999:blog-11200164.post-5447043298856733861' source='http://www.blogger.com/feeds/11200164/posts/default/5447043298856733861' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-53357129'/></entry></feed>
