<?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/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-251225777390204289</id><updated>2011-07-08T08:31:09.181+05:30</updated><category term='Book Reviews'/><category term='Product Definition'/><category term='TDD'/><category term='Science'/><category term='Processes'/><title type='text'>Manoj Phatak's blog</title><subtitle type='html'>I will write my views on ... anything that matters our life.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://manojphatak.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/251225777390204289/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://manojphatak.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Manoj</name><uri>http://www.blogger.com/profile/17062234895682518285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-251225777390204289.post-5149283938176573642</id><published>2010-06-23T22:01:00.000+05:30</published><updated>2010-06-23T22:01:29.447+05:30</updated><title type='text'>Clean Code That Works</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;TDD is something that has transformed the&amp;nbsp;programmer within me. Kent Beck's popular book "&lt;em&gt;&lt;span style="color: #134f5c;"&gt;Test Driven Development By Example&lt;/span&gt;&lt;/em&gt;" is a must read for any programmer who is serious in learning TDD.&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;In his book Kent Beck&amp;nbsp;beautifully explains how TDD addresses the goal of every programmer: "&lt;em&gt;&lt;strong&gt;&lt;span style="color: #45818e;"&gt;Clean Code That Works&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Although it’s the goal of every programmer;&amp;nbsp;there is always&amp;nbsp;a dilemma.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;There are two ways to achieve this:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;I'll write a clean code first; then make it work later.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;I'll write a working code first; clean it up later.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;I have tried committing both the sins; both are disastrous.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Problem with first approach is; it leads to design that is unnecessarily complex &amp;amp; rigid.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;By the way; what's use of clean code if it doesn't work!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The second approach "&lt;em&gt;clean it up later"&lt;/em&gt; never happens. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;We go on adding code; but never refactor. More we postpone it; more &amp;amp; more it becomes difficult to refactor.&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;It becomes an ever growing &lt;/span&gt;&lt;a href="http://www.c2.com/cgi/wiki?TechnicalDebt"&gt;&lt;span style="color: #45818e; font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Technical Debt&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;; that at some time becomes impossible to repay. It can potentially reach a state where one has no option but to close the shop.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Look how TDD helps to solve this problem:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;TDD goes in iteration : RED - GREEN - REFACTOR&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;RED&lt;/strong&gt; bar gives us reason to write a code.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;After &lt;strong&gt;GREEN&lt;/strong&gt; bar; we have a working code; but&amp;nbsp;that may be dirty.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;During &lt;strong&gt;REFACTOR&lt;/strong&gt;ing&amp;nbsp;we clean up the code.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;So at the end of every iteration we have &lt;strong&gt;&lt;em&gt;Clean Code that Works&lt;/em&gt;!&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;And these iterations are matter of minutes. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;RED - GREEN - REFACTOR really gives a nice rhythm while writing code.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;---------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;There is one parallel:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;There are two schools of thoughts:- (1) Capitalism and (2) Communism&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Communism&lt;/strong&gt; says equality should be first achieved in the society; then we should make further economic progress.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Capitalism&lt;/strong&gt; says we should prosper first; then we can make things equal (or cleaner).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Everyone shares the dream of prosperous society, whose structure is fair. It's just the matter of what comes first.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;However; it doesn't happen with Capitalism. Rich become richer &amp;amp; poor become poorer.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;But there is problem with Communism as well. If we don't prosper what to do with equality?&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Kent has solved our dilemma&amp;nbsp;in programming.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;But&amp;nbsp;it seems this problem is still unsolved.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;This is quite disturbing. Isn't it?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Any views?&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/251225777390204289-5149283938176573642?l=manojphatak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://manojphatak.blogspot.com/feeds/5149283938176573642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manojphatak.blogspot.com/2010/06/clean-code-that-works.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/251225777390204289/posts/default/5149283938176573642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/251225777390204289/posts/default/5149283938176573642'/><link rel='alternate' type='text/html' href='http://manojphatak.blogspot.com/2010/06/clean-code-that-works.html' title='Clean Code That Works'/><author><name>Manoj</name><uri>http://www.blogger.com/profile/17062234895682518285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-251225777390204289.post-5466736035330711887</id><published>2009-11-18T10:53:00.005+05:30</published><updated>2010-03-15T14:03:29.633+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='TDD'/><title type='text'>Most common reasons why TDD fails!</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;I believe TDD is just a common sense.&amp;nbsp;TDD&amp;nbsp;gave me back the &lt;em&gt;joy of programming&lt;/em&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;I'm a mechanical engineer &amp;amp; I turned to programming because I love doing it. However soon after I started working&amp;nbsp;in industry; my excitement turned into frustration.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;I'm not alone with this experience; because most of us work on &lt;em&gt;Legacy Code&lt;/em&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Doing TDD has made me more productive. The stress I used to experience in earlier way of working no more exists. Code no more comes into my dreams &amp;amp; spoil my sleep. I can get creative &amp;amp;&amp;nbsp;aggressive; experiment different approaches. It's&amp;nbsp;because of that great feeling :-&amp;nbsp;&lt;strong&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;My code is &lt;/span&gt;&lt;span style="color: blue;"&gt;protected by Tests.... The tests that run fast&amp;nbsp;&amp;amp;&amp;nbsp;give me immediate feedback what I have done.&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;In spite of this; I wonder why TDD finds so hard to get accepted in programmers' community. When I give little thought over this; it seems obvious. Even when I started TDD; I failed; I failed many times. It's a awkward concept. Awkward because most of the programmers are not used to work this way. And changing the way of working always faces resistance.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;In &lt;/span&gt;&lt;a href="http://docs.google.com/present/edit?id=0ARMKCVUTFyrrZGR4ODR3bTVfNWdnenNwaHdm&amp;amp;hl=en"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;this presentation&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt; I'm sharing the hurdles that come in way to TDD. Overcoming these hurdles takes efforts; but its possible; and its worth for the benefits it gives. Hope you find this useful.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;I'm writing a series of posts on this blog about my experience with TDD in not just with Programming but in many other things.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://manojphatak.blogspot.com/2009/11/my-experience-on-test-driven.html"&gt;&lt;strong&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;My Experience with TDD&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://manojphatak.blogspot.com/2009/11/tdd-and-science.html"&gt;&lt;strong&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;TDD and Science&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://manojphatak.blogspot.com/2009/11/tdd-and-product-definition.html"&gt;&lt;strong&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;TDD and Product Definition&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://manojphatak.blogspot.com/2009/11/you-want-to-get-rid-of-beurocracy-then.html"&gt;&lt;strong&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Want to get rid of Beurocracy; then you need TDD!&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Best place to learn&amp;nbsp;TDD (in my personal opinion) is the book&amp;nbsp;"Test Driven&amp;nbsp;Development by Example"&amp;nbsp;authored by Kent Beck and the&amp;nbsp;&lt;a href="http://blogs.objectmentor.com/"&gt;ObjectMentor Blog&lt;/a&gt;. In this blog I'll be mainly talking about different dimensions of TDD.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Your views are welcome.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/251225777390204289-5466736035330711887?l=manojphatak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://manojphatak.blogspot.com/feeds/5466736035330711887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manojphatak.blogspot.com/2009/11/most-common-reasons-why-tdd-fails.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/251225777390204289/posts/default/5466736035330711887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/251225777390204289/posts/default/5466736035330711887'/><link rel='alternate' type='text/html' href='http://manojphatak.blogspot.com/2009/11/most-common-reasons-why-tdd-fails.html' title='Most common reasons why TDD fails!'/><author><name>Manoj</name><uri>http://www.blogger.com/profile/17062234895682518285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-251225777390204289.post-6056977290643275279</id><published>2009-11-11T11:08:00.005+05:30</published><updated>2009-11-19T10:49:16.862+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Processes'/><category scheme='http://www.blogger.com/atom/ns#' term='TDD'/><title type='text'>You want to get rid of Beurocracy? Then you need TDD!</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Are you complaining that Beurocracy has got crept in your organization over the period of time?&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Do you think processes are overheads &amp;amp; they are killing your Creativity as well as Productivity?&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Are you annoyed by the "Process People" eating up your time &amp;amp; beating you with some nonsense metrics?&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;If yes; then it's just &lt;em&gt;&lt;strong&gt;&lt;span style="color: blue;"&gt;natural&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Its just like the code we write. We design "Process" as stringent as possible. As orgnaization grows old; people stop following them. Not only that; the needs change; hence the processes become redundant. We hardly bother to refactor them. Nothing different than the &lt;em&gt;legacy code&lt;/em&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Try adopting a TDD approach.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;Process makers&amp;nbsp;should not allowed to design any process unless they write a "&lt;em&gt;&lt;strong&gt;failing test&lt;/strong&gt;&lt;/em&gt;". This failing test should be approved by some one senior.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;Example: If you are making a security process then may be we have a &lt;strong&gt;&lt;em&gt;stroy&lt;/em&gt;&lt;/strong&gt; like following:&lt;/span&gt;&lt;/li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;Tom is programmer who doesn't bother to lock his machine; when he is not around. On a particular day at lunch time; some one opens his machine &amp;amp; use his account for malicious purpose. This should not happen.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;They design the process that is &lt;strong&gt;&lt;em&gt;just enough&lt;/em&gt;&lt;/strong&gt; to make the test pass.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;The design should not be more stringent than necessary ... just &lt;strong&gt;&lt;em&gt;minimal&lt;/em&gt;&lt;/strong&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;As they write &amp;amp; satisfy more tests; they should &lt;strong&gt;&lt;em&gt;refactor&lt;/em&gt;&lt;/strong&gt; their process design.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/251225777390204289-6056977290643275279?l=manojphatak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://manojphatak.blogspot.com/feeds/6056977290643275279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manojphatak.blogspot.com/2009/11/you-want-to-get-rid-of-beurocracy-then.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/251225777390204289/posts/default/6056977290643275279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/251225777390204289/posts/default/6056977290643275279'/><link rel='alternate' type='text/html' href='http://manojphatak.blogspot.com/2009/11/you-want-to-get-rid-of-beurocracy-then.html' title='You want to get rid of Beurocracy? Then you need TDD!'/><author><name>Manoj</name><uri>http://www.blogger.com/profile/17062234895682518285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-251225777390204289.post-9015338911606794924</id><published>2009-11-11T10:47:00.015+05:30</published><updated>2009-11-19T10:48:28.869+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Product Definition'/><category scheme='http://www.blogger.com/atom/ns#' term='TDD'/><title type='text'>TDD and Product Definition</title><content type='html'>&lt;span style="color: #783f04; font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Are you in a role of designing&amp;nbsp;products&lt;/strong&gt;&lt;em&gt; (not necessarily a software product)&lt;/em&gt;&lt;strong&gt; and your job is to write&amp;nbsp;Functional Specifications?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #783f04; font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;If yes; have you came across an article called "&lt;/strong&gt;&lt;/span&gt;&lt;a href="http://www.joelonsoftware.com/articles/fog0000000036.html"&gt;&lt;span style="color: #783f04; font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Painless Functional Specifications&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #783f04; font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;" by Joel Spolsky?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #783f04; font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;If yes; then you are already doing TDD even though you may not be a programmer!&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;If you haven't read this article I will urge you to read it first.&amp;nbsp;Its&amp;nbsp;concise, highly useful &amp;amp;&amp;nbsp;written in&amp;nbsp;an interesting&amp;nbsp;(Joel's) style.&amp;nbsp;I'm sure you will thank me&amp;nbsp;after reading it.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;I think TDD is the most sensible way to write functional specifications.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;The first step in writing specifications is to write Stories. User Stories with names that highlight how user will be benefited.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;Something like ...&amp;nbsp;Stacy is a Project Lead in a software developer company. She uses an issue tracking tool called FastTrack (disclaimer: if a tool by such a name exists; then it's a mere coincidence).On the dashboard she can see all th issues assigned to her. However there are dozens of issues on her name; but at present she is interested only in seeing a handful issues which are work in process. The tool can provide a wealth of data; but that's overwhelming to her.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;This user story is like a "Test".&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: #b45f06;"&gt;&lt;strong&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;To start with you haven't designed the product. So user is not able to do what he intended. So the test fails. A very important step in TDD: &lt;span style="color: red;"&gt;&lt;em&gt;See the test fails!&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Then you design your user interfaces that is just enough (yes, &lt;em&gt;just enough&lt;/em&gt;) to make the story (I mean&amp;nbsp;the test)&amp;nbsp;pass.&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Then you go on to next story. You may have to refactor you interfaces while satisfying more &amp;amp; more stories.&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Looks simple; isn't it? But the advantages are great!&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;If you are into the business of making products; you might have experienced there are just&amp;nbsp;a lot of redundant features in the product. Many times we add them because...&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;We want to make the product rich with features. More features means there is more stuff for&amp;nbsp;the sales people to talk about &amp;amp; impress.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;We think that &lt;em&gt;might &lt;/em&gt;be useful to the user.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;or we add it just because we &lt;em&gt;can &lt;/em&gt;add it; we have the technology available.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Users don't really want features; they want to get their job done. Unwanted features only confuses them.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;If our product is old; then maybe we are adding features for many years together. We just go on adding features. Hardly we bother we reorganize the interfaces; because of many reasons. This&amp;nbsp;is similar to programming. We go on adding code; we don't bother to remove code or refactor it. Why? Because many times we don't understand it; its written by someone else &amp;amp; its working. Also the code is being called; we don't want to break any existing users.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;TDD lets you to free from all these problems.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;One just need to have following descipline:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;div style="text-align: left;"&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;I will not write a single line of specification ( or user interface)&amp;nbsp;unless I describe a failing User Story.&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;div style="text-align: left;"&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;I will design the user interface that is just enough to satisfy the above story!&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Once I came across a quote that was placed in email signature of one of my colleague:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;A&amp;nbsp;Design is complete not when there is nothing&amp;nbsp;to add more; it's when there is nothing&amp;nbsp;left to take out from it!&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;TDD encourages us to do the same thing; right?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://manojphatak.blogspot.com/2009/11/my-experience-on-test-driven.html"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;TDD Homepage&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://manojphatak.blogspot.com/2009/11/tdd-and-science.html"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;TDD and Science&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/251225777390204289-9015338911606794924?l=manojphatak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://manojphatak.blogspot.com/feeds/9015338911606794924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manojphatak.blogspot.com/2009/11/tdd-and-product-definition.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/251225777390204289/posts/default/9015338911606794924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/251225777390204289/posts/default/9015338911606794924'/><link rel='alternate' type='text/html' href='http://manojphatak.blogspot.com/2009/11/tdd-and-product-definition.html' title='TDD and Product Definition'/><author><name>Manoj</name><uri>http://www.blogger.com/profile/17062234895682518285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-251225777390204289.post-751933756596515204</id><published>2009-11-10T16:07:00.012+05:30</published><updated>2010-03-15T14:00:57.653+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='TDD'/><title type='text'>My Experience with "Test Driven Development"</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;I first heard about the word "TDD" from my senior colleague&amp;nbsp;Nitin Bhide a few years back. He&amp;nbsp;also conducted a hands-on session for us on how to do TDD using &lt;a href="http://sourceforge.net/apps/mediawiki/cppunit/index.php?title=Main_Page"&gt;cpp-unit&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The first reaction I had (though I didn't tell this to Nitin) was…&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;"&lt;strong&gt;Its interesting, but is suited for people who have a lot of time to spare and no delivery pressures. It's&amp;nbsp;impractical &amp;amp; really&amp;nbsp;awkward to do it&lt;/strong&gt;".&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;However for some reasons I continued doing it (perhaps somewhere I liked it but was not able to convince myself). &lt;span style="color: #b45f06;"&gt;&lt;strong&gt;And … The more I did it; it made more &amp;amp; more sense doing it&lt;/strong&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Today I feel "TDD" is one of the most scientific ways of developing software. In fact I think the TDD concept is not born in the software world at all. It is being used by Scientists, Product designers, people making policies &amp;amp; processes, history scholars (and many more…) since long time.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;I must admit that I have not read any prescribed book on TDD. So what I say is not necessarily correct. I would greatly appreciate if someone corrects me if I go wrong.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;My views are based on some inspirations, some online reading &amp;amp; numerous mistakes I made while practicing it&amp;nbsp;over the years.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;I owe a lot to following people who helped me in this journey:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;&lt;a href="http://www.nitinbhide.blogspot.com/"&gt;&lt;span style="color: #660000;"&gt;Nitin Bhide&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt; : who introduced me to TDD with practical sessions.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;&lt;strong&gt;&lt;span style="color: #660000;"&gt;Kent Beck&lt;/span&gt;&lt;/strong&gt; : who taught me the rhythm of RED - GREEN - REFACTOR through his beautiful book "Test Driven Development by Example", which has greatly influenced my way of programming&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;&lt;a href="http://www.objectmentor.com/omTeam/martin_r.html"&gt;&lt;span style="color: #660000;"&gt;Robert C Martin&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt; : to whom I'm grateful for Design Principles, Design Patterns Unit testing, TDD and many other things I could learn.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;&lt;a href="http://www.objectmentor.com/omTeam/feathers_m.html"&gt;&lt;span style="color: #660000;"&gt;Michael Feathers&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt; : who taught me TDD is possible even for legacy code. (through his book "&lt;a href="http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052"&gt;Working Effectively with Legacy Code&lt;/a&gt;")&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;(It would be a great day for me if I could meet these two gentlemen.)&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;&lt;span style="color: #660000;"&gt;Tathagata Chakraborty&lt;/span&gt;&lt;/strong&gt; : my colleague who renewed my interest in TDD &amp;amp; gave me confidence that I'm thinking in right direction.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Last &amp;amp; not the least &lt;strong&gt;"&lt;a href="http://toc-goldratt.com/"&gt;&lt;span style="color: #660000;"&gt;Dr. Goldratt&lt;/span&gt;&lt;/a&gt;"&lt;/strong&gt; who gave me an entirely different line of thinking.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Keep reading...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://manojphatak.blogspot.com/2009/11/tdd-and-science.html"&gt;&lt;strong&gt;&lt;span style="color: blue;"&gt;How TDD &amp;amp; Science are the same?&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://manojphatak.blogspot.com/2009/11/tdd-and-product-definition.html"&gt;&lt;strong&gt;&lt;span style="color: blue;"&gt;Are you a Product Designer&amp;nbsp;and want to write painless functional specifications? Then you must do TDD&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://manojphatak.blogspot.com/2009/11/you-want-to-get-rid-of-beurocracy-then.html"&gt;&lt;strong&gt;&lt;span style="color: blue;"&gt;Are you frustrated by beurocracy in your organization &amp;amp; want to change it? Then you need TDD!&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/251225777390204289-751933756596515204?l=manojphatak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://manojphatak.blogspot.com/feeds/751933756596515204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manojphatak.blogspot.com/2009/11/my-experience-on-test-driven.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/251225777390204289/posts/default/751933756596515204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/251225777390204289/posts/default/751933756596515204'/><link rel='alternate' type='text/html' href='http://manojphatak.blogspot.com/2009/11/my-experience-on-test-driven.html' title='My Experience with &quot;Test Driven Development&quot;'/><author><name>Manoj</name><uri>http://www.blogger.com/profile/17062234895682518285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-251225777390204289.post-5066039227315133427</id><published>2009-11-10T15:26:00.026+05:30</published><updated>2009-11-17T14:33:35.291+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Science'/><category scheme='http://www.blogger.com/atom/ns#' term='TDD'/><title type='text'>TDD and Science</title><content type='html'>&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://www.amazon.com/Goal-Process-Ongoing-Improvement/dp/0884270610" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" sr="true" src="http://3.bp.blogspot.com/_WeWE_sgrJh0/SvjkYMdQPnI/AAAAAAAAAAM/vh9YloFDCfU/s320/TheGoal.bmp" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;"The Goal" has influenced my life, the way I think &amp;amp; act.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;However I think what's even more valuable than the book itself is the preface&amp;nbsp;written by the author; where he has expressed his views&amp;nbsp;on Science and Education. It's just a two page preface;&amp;nbsp;that gave me some interesting line of thinking.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana;"&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;What is Science?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Is it about "&lt;em&gt;solving the mystries of the universe&lt;/em&gt;" or "&lt;em&gt;knowing the facts&lt;/em&gt;"?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;No, science is about &lt;em&gt;"postulate a&amp;nbsp;minimum set of assumptions that through logical deduction explains the things happening around us".&lt;/em&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;This is a groundbreaking definition... it frees Science from being locked in fixed categories like Phisics, Chemistry, Biology. There is a science exists beyond it ... that explains how humans think, how organizations behave etc.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;TDD (Test Driven Development) is just an application of above definition to the world of "Software Developement".&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Are you wondering how? Let me take a real example.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;There is something that has fascinated mankind from beginning of the&amp;nbsp;life ... that's &lt;strong&gt;&lt;em&gt;&lt;span style="color: #b45f06;"&gt;light&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Can we tell "What is the Light ?" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Do we "know" what light is? Perhaps the answer is "Not sure"... even today. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;What we have is a theory which has got evolved over last many decades.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;After all what is "Theory"? &amp;nbsp;Let's put Dr. Goldratt's definition explicitly.&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;strong&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;A&amp;nbsp;minimum set of assumptions; that through straight forward&amp;nbsp;logical deductions; explains things happening in the universe.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="color: black; font-family: Verdana, sans-serif;"&gt;So let's put down the observation or behaviour of light&amp;nbsp;and try to make a theory according to above definition:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;BEHAVIOR #1 : When light falls on an opaque object; it gets reflected.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;------------------------------------------------------------------------&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Now let's see if our theory can explains this.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;No it cannot. Because the theory is empty. We haven't written any code yet.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;So let's put a minimum code that is &lt;em&gt;just enough&lt;/em&gt; (&lt;span style="color: #783f04;"&gt;yes &lt;em&gt;just enough&lt;/em&gt;&lt;/span&gt;) to explain the observed behavior:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;-------------------- Theory of Light --------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;ASSUMPTION : &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;Light is made up of tiny particles called "Corpuscles".&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;These corpuscles are emitted from the source in all direction.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;LOGICAL DEDUCTION: &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;When any particle hit an opaque surface&amp;nbsp;it gets&amp;nbsp;rebounded according to some law ---- [Fact]&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;-------------------- Theory of Light --------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Wow! the behavior is explained! The test has passed! &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;(I'm sure you have started noting the parallels)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Can we prove this? Yea....h..no.; not sure.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Can we disprove this theory?&amp;nbsp; Yes quite easy; just&amp;nbsp;write another test that makes this code fail.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;------------------------------------------------------------------------&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;BEHAVIOR #2 :&amp;nbsp;When light enters from one medium to another medium its path gets deflected.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;Phenomenon of Refraction.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Can our theory explain this? &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; No. So,&amp;nbsp;the test&amp;nbsp;fails.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Let's write some code&amp;nbsp;that is just enough to make&amp;nbsp;this pass.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Is it ok we write any "crap code" as long as the test is passed?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; No, remember the definition. We have to make a &lt;em&gt;&lt;span style="color: blue;"&gt;minimum&lt;/span&gt;&lt;/em&gt; set of assumptions or &lt;em&gt;&lt;span style="color: blue;"&gt;sensible&lt;/span&gt;&lt;/em&gt; assumptions and then it should be left to &lt;span style="color: blue;"&gt;&lt;em&gt;logical deduction&lt;/em&gt;&lt;/span&gt; to explain the behavior.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;-------------------- Theory of Light&amp;nbsp;(Revisited)--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;&amp;nbsp;ASSUMPTION : &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;Light is made up of tiny particles called "Corpuscles".&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;These corpuscles are emitted from the source in all direction.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;Light being a particle is affected by&amp;nbsp;gravity.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;LOGICAL DEDUCTION: &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;Denser medium has more material per unit volume. Hence it can exert more gravitational force ---- [Fact]&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;When light particles enter a denser medium they are pulled by the gravity. Hence their path gets deflected.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;-------------------- Theory of Light (Revisited)--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Cheers! The test is passed.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;But a word of&amp;nbsp;caution: Our set of assumptions are increasing now. Like our code is getting into more &lt;em&gt;if's&lt;/em&gt;&amp;nbsp;and &amp;nbsp;&lt;em&gt;then's.&lt;/em&gt; It's getting somewhat&amp;nbsp;complex.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;I'm skipping here. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Reason #1 :&amp;nbsp;I need to go faster since I want to make some point.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Reason #2 :&amp;nbsp;I'm not a physicist&amp;nbsp;and I don't want to showcase my ignorance about these theories :-)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Let's assume that we go on explaining everything by adding more assumptions to our theory. Our code has got more&amp;nbsp;and more complex. Also some assumptions we made were found to be incorrect.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;-------------------- Theory of Light (Revisited)--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;ASSUMPTION:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;Light consists of Waves.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;LOGICAL DEDUCTION:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;I'll leave it to you :-)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;-------------------- Theory of Light (Revisited)--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06;"&gt;&lt;strong&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Did you realize what we have done?&amp;nbsp; Yes; its most important step in software development : &lt;span style="color: red;"&gt;Refactor&amp;nbsp;the code!&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;When we are doing TDD; we don't fear to refactor. We are protected by Tests! We can ruthlessly throw away many lines of code that we wrote &amp;amp; cherished for a long.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Now let this theory evolve.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;&amp;nbsp;BEHAVIOR #3 : Light can travel through SPACE&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Now the Wave Theory fails. At that time "Electromagnetic waves" were not known&amp;nbsp;and it was believed that wave requires a medium to propgate.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;-------------------- Theory of Light (Revisited)--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;&amp;nbsp;ASSUMPTION:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;Light consists of Waves.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;Space is filled up with a medium called "luminiferrous ether".&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;This ether is having infinitely small density.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;LOGICAL DEDUCTION:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;It's obvious.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;-------------------- Theory of Light (Revisited)--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;strong&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;And so on...&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;I'll stop here. I'm talking on something on which I don't have authority to talk. I'll greatly appreciate if someone brings to my notice the technical mistakes (if any) I have made.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The point is ... TDD &amp;amp; Science&amp;nbsp;are exactly the &lt;strong&gt;&lt;em&gt;same&lt;/em&gt;&lt;/strong&gt;. Not similar; it's the &lt;strong&gt;&lt;em&gt;same&lt;/em&gt;&lt;/strong&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;TDD is one of the most scientific ways to develope software.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;NOTE: I came across a book called&lt;strong&gt;&lt;span style="color: #b45f06;"&gt; "&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;a href="http://www.amazon.com/Stephen-Hawking-Quest-Theory-Everything/dp/055329895X"&gt;&lt;strong&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;A Quest for The Theory of Everything&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;&lt;span style="color: #b45f06;"&gt;" by "Stephen Hawkings"&lt;/span&gt;&lt;/strong&gt;; where the author makes the same definition for Science.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;There are many objections made against TDD:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;-------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;In TDD everything is all well; as long as the tests are passed.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;One can also write&amp;nbsp;some crap code; break design principles; abuse OO etc. This threatens extensibility of the software in long run.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Tests overspecify the behavior.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Tests are unmaintainable.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;-------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;I hope above approach answer above objections well.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;TDD is not replacement for Architecture. It's not replacement for Code Review. &lt;strong&gt;&lt;a href="http://www.objectmentor.com/omTeam/martin_r.html"&gt;Uncle Bob&lt;/a&gt;&lt;/strong&gt; has explained extremely well on one of&amp;nbsp;his&amp;nbsp;recent posts on blog: &lt;/span&gt;&lt;a href="http://blog.objectmentor.com/articles/2009/10/08/tdd-triage"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;http://blog.objectmentor.com/articles/2009/10/08/tdd-triage&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;We still need all these things.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Note the definition of theory says "It should make a minimum set of assumptions, or make only sensible assumptions". We just can't write any code just to make tests pass!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Then what's the advantage the TDD gives?&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;In my opinion, the biggest advantage is; it lets the programmer to get creative. &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;When a programmer gets creative?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;... when he gets aggressive.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;When he can get aggressive?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;... when he can &lt;strong&gt;&lt;span style="color: blue;"&gt;&lt;em&gt;focus&lt;/em&gt;&lt;/span&gt;&lt;/strong&gt; on the job or algorithm on hand... rather than worrying about broken code or regressions. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;If you start with constraints; then there are fair chances you miss a good solution.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;When this can happen?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="color: #b45f06;"&gt;... &lt;/span&gt;&lt;span style="color: black;"&gt;when&lt;/span&gt; your code is protected by Tests ... The tests that give you immediate feedback of what you are doing.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Do you find this interesting? Pl let me know.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Also pl visit following links to read more where TDD makes sense even beyond the world of Software Development.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://manojphatak.blogspot.com/2009/11/my-experience-on-test-driven.html"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;TDD Homepage&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;yet come="" to=""&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/251225777390204289-5066039227315133427?l=manojphatak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://manojphatak.blogspot.com/feeds/5066039227315133427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manojphatak.blogspot.com/2009/11/tdd-and-science.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/251225777390204289/posts/default/5066039227315133427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/251225777390204289/posts/default/5066039227315133427'/><link rel='alternate' type='text/html' href='http://manojphatak.blogspot.com/2009/11/tdd-and-science.html' title='TDD and Science'/><author><name>Manoj</name><uri>http://www.blogger.com/profile/17062234895682518285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WeWE_sgrJh0/SvjkYMdQPnI/AAAAAAAAAAM/vh9YloFDCfU/s72-c/TheGoal.bmp' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-251225777390204289.post-7533289529625845981</id><published>2009-10-30T16:13:00.003+05:30</published><updated>2009-11-17T14:25:55.086+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Book Reviews'/><title type='text'>The Reason for Technology</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;Some time back I came across a really interesting video titled "The Reason for Technology" by Dr.Goldratt. I thought I would make a presentation for the people who missed it. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The Powerpoint Presentation can be found at:&lt;/span&gt;&lt;br /&gt;&lt;a href="https://docs.google.com/present/edit?id=0ARMKCVUTFyrrZGR4ODR3bTVfM3J0ZmJtY2Nt&amp;amp;hl=en"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;https://docs.google.com/present/edit?id=0ARMKCVUTFyrrZGR4ODR3bTVfM3J0ZmJtY2Nt&amp;amp;hl=en&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The ppt contains some of my interpretations but except that most of the contents are what I scribbled down while listening to the video.&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;&lt;span style="color: #b45f06;"&gt;Summary:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;For a&amp;nbsp;Technology wants to be successful; it&amp;nbsp;must diminish certain &lt;em&gt;&lt;strong&gt;major&lt;/strong&gt;&lt;/em&gt; limitation.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;Before the limitation was diminished; the world was &lt;em&gt;&lt;strong&gt;living with&lt;/strong&gt;&lt;/em&gt; the limitation. So people framed certain rules to &lt;em&gt;&lt;strong&gt;accomodate&lt;/strong&gt;&lt;/em&gt; that limitation.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;Organizations adopted the new technology; but the rules didn't change.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;Effectively they couldn't get benefits from the new technology.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;Not only that organizations have inertia to change anything; its difficult to realize that these rules are to be changed. They are so sunk within ourselves that they have become "a common practice".&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: #b45f06; font-family: Verdana, sans-serif;"&gt;For a technology to be successful; it's ncecessary that we locate such rules that are to be changed; and institute new appropriate rules.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;If by any chance you get to see this video; pl don't miss it. Its a&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;wonderful experience to listen to Dr. Goldratt! The video can also be&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;purchased from the TOC site : &lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.toc-goldratt.com/index_TV.php?cont=647&amp;amp;t=9&amp;amp;p=3"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;http://www.toc-goldratt.com/index_TV.php?cont=647&amp;amp;t=9&amp;amp;p=3&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;If you think of or&amp;nbsp;come across any such examples of technology implementations; request you to share the same.&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Thank you.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Enjoy reading...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/251225777390204289-7533289529625845981?l=manojphatak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://manojphatak.blogspot.com/feeds/7533289529625845981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manojphatak.blogspot.com/2009/10/reason-for-technology.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/251225777390204289/posts/default/7533289529625845981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/251225777390204289/posts/default/7533289529625845981'/><link rel='alternate' type='text/html' href='http://manojphatak.blogspot.com/2009/10/reason-for-technology.html' title='The Reason for Technology'/><author><name>Manoj</name><uri>http://www.blogger.com/profile/17062234895682518285</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
