<?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"
	>
<channel>
	<title>Comments on: The Software Administration Role Pattern</title>
	<atom:link href="http://www.basilv.com/psd/blog/2006/the-software-administration-role-pattern/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.basilv.com/psd/blog/2006/the-software-administration-role-pattern</link>
	<description></description>
	<pubDate>Sun, 20 Jul 2008 23:30:17 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>By: Basil Vandegriend</title>
		<link>http://www.basilv.com/psd/blog/2006/the-software-administration-role-pattern#comment-56</link>
		<dc:creator>Basil Vandegriend</dc:creator>
		<pubDate>Tue, 07 Mar 2006 14:42:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.basilv.com/psd/blog/2006/the-infrastructure-role-pattern#comment-56</guid>
		<description>I decided to rename the pattern as the Software Administration Role pattern, and updated the article (and page URL) accordingly.</description>
		<content:encoded><![CDATA[<p>I decided to rename the pattern as the Software Administration Role pattern, and updated the article (and page URL) accordingly.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Basil Vandegriend</title>
		<link>http://www.basilv.com/psd/blog/2006/the-software-administration-role-pattern#comment-55</link>
		<dc:creator>Basil Vandegriend</dc:creator>
		<pubDate>Mon, 06 Mar 2006 16:25:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.basilv.com/psd/blog/2006/the-infrastructure-role-pattern#comment-55</guid>
		<description>Thanks for the thoughtful comment - I'll respond to some of the points:

1. I did intend the first meaning. Actually, both make sense: minimize the number of developers creating new functionality and minimize the number working on infrastructure.

Now that you mentioned it, I can see how the term 'infrastructure' may be easily misinterpreted. I'm not sure what else to call it. I'm not keen on your suggestions. The term 'Build Role' or 'Build Team' may be appropriate, and is somewhat commonly used, but the activities I outlined as infrastructure tasks encompass more than just managing the build. Maybe 'Software Admin Role' is a more accurate description. They are administrative tasks in the context of a software development project (as opposed to general administrative tasks common to any business or project).

3, 4: I think I made a good case for why software administration tasks are important and necessary. Many of them can be justified from a productivity or risk-management basis. I think it is rare that external customers will be given enough visibility into a project to see these types of tasks. Usually the issue is a senior manager. :) It is funny that project management is another overhead activity that doesn't produce functionality, yet senior management (or customers) expect it to be in place.

5. If your development team isn't capable of maintaining necessary processes, fix the team instead of adding external police. You do need someone on the team responsible for maintaining necessary process - this is usually the lead / architect, but could be the person in the infrastructure role.

And thanks for the catch on my misspelling of Coplien - I've corrected the article.</description>
		<content:encoded><![CDATA[<p>Thanks for the thoughtful comment - I&#8217;ll respond to some of the points:</p>
<p>1. I did intend the first meaning. Actually, both make sense: minimize the number of developers creating new functionality and minimize the number working on infrastructure.</p>
<p>Now that you mentioned it, I can see how the term &#8216;infrastructure&#8217; may be easily misinterpreted. I&#8217;m not sure what else to call it. I&#8217;m not keen on your suggestions. The term &#8216;Build Role&#8217; or &#8216;Build Team&#8217; may be appropriate, and is somewhat commonly used, but the activities I outlined as infrastructure tasks encompass more than just managing the build. Maybe &#8216;Software Admin Role&#8217; is a more accurate description. They are administrative tasks in the context of a software development project (as opposed to general administrative tasks common to any business or project).</p>
<p>3, 4: I think I made a good case for why software administration tasks are important and necessary. Many of them can be justified from a productivity or risk-management basis. I think it is rare that external customers will be given enough visibility into a project to see these types of tasks. Usually the issue is a senior manager. :) It is funny that project management is another overhead activity that doesn&#8217;t produce functionality, yet senior management (or customers) expect it to be in place.</p>
<p>5. If your development team isn&#8217;t capable of maintaining necessary processes, fix the team instead of adding external police. You do need someone on the team responsible for maintaining necessary process - this is usually the lead / architect, but could be the person in the infrastructure role.</p>
<p>And thanks for the catch on my misspelling of Coplien - I&#8217;ve corrected the article.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dwayne</title>
		<link>http://www.basilv.com/psd/blog/2006/the-software-administration-role-pattern#comment-52</link>
		<dc:creator>Dwayne</dc:creator>
		<pubDate>Mon, 06 Mar 2006 04:28:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.basilv.com/psd/blog/2006/the-infrastructure-role-pattern#comment-52</guid>
		<description>Given your overall context, is this sentence fragment

"minimize the number of developers that are directly creating new functionality" 

supposed to be this 

"minimize the number of developers that are directly creating new infrastructure"?

You might consider changing the word "infrastructure" to "process" or "development process" or..., as infrastructure has somewhat different connotations than this subject matter, at least to me.  Of course, I may just be interpreting things incorrectly.

This topic is awfully similar to the concept of technical debt, which could also be cast as process debt in many cases.

A few things to add to/challenge your cogitation on the topic:

1. Do you agree that developers are (implicitly) taught to disregard process by the mechanisms we use to teach developers (i.e. most curricula require at most 1 course on the "engineering" aspects of software development, while students hack out "good enough" code in many)?  Are developers taught to be cowboys rather than to be disciplined, or is this just a rational response to circumstance?  Do professionals want their paycheques less?

2. The optimal solution to this problem is not to write/create infrastructure at all.  Choose the appropriate toolset (including processes) and only write/create infrastructure where it doesn't exist or the cost/benefit of not having it is not there.  Reuse before buy before build.

3. A lot of the things you class as infrastructure simply "shouldn't" (a dangerous word) be missing from development, depending on its needed formality.  Another class of solutions then would be to step back and see how much process you need before starting the (next) iteration.  If the need has changed, then include the development of the process in the iteration,and share out the duties.  Of course, selling your customer on this will be hard.  Why should I pay you to learn to use your hammer?

4. Is it really neglectful not to consider infrastructure?  Your customers only care about functionality.  Should you give your customers "more" professionalism than they expect?  Than they require?  Than they will pay for (at this time)?  How do you sell them the value of what you are doing?  Or is this all just a "black ops" effort?

5. How do you make all this work if no one is policing the new processes?  What magic makes this work, so you are not continually re-inventing?

6. Could the "sacrifice one person pattern" be renamed the "Donner Party" pattern? Or the "Mayan Altar" pattern? =;-&#62;

One final nit from a nit-wit:  it's "Coplien".</description>
		<content:encoded><![CDATA[<p>Given your overall context, is this sentence fragment</p>
<p>&#8220;minimize the number of developers that are directly creating new functionality&#8221; </p>
<p>supposed to be this </p>
<p>&#8220;minimize the number of developers that are directly creating new infrastructure&#8221;?</p>
<p>You might consider changing the word &#8220;infrastructure&#8221; to &#8220;process&#8221; or &#8220;development process&#8221; or&#8230;, as infrastructure has somewhat different connotations than this subject matter, at least to me.  Of course, I may just be interpreting things incorrectly.</p>
<p>This topic is awfully similar to the concept of technical debt, which could also be cast as process debt in many cases.</p>
<p>A few things to add to/challenge your cogitation on the topic:</p>
<p>1. Do you agree that developers are (implicitly) taught to disregard process by the mechanisms we use to teach developers (i.e. most curricula require at most 1 course on the &#8220;engineering&#8221; aspects of software development, while students hack out &#8220;good enough&#8221; code in many)?  Are developers taught to be cowboys rather than to be disciplined, or is this just a rational response to circumstance?  Do professionals want their paycheques less?</p>
<p>2. The optimal solution to this problem is not to write/create infrastructure at all.  Choose the appropriate toolset (including processes) and only write/create infrastructure where it doesn&#8217;t exist or the cost/benefit of not having it is not there.  Reuse before buy before build.</p>
<p>3. A lot of the things you class as infrastructure simply &#8220;shouldn&#8217;t&#8221; (a dangerous word) be missing from development, depending on its needed formality.  Another class of solutions then would be to step back and see how much process you need before starting the (next) iteration.  If the need has changed, then include the development of the process in the iteration,and share out the duties.  Of course, selling your customer on this will be hard.  Why should I pay you to learn to use your hammer?</p>
<p>4. Is it really neglectful not to consider infrastructure?  Your customers only care about functionality.  Should you give your customers &#8220;more&#8221; professionalism than they expect?  Than they require?  Than they will pay for (at this time)?  How do you sell them the value of what you are doing?  Or is this all just a &#8220;black ops&#8221; effort?</p>
<p>5. How do you make all this work if no one is policing the new processes?  What magic makes this work, so you are not continually re-inventing?</p>
<p>6. Could the &#8220;sacrifice one person pattern&#8221; be renamed the &#8220;Donner Party&#8221; pattern? Or the &#8220;Mayan Altar&#8221; pattern? =;-&gt;</p>
<p>One final nit from a nit-wit:  it&#8217;s &#8220;Coplien&#8221;.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
