<?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 on: Three Things The CPM Doesn&#8217;t Want to Hear</title>
	<atom:link href="http://crankypm.com/2008/07/three-things-the-cpm-doesnt-want-to-hear/feed/" rel="self" type="application/rss+xml" />
	<link>http://crankypm.com/2008/07/three-things-the-cpm-doesnt-want-to-hear/</link>
	<description>Product management and the ugly side of software product development.</description>
	<lastBuildDate>Fri, 12 Mar 2010 19:24:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Wicked Fun Game Highlighting the Never-Ending Battle Between Product Management and Development &#124; The Cranky Product Manager</title>
		<link>http://crankypm.com/2008/07/three-things-the-cpm-doesnt-want-to-hear/comment-page-1/#comment-1749</link>
		<dc:creator>Wicked Fun Game Highlighting the Never-Ending Battle Between Product Management and Development &#124; The Cranky Product Manager</dc:creator>
		<pubDate>Tue, 23 Dec 2008 00:19:16 +0000</pubDate>
		<guid isPermaLink="false">http://crankypm.com/crankypm/2008/07/three-things-the-cpm-doesnt-want-to-hear/#comment-1749</guid>
		<description>[...] Three Things the Cranky Product Manager Doesn&#8217;t Want to Hear     Share and Enjoy: [...]</description>
		<content:encoded><![CDATA[<p>[...] Three Things the Cranky Product Manager Doesn&#8217;t Want to Hear     Share and Enjoy: [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: cpm</title>
		<link>http://crankypm.com/2008/07/three-things-the-cpm-doesnt-want-to-hear/comment-page-1/#comment-1431</link>
		<dc:creator>cpm</dc:creator>
		<pubDate>Tue, 25 Nov 2008 18:20:45 +0000</pubDate>
		<guid isPermaLink="false">http://crankypm.com/crankypm/2008/07/three-things-the-cpm-doesnt-want-to-hear/#comment-1431</guid>
		<description>An awesome article! It containes some nice thoughts I like a lot! Good job :)</description>
		<content:encoded><![CDATA[<p>An awesome article! It containes some nice thoughts I like a lot! Good job :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jbrandt</title>
		<link>http://crankypm.com/2008/07/three-things-the-cpm-doesnt-want-to-hear/comment-page-1/#comment-651</link>
		<dc:creator>jbrandt</dc:creator>
		<pubDate>Tue, 19 Aug 2008 23:58:37 +0000</pubDate>
		<guid isPermaLink="false">http://crankypm.com/crankypm/2008/07/three-things-the-cpm-doesnt-want-to-hear/#comment-651</guid>
		<description>&lt;p&gt;Okay, so I feel obliged to defend rearchitecting. Yes, it&#039;s true that often it&#039;s just an excuse not to dig through whatever was built by one&#039;s predecessor (which is, I agree, boring), but not always.&lt;/p&gt;

&lt;p&gt;Depending on how long a project has been underway, technology may have changed. The requirements of the project may have changed, Or (and this is less rare than you&#039;d think), the previous architect may have had had strange or straight-out wrong ideas of how to do things and the final product of the project may have the potential to end up crippled if it isn&#039;t rearchitected. Good project management can help stave off these potential problems, but, well, good project managers aren&#039;t as common as you&#039;d hope either. In a perfect world, you&#039;d sit down to work on a project and the spec would describe exactly what the product should look like when it&#039;s done, in every detail, and that spec would never need to be revised. &lt;/p&gt;

&lt;p&gt;To extend your house metaphor-- what if you want to remodel the bathroom, but your predecessor decided that the foundation of the house should be made of the lightest possible material that could still hold up the original bathtub installed in the house, and you want to install a fancy whirlpool tub? Do you cram that sucker in there and just kinda hope the foundation doesn&#039;t crumble beneath its new burden? &lt;/p&gt;

&lt;p&gt;Here&#039;s a real-life example. We work with a Learning Management System that uses, as a back-end, raw text files on the hard drive. There are files everywhere, plaintext with all sorts of embedded markup that only the LMS itself can interpret. Fake relational database-type operations are done by reading and writing to multiple files all over the disk. This is fine when the system isn&#039;t heavily used, but once there are more than a few hundred classes on that system, each of which has 30-50 pupils and each of which includes a bunch of quizzes and homework assignments, that flat text file architecture becomes a serious performance bottleneck. You could start throwing hardware at the problem-- faster disks, fancy file systems, caching RAID controllers, and so on-- but that&#039;s only a stopgap. Eventually the system will bog down under the weight of all this disk IO and start to hinder the classes it was designed to facilitate. At this point (or ideally BEFORE this point) if you can&#039;t easily swap out the backend and tell it to use a real database, it&#039;s time to (gasp!) rearchitect the system. &lt;/p&gt;

&lt;p&gt;I agree that often this is used as an excuse for engineers to not have to bother figuring out what&#039;s going on, although, heck, I&#039;ve seen software systems that were so complex and so poorly-documented that it was almost easier to rebuild them than to take them apart and put them back together. Again, in an ideal world this doesn&#039;t happen, and every programmer writes copious complete and readable documentation and makes sure it&#039;s kept up-to-date throughout the lifecycle of a project (or product), but, well. Programmers and documentation. &lt;/p&gt;

&lt;p&gt;So, I&#039;d say rather than just saying &quot;Never ever tell me to re-architect!&quot; you should qualify that-- if somebody wants to rearchitect, they should have a good reason and be able to back it up with data and information on WHY they think this needs to happen. Saying that you should NEVER rearchitect, though, is just setting yourself up for shipping crappy products.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Okay, so I feel obliged to defend rearchitecting. Yes, it&#8217;s true that often it&#8217;s just an excuse not to dig through whatever was built by one&#8217;s predecessor (which is, I agree, boring), but not always.</p>
<p>Depending on how long a project has been underway, technology may have changed. The requirements of the project may have changed, Or (and this is less rare than you&#8217;d think), the previous architect may have had had strange or straight-out wrong ideas of how to do things and the final product of the project may have the potential to end up crippled if it isn&#8217;t rearchitected. Good project management can help stave off these potential problems, but, well, good project managers aren&#8217;t as common as you&#8217;d hope either. In a perfect world, you&#8217;d sit down to work on a project and the spec would describe exactly what the product should look like when it&#8217;s done, in every detail, and that spec would never need to be revised. </p>
<p>To extend your house metaphor&#8211; what if you want to remodel the bathroom, but your predecessor decided that the foundation of the house should be made of the lightest possible material that could still hold up the original bathtub installed in the house, and you want to install a fancy whirlpool tub? Do you cram that sucker in there and just kinda hope the foundation doesn&#8217;t crumble beneath its new burden? </p>
<p>Here&#8217;s a real-life example. We work with a Learning Management System that uses, as a back-end, raw text files on the hard drive. There are files everywhere, plaintext with all sorts of embedded markup that only the LMS itself can interpret. Fake relational database-type operations are done by reading and writing to multiple files all over the disk. This is fine when the system isn&#8217;t heavily used, but once there are more than a few hundred classes on that system, each of which has 30-50 pupils and each of which includes a bunch of quizzes and homework assignments, that flat text file architecture becomes a serious performance bottleneck. You could start throwing hardware at the problem&#8211; faster disks, fancy file systems, caching RAID controllers, and so on&#8211; but that&#8217;s only a stopgap. Eventually the system will bog down under the weight of all this disk IO and start to hinder the classes it was designed to facilitate. At this point (or ideally BEFORE this point) if you can&#8217;t easily swap out the backend and tell it to use a real database, it&#8217;s time to (gasp!) rearchitect the system. </p>
<p>I agree that often this is used as an excuse for engineers to not have to bother figuring out what&#8217;s going on, although, heck, I&#8217;ve seen software systems that were so complex and so poorly-documented that it was almost easier to rebuild them than to take them apart and put them back together. Again, in an ideal world this doesn&#8217;t happen, and every programmer writes copious complete and readable documentation and makes sure it&#8217;s kept up-to-date throughout the lifecycle of a project (or product), but, well. Programmers and documentation. </p>
<p>So, I&#8217;d say rather than just saying &#8220;Never ever tell me to re-architect!&#8221; you should qualify that&#8211; if somebody wants to rearchitect, they should have a good reason and be able to back it up with data and information on WHY they think this needs to happen. Saying that you should NEVER rearchitect, though, is just setting yourself up for shipping crappy products.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jim Foxworthy</title>
		<link>http://crankypm.com/2008/07/three-things-the-cpm-doesnt-want-to-hear/comment-page-1/#comment-652</link>
		<dc:creator>Jim Foxworthy</dc:creator>
		<pubDate>Wed, 13 Aug 2008 21:41:11 +0000</pubDate>
		<guid isPermaLink="false">http://crankypm.com/crankypm/2008/07/three-things-the-cpm-doesnt-want-to-hear/#comment-652</guid>
		<description>&lt;p&gt;My response to &quot;impossible&quot; has been the same for years. I grab a dry erase marker, hand it to the developer, pull up a chair and say, &quot;That&#039;s interesting. Teach me why.&quot;&lt;/p&gt;

&lt;p&gt;Either I have asked for anti-gravity boots and they ARE impossible (and I should stop asking for things like that) OR the developer is trying to blow smoke in my face. In which case I&#039;ll see through that smoke during the &#039;teaching&#039;. &lt;/p&gt;

&lt;p&gt;Now, if I could just write with the same evocative style as &#039;remember the last time you had vomit in your mouth...&#039; (smile).&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>My response to &#8220;impossible&#8221; has been the same for years. I grab a dry erase marker, hand it to the developer, pull up a chair and say, &#8220;That&#8217;s interesting. Teach me why.&#8221;</p>
<p>Either I have asked for anti-gravity boots and they ARE impossible (and I should stop asking for things like that) OR the developer is trying to blow smoke in my face. In which case I&#8217;ll see through that smoke during the &#8216;teaching&#8217;. </p>
<p>Now, if I could just write with the same evocative style as &#8216;remember the last time you had vomit in your mouth&#8230;&#8217; (smile).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: S@L</title>
		<link>http://crankypm.com/2008/07/three-things-the-cpm-doesnt-want-to-hear/comment-page-1/#comment-653</link>
		<dc:creator>S@L</dc:creator>
		<pubDate>Thu, 31 Jul 2008 23:33:12 +0000</pubDate>
		<guid isPermaLink="false">http://crankypm.com/crankypm/2008/07/three-things-the-cpm-doesnt-want-to-hear/#comment-653</guid>
		<description>&lt;p&gt;RE-ARCHITECTING! An excellent subject for discussion! Someone once told me that re-architecting is an engineer&#039;s way of leaving his/her &quot;mark&quot; on a tech stack, like spraying their scent on the company.  A close cousin of re-architecting is the inevitable RE-FACTORING discussion. &lt;/p&gt;

&lt;p&gt;All engineers will say that their predecessors&#039; work was crap, and my theory is that if you trace the historical lineage of all products ever built, you will eventually arrive at the crappiest engineer in all of software history.&lt;/p&gt;

&lt;p&gt;And another thing!&lt;/p&gt;

&lt;p&gt;When you are hired into any job, you have to first make sense of your predecessor&#039;s work, right? Work is hard. &lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>RE-ARCHITECTING! An excellent subject for discussion! Someone once told me that re-architecting is an engineer&#8217;s way of leaving his/her &#8220;mark&#8221; on a tech stack, like spraying their scent on the company.  A close cousin of re-architecting is the inevitable RE-FACTORING discussion. </p>
<p>All engineers will say that their predecessors&#8217; work was crap, and my theory is that if you trace the historical lineage of all products ever built, you will eventually arrive at the crappiest engineer in all of software history.</p>
<p>And another thing!</p>
<p>When you are hired into any job, you have to first make sense of your predecessor&#8217;s work, right? Work is hard. </p>
]]></content:encoded>
	</item>
</channel>
</rss>
