<?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 Reflections on Software Engineering</title>
	<atom:link href="http://neverletdown.net/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://neverletdown.net</link>
	<description>by Michael Keeling</description>
	<lastBuildDate>Sun, 05 Sep 2010 18:51:16 -0500</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Comment on Exploring the Design Space by George Fairbanks</title>
		<link>http://neverletdown.net/2010/09/exploring-the-design-space/#comment-477</link>
		<dc:creator>George Fairbanks</dc:creator>
		<pubDate>Sun, 05 Sep 2010 18:51:16 +0000</pubDate>
		<guid isPermaLink="false">http://neverletdown.net/?p=405#comment-477</guid>
		<description>This is another great essay, Michael.  What I really like is that it is an explanatory framework that helps me understand why things work they way they do -- why some people succeed with lightweight methods and others with up-front analysis.  

I&#039;ve got a question which I hope you can cover in a future essay.  I can make an argument as to why the two dimensions in your model are knowledge about the solution space an problem domain, but I&#039;d like to hear your thoughts on why those are the two key dimensions.  Another dimension could be proficiency in UML or Ruby, or attention to detail, or communication skills.  Or perhaps you would bundle these into one of the existing dimensions, which makes me wonder how (other than conceptually) I could represent my knowledge about the solution or problem space as a single number.

This is not disagreement; I just want to understand your thinking on what comprises each of these dimensions and why these particular dimensions are chosen.  

Regards,

