<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments for The Responsible Designer</title>
	<atom:link href="http://wirfs-brock.com/blog/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://wirfs-brock.com/blog</link>
	<description>Don&#039;t you want to take responsibility for your designs?</description>
	<lastBuildDate>Wed, 11 Apr 2012 05:12:53 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>Comment on How far should you look ahead? by Talman Stoner</title>
		<link>http://wirfs-brock.com/blog/2012/03/16/how-far-should-you-look-ahead/comment-page-1/#comment-5022</link>
		<dc:creator>Talman Stoner</dc:creator>
		<pubDate>Wed, 11 Apr 2012 05:12:53 +0000</pubDate>
		<guid isPermaLink="false">http://wirfs-brock.com/blog/?p=319#comment-5022</guid>
		<description>I look ahead in several directions.  If I can remove a dependency or remove a roadblock in some way then I&#039;ll do that. One benefit might be that other resources could be added to the project more easily.  I think its good to think ahead to the interfaces of the code in development and define those boundaries.  This might be simply defining the layers of the tech stack and persisting data as soon as possible so other components that need that data could be developed. 

I like the idea of thinking ahead enough to develop a &quot;walking skeleton&quot; as Alistair Cockburn describes it, http://alistair.cockburn.us/Walking+skeleton.   He didn&#039;t invent it and others have popularized it but I first heard of it from him.  This is very useful to show progress, define interfaces and allow concurrent development more easily because it removes dependencies.</description>
		<content:encoded><![CDATA[<p>I look ahead in several directions.  If I can remove a dependency or remove a roadblock in some way then I&#8217;ll do that. One benefit might be that other resources could be added to the project more easily.  I think its good to think ahead to the interfaces of the code in development and define those boundaries.  This might be simply defining the layers of the tech stack and persisting data as soon as possible so other components that need that data could be developed. </p>
<p>I like the idea of thinking ahead enough to develop a &#8220;walking skeleton&#8221; as Alistair Cockburn describes it, <a href="http://alistair.cockburn.us/Walking+skeleton" rel="nofollow">http://alistair.cockburn.us/Walking+skeleton</a>.   He didn&#8217;t invent it and others have popularized it but I first heard of it from him.  This is very useful to show progress, define interfaces and allow concurrent development more easily because it removes dependencies.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Agile Architecture Myth #5: Never Look Ahead by Talman Stoner</title>
		<link>http://wirfs-brock.com/blog/2012/03/12/agile-architecture-myth-5-never-look-ahead/comment-page-1/#comment-5021</link>
		<dc:creator>Talman Stoner</dc:creator>
		<pubDate>Wed, 11 Apr 2012 04:24:42 +0000</pubDate>
		<guid isPermaLink="false">http://wirfs-brock.com/blog/?p=312#comment-5021</guid>
		<description>John makes a great point about using tools in a familiar domain.  Many familiar techniques like relational data modeling and OO modeling do this for you.  Even with those there are many choices and experienced developers get the abstraction level and identify the base types the first time.  Even then experienced developers differ on how much understanding they like before cutting code. The art is in how much requirements are enough to design and how much design is enough to code and I think this is true no matter what the length of the iteration is.</description>
		<content:encoded><![CDATA[<p>John makes a great point about using tools in a familiar domain.  Many familiar techniques like relational data modeling and OO modeling do this for you.  Even with those there are many choices and experienced developers get the abstraction level and identify the base types the first time.  Even then experienced developers differ on how much understanding they like before cutting code. The art is in how much requirements are enough to design and how much design is enough to code and I think this is true no matter what the length of the iteration is.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Agile Architecture Myth #5: Never Look Ahead by John Schwartz</title>
		<link>http://wirfs-brock.com/blog/2012/03/12/agile-architecture-myth-5-never-look-ahead/comment-page-1/#comment-4609</link>
		<dc:creator>John Schwartz</dc:creator>
		<pubDate>Tue, 20 Mar 2012 18:05:35 +0000</pubDate>
		<guid isPermaLink="false">http://wirfs-brock.com/blog/?p=312#comment-4609</guid>
		<description>Experienced Developers using well understood tools in a very familiar domain use &#039;look ahead&#039; all the time, whether they realize it or not. Imploy less experienced Developers, new unfamiliar tools and/ or new domain concepts and &#039;look ahead&#039; becomes more difficult, less natural -- but more critical! The trick is to balance design and analysis in an incremental fashion with implementation. Chris indicated that one may learn more through the process of implementing rather than talking about it. I would say that if new things are being learned, whether one is modeling, designing or coding, then keep going; and if little is being learned -- switch gears, do something else.</description>
		<content:encoded><![CDATA[<p>Experienced Developers using well understood tools in a very familiar domain use &#8216;look ahead&#8217; all the time, whether they realize it or not. Imploy less experienced Developers, new unfamiliar tools and/ or new domain concepts and &#8216;look ahead&#8217; becomes more difficult, less natural &#8212; but more critical! The trick is to balance design and analysis in an incremental fashion with implementation. Chris indicated that one may learn more through the process of implementing rather than talking about it. I would say that if new things are being learned, whether one is modeling, designing or coding, then keep going; and if little is being learned &#8212; switch gears, do something else.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Agile Architecture Myth #5: Never Look Ahead by Rebecca</title>
		<link>http://wirfs-brock.com/blog/2012/03/12/agile-architecture-myth-5-never-look-ahead/comment-page-1/#comment-4425</link>
		<dc:creator>Rebecca</dc:creator>
		<pubDate>Tue, 13 Mar 2012 17:15:35 +0000</pubDate>
		<guid isPermaLink="false">http://wirfs-brock.com/blog/?p=312#comment-4425</guid>
		<description>I agree with you Chris. One great benefit of incremental  and agile development is that you quickly get feedback on your ideas. Design ideas aren&#039;t worth much until they are proven. There is no substitute for working code.

Both overdesign and underdesign can get you in trouble. So making the time for some thinking and exploring (especially when you are making something totally new) is important. But that is no excuse to over-embellish a design. Looking ahead, just far enough ahead is what I strive for.</description>
		<content:encoded><![CDATA[<p>I agree with you Chris. One great benefit of incremental  and agile development is that you quickly get feedback on your ideas. Design ideas aren&#8217;t worth much until they are proven. There is no substitute for working code.</p>
<p>Both overdesign and underdesign can get you in trouble. So making the time for some thinking and exploring (especially when you are making something totally new) is important. But that is no excuse to over-embellish a design. Looking ahead, just far enough ahead is what I strive for.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Agile Architecture Myth #5: Never Look Ahead by Chris Collins</title>
		<link>http://wirfs-brock.com/blog/2012/03/12/agile-architecture-myth-5-never-look-ahead/comment-page-1/#comment-4407</link>
		<dc:creator>Chris Collins</dc:creator>
		<pubDate>Tue, 13 Mar 2012 01:55:41 +0000</pubDate>
		<guid isPermaLink="false">http://wirfs-brock.com/blog/?p=312#comment-4407</guid>
		<description>One of the small flaws with agile is that it was developed by a lot of smart people who are really good at developing software. They underestimate how much of their experience plays in the decisions they make as they create the emergent design. Things that come natural to them do not necessarily come natural to the rest of us. That said mistakes are going to be made whether I spend time planning up front or if I jump in and start developing. If I am going to err on one side or the other of  spending too much time designing verses too little I would rather err on the side of too little, because I am going to learn more by the processs of implementing something than I am about talking about implementing it. The principle of not implementing something until I need it has worked well in practice for me. Too many times when I try to anticipate what I will need I end of developing something that is never needed or used. 

I have worked on projects that have spent so much time in requirements and design that they did not have the funds to implement the project. Agile seems in some cases to be an overreaction to this problem and the knee jerk reaction to the extreme other end of the spectrum.</description>
		<content:encoded><![CDATA[<p>One of the small flaws with agile is that it was developed by a lot of smart people who are really good at developing software. They underestimate how much of their experience plays in the decisions they make as they create the emergent design. Things that come natural to them do not necessarily come natural to the rest of us. That said mistakes are going to be made whether I spend time planning up front or if I jump in and start developing. If I am going to err on one side or the other of  spending too much time designing verses too little I would rather err on the side of too little, because I am going to learn more by the processs of implementing something than I am about talking about implementing it. The principle of not implementing something until I need it has worked well in practice for me. Too many times when I try to anticipate what I will need I end of developing something that is never needed or used. </p>
<p>I have worked on projects that have spent so much time in requirements and design that they did not have the funds to implement the project. Agile seems in some cases to be an overreaction to this problem and the knee jerk reaction to the extreme other end of the spectrum.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Little things add up by Who is Rebecca Wirfs-brock &#124; Yves Hanoulle</title>
		<link>http://wirfs-brock.com/blog/2005/09/05/little-things-add-up/comment-page-1/#comment-2624</link>
		<dc:creator>Who is Rebecca Wirfs-brock &#124; Yves Hanoulle</dc:creator>
		<pubDate>Tue, 27 Sep 2011 18:39:59 +0000</pubDate>
		<guid isPermaLink="false">http://wirfs-brock.com/blog/2005/09/05/little-things-add-up/#comment-2624</guid>
		<description>[...] I know it was when I was learning OO. When I was doing  more and more agile stuff, I noticed that she now wrote articles about TDD. Today in the agile community we have a lot of  people who don&#8217;t have a technical [...]</description>
		<content:encoded><![CDATA[<p>[...] I know it was when I was learning OO. When I was doing  more and more agile stuff, I noticed that she now wrote articles about TDD. Today in the agile community we have a lot of  people who don&#8217;t have a technical [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on An Architect’s Dilemna: Should I Rework or Exploit Legacy Architecture? by Rebecca</title>
		<link>http://wirfs-brock.com/blog/2011/08/30/an-architect%e2%80%99s-dilemna-rework-or-exploit-a-legacy-architecture/comment-page-1/#comment-2496</link>
		<dc:creator>Rebecca</dc:creator>
		<pubDate>Wed, 31 Aug 2011 16:19:51 +0000</pubDate>
		<guid isPermaLink="false">http://wirfs-brock.com/blog/?p=302#comment-2496</guid>
		<description>Simon- I agree with your sentiments: an important (but often unstated) job of an architect should be to sustain the ability of the software system to adapt and grow.

The architect whose story I was recounting was not making a duct tape solution in my opinion. Instead he made minimal changes to improve the system and left the inconsistent existing logging code intact. Not ideal, but not harmful, either. He didn&#039;t increase the entropy of the system by his &quot;fix&quot;. When you can fix a problem this way, you are lucky. As a matter of principle,  if you can shore up your architecture, make changes and enhancements, while continuing to encapsulate the poorly designed parts,  you are doing OK.

Too often, however, duct tape solutions are applied deep in the bowels of systems. As a consequence, code and data become even more tangled and incomprehensible. And it becomes increasingly difficult to make repairs or enhancements.</description>
		<content:encoded><![CDATA[<p>Simon- I agree with your sentiments: an important (but often unstated) job of an architect should be to sustain the ability of the software system to adapt and grow.</p>
<p>The architect whose story I was recounting was not making a duct tape solution in my opinion. Instead he made minimal changes to improve the system and left the inconsistent existing logging code intact. Not ideal, but not harmful, either. He didn&#8217;t increase the entropy of the system by his &#8220;fix&#8221;. When you can fix a problem this way, you are lucky. As a matter of principle,  if you can shore up your architecture, make changes and enhancements, while continuing to encapsulate the poorly designed parts,  you are doing OK.</p>
<p>Too often, however, duct tape solutions are applied deep in the bowels of systems. As a consequence, code and data become even more tangled and incomprehensible. And it becomes increasingly difficult to make repairs or enhancements.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on An Architect’s Dilemna: Should I Rework or Exploit Legacy Architecture? by Simon</title>
		<link>http://wirfs-brock.com/blog/2011/08/30/an-architect%e2%80%99s-dilemna-rework-or-exploit-a-legacy-architecture/comment-page-1/#comment-2495</link>
		<dc:creator>Simon</dc:creator>
		<pubDate>Wed, 31 Aug 2011 15:04:03 +0000</pubDate>
		<guid isPermaLink="false">http://wirfs-brock.com/blog/?p=302#comment-2495</guid>
		<description>I see this very often in the wild. While as a software engineer I pride myself on architecturally inspired designs and implementations, when you&#039;re not the only chef in the kitchen it is impractical to expect there to exist a single vision for how things are to be done. It&#039;s hard enough keeping your own designs and implementations consistent over time, let alone expecting a distributed team do so also. So cruft is plentiful.

One of the biggest challenges I see is that corporations care about little more than shipping code. While I agree that shipping code is job #1, there are many other important jobs (let&#039;s call them job #2, #3 and #4) that, while important, are more often than not, neglected. Sadly, focusing solely on job #1 results in much accumulated technical debt which, over time, burdens the system and can ultimately prevent job #1 from being completed.  So what to do? Well, you can achieve almost anything if you use enough duct tape! But that does not tickle the right part of my brain!

So I know how it feels to want to land the plane, take it apart, and rebuild it piece by piece. But sadly that is never practical despite the obvious benefits. So we&#039;re left with architecturally ugly solutions that are applied to keep the plane flying, regardless of the technical debt it might incur.</description>
		<content:encoded><![CDATA[<p>I see this very often in the wild. While as a software engineer I pride myself on architecturally inspired designs and implementations, when you&#8217;re not the only chef in the kitchen it is impractical to expect there to exist a single vision for how things are to be done. It&#8217;s hard enough keeping your own designs and implementations consistent over time, let alone expecting a distributed team do so also. So cruft is plentiful.</p>
<p>One of the biggest challenges I see is that corporations care about little more than shipping code. While I agree that shipping code is job #1, there are many other important jobs (let&#8217;s call them job #2, #3 and #4) that, while important, are more often than not, neglected. Sadly, focusing solely on job #1 results in much accumulated technical debt which, over time, burdens the system and can ultimately prevent job #1 from being completed.  So what to do? Well, you can achieve almost anything if you use enough duct tape! But that does not tickle the right part of my brain!</p>
<p>So I know how it feels to want to land the plane, take it apart, and rebuild it piece by piece. But sadly that is never practical despite the obvious benefits. So we&#8217;re left with architecturally ugly solutions that are applied to keep the plane flying, regardless of the technical debt it might incur.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Can you really estimate complexity with use cases? by J A Schwartz</title>
		<link>http://wirfs-brock.com/blog/2006/04/18/can-you-really-estimate-complexity-with-use-cases/comment-page-1/#comment-1927</link>
		<dc:creator>J A Schwartz</dc:creator>
		<pubDate>Fri, 08 Jul 2011 17:35:19 +0000</pubDate>
		<guid isPermaLink="false">http://wirfs-brock.com/blog/2006/04/18/can-you-really-estimate-complexity-with-use-cases/#comment-1927</guid>
		<description>Even in a Use Case course or an Object Design course, why not put a Conceptual model in the hub. Usage, states, UI, object collaboration, data descriptions, etc. are all grounded by concepts and their relationships.</description>
		<content:encoded><![CDATA[<p>Even in a Use Case course or an Object Design course, why not put a Conceptual model in the hub. Usage, states, UI, object collaboration, data descriptions, etc. are all grounded by concepts and their relationships.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Agile Architecture Myths #1 Simple Design is Always Better by J A Schwartz</title>
		<link>http://wirfs-brock.com/blog/2010/12/29/agile-architecture-myths-1-simple-design-is-always-better/comment-page-1/#comment-1921</link>
		<dc:creator>J A Schwartz</dc:creator>
		<pubDate>Thu, 07 Jul 2011 17:14:06 +0000</pubDate>
		<guid isPermaLink="false">http://wirfs-brock.com/blog/?p=203#comment-1921</guid>
		<description>I agree with Daniel. Many places I&#039;ve worked or consulted at, the norm is &quot;Ready, Shoot, Aim.&quot; Even when projects are billed as a total make-over, they often don&#039;t touch the more complex appearing aspects of the old system - usually the persistent and/ or domain layers. Instead the presentation layer is just reworked - lipstick on a ...

I have, however, been associated with shops where OOAD is a valued activity. I remember a comment that a friend once told me, &quot;Once you work for an organization with a mature OOAD methodology, you&#039;re never willing to go back to the OK Corrall style of software development.</description>
		<content:encoded><![CDATA[<p>I agree with Daniel. Many places I&#8217;ve worked or consulted at, the norm is &#8220;Ready, Shoot, Aim.&#8221; Even when projects are billed as a total make-over, they often don&#8217;t touch the more complex appearing aspects of the old system &#8211; usually the persistent and/ or domain layers. Instead the presentation layer is just reworked &#8211; lipstick on a &#8230;</p>
<p>I have, however, been associated with shops where OOAD is a valued activity. I remember a comment that a friend once told me, &#8220;Once you work for an organization with a mature OOAD methodology, you&#8217;re never willing to go back to the OK Corrall style of software development.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

