<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Design &amp; Architecture</title>
        <link>http://geekswithblogs.net/LessonsLearned/category/8479.aspx</link>
        <description>On the structure of software systems. </description>
        <language>en-US</language>
        <copyright>Randolpho St. John</copyright>
        <managingEditor>randolpho@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>Whose Fault Are Poor Requirements?</title>
            <link>http://geekswithblogs.net/LessonsLearned/archive/2008/07/28/whose-fault-are-poor-requirements.aspx</link>
            <description>&lt;p&gt;I had thought I would do my first Lesson Learned about my control for the upcoming &lt;a href="http://geekswithblogs.net/LessonsLearned/archive/2008/07/24/silverlight-contest.aspx"&gt;Silverlight Contest&lt;/a&gt;, but recent events changed my mind.&lt;/p&gt;
&lt;p&gt;A phrase has been bandied about alot at work lately, a phrase we've all heard and uttered in one form or another at least once in our software careers. It exists in numerous variations, but essentially boils down to this: &lt;/p&gt;
&lt;p&gt;"The software is bad because the requirements were bad." &lt;/p&gt;
&lt;p&gt;I've seen it happen far too often: somebody complains that "&amp;lt;x&amp;gt; is broken" and the original developer goes on the defensive, blaming the customer for handing him faulty requirements. "It's not my fault! The customer &lt;em&gt;asked&lt;/em&gt; for a button that rebooted the server! All I did was give them exactly what they wanted!"&lt;/p&gt;
&lt;p&gt;I wholeheartedly disagree with this line of thinking. Claiming bad requirements is a copout. &lt;/p&gt;
&lt;p&gt;We as developers have a responsibiltiy to find out why every feature is requested. We must get beyond that "I press a button and it does exactly what I'm thinking" requirement to the heart of the request. If you are handed a requirements document that doesn't make sense &lt;strong&gt;push back&lt;/strong&gt;. Seek clarification. Learn more about the problem domain. Call the architect and tell him he's crazy, that it'll never work. And when you finally understand what the &lt;u&gt;real&lt;/u&gt; requirement is, &lt;strong&gt;write it down&lt;/strong&gt;. Save it for posterity. Communicate it with all parties. Find common ground. It can be done. &lt;/p&gt;
&lt;p&gt;"But my boss told me to do it that way or I'd be fired!" you might say. Very true, but that's bad management, not bad requirements. That's a different copout. &lt;img alt="" src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/devil_smile.gif" /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124086"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124086" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/LessonsLearned/aggbug/124086.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Randolpho St. John</dc:creator>
            <guid>http://geekswithblogs.net/LessonsLearned/archive/2008/07/28/whose-fault-are-poor-requirements.aspx</guid>
            <pubDate>Tue, 29 Jul 2008 03:33:04 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/LessonsLearned/comments/124086.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/LessonsLearned/archive/2008/07/28/whose-fault-are-poor-requirements.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/LessonsLearned/comments/commentRss/124086.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>