-George</description>
		<content:encoded><![CDATA[<p>This is another great essay, Michael.  What I really like is that it is an explanatory framework that helps me understand why things work they way they do &#8212; why some people succeed with lightweight methods and others with up-front analysis.  </p>
<p>I&#8217;ve got a question which I hope you can cover in a future essay.  I can make an argument as to why the two dimensions in your model are knowledge about the solution space an problem domain, but I&#8217;d like to hear your thoughts on why those are the two key dimensions.  Another dimension could be proficiency in UML or Ruby, or attention to detail, or communication skills.  Or perhaps you would bundle these into one of the existing dimensions, which makes me wonder how (other than conceptually) I could represent my knowledge about the solution or problem space as a single number.</p>
<p>This is not disagreement; I just want to understand your thinking on what comprises each of these dimensions and why these particular dimensions are chosen.  </p>
<p>Regards,</p>
<p>-George</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Improvisational Architecture by Michael Keeling</title>
		<link>http://neverletdown.net/2010/07/improvisational-architecture/#comment-448</link>
		<dc:creator>Michael Keeling</dc:creator>
		<pubDate>Fri, 16 Jul 2010 20:42:23 +0000</pubDate>
		<guid isPermaLink="false">http://neverletdown.net/?p=370#comment-448</guid>
		<description>I guess it all depends on what you need from the system.  If flexibility and functionality are the most important things, and the system is relatively low cost or the design &quot;well understood&quot; (e.g. a web application or a framework makes the design decisions) then I think you can get away with emergent design easily.  Could you improvise/emerge any system?  Probably not, but even with the systems that are a good fit for emergent design, you&#039;re not going to stand much of a chance without a solid background in architecture.</description>
		<content:encoded><![CDATA[<p>I guess it all depends on what you need from the system.  If flexibility and functionality are the most important things, and the system is relatively low cost or the design &#8220;well understood&#8221; (e.g. a web application or a framework makes the design decisions) then I think you can get away with emergent design easily.  Could you improvise/emerge any system?  Probably not, but even with the systems that are a good fit for emergent design, you&#8217;re not going to stand much of a chance without a solid background in architecture.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Improvisational Architecture by Raul Vejar</title>
		<link>http://neverletdown.net/2010/07/improvisational-architecture/#comment-446</link>
		<dc:creator>Raul Vejar</dc:creator>
		<pubDate>Fri, 16 Jul 2010 13:20:08 +0000</pubDate>
		<guid isPermaLink="false">http://neverletdown.net/?p=370#comment-446</guid>
		<description>It is a nice post, although I don&#039;t think I agree with everything in there. To me architecture has always been the part that needs to think and plan ahead, improvising is almost an exact opposite in my mind.
It almost feels an egoistic approach to architecture, relying on snap decisions and instinct more than context and careful analysis. Although this can be somewhat compensated with experience and training, unless you are building the same system over and over again it can not be replaced.
I definitely agree the seven key characteristics you quote and the overall philosophy have an agile flavor to them, but agile teams are not well known for producing well architectured systems. They usually are systems with flexible architectures, but that is not always a good thing when it prevents you from achieving the reliability and maintainability that you require.</description>
		<content:encoded><![CDATA[<p>It is a nice post, although I don&#8217;t think I agree with everything in there. To me architecture has always been the part that needs to think and plan ahead, improvising is almost an exact opposite in my mind.<br />
It almost feels an egoistic approach to architecture, relying on snap decisions and instinct more than context and careful analysis. Although this can be somewhat compensated with experience and training, unless you are building the same system over and over again it can not be replaced.<br />
I definitely agree the seven key characteristics you quote and the overall philosophy have an agile flavor to them, but agile teams are not well known for producing well architectured systems. They usually are systems with flexible architectures, but that is not always a good thing when it prevents you from achieving the reliability and maintainability that you require.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Lightweight Experiments for Process Improvement by Incorrect measures can yield bad decisions &#171; True Lean Development</title>
		<link>http://neverletdown.net/2010/06/lightweight-experiments-for-process-improvement/#comment-443</link>
		<dc:creator>Incorrect measures can yield bad decisions &#171; True Lean Development</dc:creator>
		<pubDate>Tue, 13 Jul 2010 02:35:10 +0000</pubDate>
		<guid isPermaLink="false">http://neverletdown.net/?p=339#comment-443</guid>
		<description>[...] I was reading this interesting blog entry and related paper on the use of lightweight experiments to make decisions in Agile projects.  Before I get into my [...]</description>
		<content:encoded><![CDATA[<p>[...] I was reading this interesting blog entry and related paper on the use of lightweight experiments to make decisions in Agile projects.  Before I get into my [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Hacking is not a Dirty Word by Michael Keeling</title>
		<link>http://neverletdown.net/2010/07/hacking-is-not-a-dirty-word/#comment-437</link>
		<dc:creator>Michael Keeling</dc:creator>
		<pubDate>Tue, 06 Jul 2010 22:41:59 +0000</pubDate>
		<guid isPermaLink="false">http://neverletdown.net/?p=358#comment-437</guid>
		<description>In my mind, for a long time anyway, there is a very strong, negative connotation to &quot;hacking&quot; something.  The idea of a &quot;hack&quot; is probably my biggest influencer, someone who consistently creates and sells intentionally low quality content, a person who whores out their talents for cold hard cash at the sacrifice of professional integrity.  This is further backed by the idea of a &quot;quick and dirty hack&quot; created in code.  This very statement bluntly acknowledges that you are not spending the time to do it right and the result will soil the code base.  Only a hack would do such a thing, right?

Aaron, I think you&#039;ve captured the essence of what I was struggling with quite well in your comment.  Just like the term &quot;software engineering,&quot; the definition for &quot;hacking&quot; changes based on context and might mean different things to different people at different times.  The main point is that it&#039;s wrong to think of &quot;hacking&quot; and &quot;hacks&quot; as being the same thing.

As an engineer, the romanticized hacker persona, the person who goes home one weekend and cranks out a pile of amazing code that &quot;just works&quot; but nobody understands, makes me nervous.  But once I realized there are guard rails in place that help prevent this sort of unpredictable, super human behavior (and actually helps to make predictable, super human teams) - one example coming from agile software development processes - hacking becomes something far more positive.

Now, hacking to me is all about action and responsibility.  It doesn&#039;t really matter what context you put it in.</description>
		<content:encoded><![CDATA[<p>In my mind, for a long time anyway, there is a very strong, negative connotation to &#8220;hacking&#8221; something.  The idea of a &#8220;hack&#8221; is probably my biggest influencer, someone who consistently creates and sells intentionally low quality content, a person who whores out their talents for cold hard cash at the sacrifice of professional integrity.  This is further backed by the idea of a &#8220;quick and dirty hack&#8221; created in code.  This very statement bluntly acknowledges that you are not spending the time to do it right and the result will soil the code base.  Only a hack would do such a thing, right?</p>
<p>Aaron, I think you&#8217;ve captured the essence of what I was struggling with quite well in your comment.  Just like the term &#8220;software engineering,&#8221; the definition for &#8220;hacking&#8221; changes based on context and might mean different things to different people at different times.  The main point is that it&#8217;s wrong to think of &#8220;hacking&#8221; and &#8220;hacks&#8221; as being the same thing.</p>
<p>As an engineer, the romanticized hacker persona, the person who goes home one weekend and cranks out a pile of amazing code that &#8220;just works&#8221; but nobody understands, makes me nervous.  But once I realized there are guard rails in place that help prevent this sort of unpredictable, super human behavior (and actually helps to make predictable, super human teams) &#8211; one example coming from agile software development processes &#8211; hacking becomes something far more positive.</p>
<p>Now, hacking to me is all about action and responsibility.  It doesn&#8217;t really matter what context you put it in.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Hacking is not a Dirty Word by Aaron</title>
		<link>http://neverletdown.net/2010/07/hacking-is-not-a-dirty-word/#comment-436</link>
		<dc:creator>Aaron</dc:creator>
		<pubDate>Sun, 04 Jul 2010 17:57:01 +0000</pubDate>
		<guid isPermaLink="false">http://neverletdown.net/?p=358#comment-436</guid>
		<description>I&#039;m still not sure what you mean by &quot;hacking&quot; - before or after. Is hacking exploration/experimentation? Or programming quickly? Is it agile software development?

&quot;Hacking&quot; is, to me, a very ambiguous term. It means nothing until whoever says it gives some context or meaning. &quot;I just hacked this together really quick&quot; &quot;He&#039;s hacking my computer&quot; &quot;He&#039;s a great hacker&quot; &quot;Open source needs more hackers&quot;

I think, at the broadest level, hacking means using technology to do something with surprising ease. Hackers - as in Hackers and Painters - have this amazing ability to express themselves in code - it just flows and it seems very easy. Hacking - as in script-kiddie, black-hat/white-hat - is about bypassing cyber-security barriers with surprising ease. Hacking - as in life hacking, brain hacks - is using tricks or technology to make self-improvement, or productivity, or learning easy. Hacking - as in hacking it together, quick and dirty - is sacrificing quality (readability, cohesion, tests, edge cases, ux...) to make writing a program surprisingly easy.

Old-school style hackers are a little of the first and last definition. They are very productive and know a ton about a system, but also have a willingness to write some code that nobody else will be able to follow, but which takes advantage of this and that side-effect to Just Work. Hacking on an open source project just means programming; the etymology comes from open source&#039;s past and it appeals to people enough that it hasn&#039;t gone away.

I guess I would say that &quot;hacking&quot; /is/ a dirty word. Not because &quot;hacking&quot; is bad - each definition certainly has a time when it is useful - but because &quot;hacking&quot; has so many different meanings that it&#039;s not clear what you&#039;re trying to say.</description>
		<content:encoded><![CDATA[<p>I&#8217;m still not sure what you mean by &#8220;hacking&#8221; &#8211; before or after. Is hacking exploration/experimentation? Or programming quickly? Is it agile software development?</p>
<p>&#8220;Hacking&#8221; is, to me, a very ambiguous term. It means nothing until whoever says it gives some context or meaning. &#8220;I just hacked this together really quick&#8221; &#8220;He&#8217;s hacking my computer&#8221; &#8220;He&#8217;s a great hacker&#8221; &#8220;Open source needs more hackers&#8221;</p>
<p>I think, at the broadest level, hacking means using technology to do something with surprising ease. Hackers &#8211; as in Hackers and Painters &#8211; have this amazing ability to express themselves in code &#8211; it just flows and it seems very easy. Hacking &#8211; as in script-kiddie, black-hat/white-hat &#8211; is about bypassing cyber-security barriers with surprising ease. Hacking &#8211; as in life hacking, brain hacks &#8211; is using tricks or technology to make self-improvement, or productivity, or learning easy. Hacking &#8211; as in hacking it together, quick and dirty &#8211; is sacrificing quality (readability, cohesion, tests, edge cases, ux&#8230;) to make writing a program surprisingly easy.</p>
<p>Old-school style hackers are a little of the first and last definition. They are very productive and know a ton about a system, but also have a willingness to write some code that nobody else will be able to follow, but which takes advantage of this and that side-effect to Just Work. Hacking on an open source project just means programming; the etymology comes from open source&#8217;s past and it appeals to people enough that it hasn&#8217;t gone away.</p>
<p>I guess I would say that &#8220;hacking&#8221; /is/ a dirty word. Not because &#8220;hacking&#8221; is bad &#8211; each definition certainly has a time when it is useful &#8211; but because &#8220;hacking&#8221; has so many different meanings that it&#8217;s not clear what you&#8217;re trying to say.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Process Affordances: Ignore at Your own Peril by Alistair Cockburn</title>
		<link>http://neverletdown.net/2009/03/process-affordances-ignore-at-your-own-peril/#comment-398</link>
		<dc:creator>Alistair Cockburn</dc:creator>
		<pubDate>Fri, 11 Jun 2010 04:02:39 +0000</pubDate>
		<guid isPermaLink="false">http://neverletdown.net/?p=26#comment-398</guid>
		<description>Lovely idea, &quot;affordances&quot; of processes. Many thanks, this will give me a new way of looking at processes. I&#039;ll see if I can train myself to spot the affordances in either direction (and I bought &quot;Nudges&quot; along the way). 

lovely thoughts, lovely blog, thanks, 

Alistair</description>
		<content:encoded><![CDATA[<p>Lovely idea, &#8220;affordances&#8221; of processes. Many thanks, this will give me a new way of looking at processes. I&#8217;ll see if I can train myself to spot the affordances in either direction (and I bought &#8220;Nudges&#8221; along the way). </p>
<p>lovely thoughts, lovely blog, thanks, </p>
<p>Alistair</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on SWOT vs. Risk Management by Glenn</title>
		<link>http://neverletdown.net/2010/02/swot-vs-risk-management/#comment-171</link>
		<dc:creator>Glenn</dc:creator>
		<pubDate>Fri, 26 Feb 2010 17:03:36 +0000</pubDate>
		<guid isPermaLink="false">http://neverletdown.net/?p=174#comment-171</guid>
		<description>This is a very good question. Thanks for answering it and thanks for the link to the SEI document on DMAIC style risk analysis. You might be interested in http://www.dynamicalsoftware.com/news/?p=61 which goes into more details on managing risk, especially for software development projects.</description>
		<content:encoded><![CDATA[<p>This is a very good question. Thanks for answering it and thanks for the link to the SEI document on DMAIC style risk analysis. You might be interested in <a href="http://www.dynamicalsoftware.com/news/?p=61" rel="nofollow">http://www.dynamicalsoftware.com/news/?p=61</a> which goes into more details on managing risk, especially for software development projects.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on SWOT vs. Risk Management by Rich Horwath</title>
		<link>http://neverletdown.net/2010/02/swot-vs-risk-management/#comment-164</link>
		<dc:creator>Rich Horwath</dc:creator>
		<pubDate>Tue, 16 Feb 2010 16:28:29 +0000</pubDate>
		<guid isPermaLink="false">http://neverletdown.net/?p=174#comment-164</guid>
		<description>Great points on understanding the different purposes in using SWOT and other tools such as risk management. Too often we dive right into strategic planning without carefully assessing which tools will generate the most insights for our business.</description>
		<content:encoded><![CDATA[<p>Great points on understanding the different purposes in using SWOT and other tools such as risk management. Too often we dive right into strategic planning without carefully assessing which tools will generate the most insights for our business.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Exploring Archetypes of Architects by Michael Keeling</title>
		<link>http://neverletdown.net/2009/10/exploring-archetypes-of-architects/#comment-119</link>
		<dc:creator>Michael Keeling</dc:creator>
		<pubDate>Thu, 12 Nov 2009 19:09:00 +0000</pubDate>
		<guid isPermaLink="false">http://neverletdown.net/?p=115#comment-119</guid>
		<description>Excellent call on the Professor.  While my profs here at CMU have tons of experience with software architecture, (mostly with large avionics/DoD systems which isn&#039;t always applicable to smaller systems) some haven&#039;t been in the trenches for a few years which occasionally leads to interesting advice.</description>
		<content:encoded><![CDATA[<p>Excellent call on the Professor.  While my profs here at CMU have tons of experience with software architecture, (mostly with large avionics/DoD systems which isn&#8217;t always applicable to smaller systems) some haven&#8217;t been in the trenches for a few years which occasionally leads to interesting advice.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Exploring Archetypes of Architects by William Martinez</title>
		<link>http://neverletdown.net/2009/10/exploring-archetypes-of-architects/#comment-106</link>
		<dc:creator>William Martinez</dc:creator>
		<pubDate>Sun, 01 Nov 2009 21:00:07 +0000</pubDate>
		<guid isPermaLink="false">http://neverletdown.net/?p=115#comment-106</guid>
		<description>If you have the student, then you may have the Professor: Knows all theory and is very good at teaching to others and finding problems with their works, but has no idea of how the street really is.

You can also add Pseudo-Architects:
1. One Fang: Those who are experts on one technology or platform, many years of experience, and know about architecting, but lack the rest of the one mile wide, one inch deep knowledge.
2. Dark side forcers: Those that know all of one side (IT) but lack the business and process insight. 
3. The promotional ones. Those that went up the promotion ladder, and found that the next step after senior engineer was becoming an architect, and are promoted just because of years and experience (and to be able to pay them more).</description>
		<content:encoded><![CDATA[<p>If you have the student, then you may have the Professor: Knows all theory and is very good at teaching to others and finding problems with their works, but has no idea of how the street really is.</p>
<p>You can also add Pseudo-Architects:<br />
1. One Fang: Those who are experts on one technology or platform, many years of experience, and know about architecting, but lack the rest of the one mile wide, one inch deep knowledge.<br />
2. Dark side forcers: Those that know all of one side (IT) but lack the business and process insight.<br />
3. The promotional ones. Those that went up the promotion ladder, and found that the next step after senior engineer was becoming an architect, and are promoted just because of years and experience (and to be able to pay them more).</p>
]]></content:encoded>
	</item>
</channel>
</rss>
