<?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: No one should work alone.  Ever.</title>
	<atom:link href="http://blog.markturansky.com/archives/69/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.markturansky.com/archives/69</link>
	<description>software architecture &#38; engineering, code hints, sometimes philosophy, photography, life, etc.</description>
	<lastBuildDate>Wed, 07 Jul 2010 08:09:58 -0400</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Bubba</title>
		<link>http://blog.markturansky.com/archives/69/comment-page-1#comment-637</link>
		<dc:creator>Bubba</dc:creator>
		<pubDate>Mon, 31 Mar 2008 00:42:29 +0000</pubDate>
		<guid isPermaLink="false">http://blog.markturansky.com/archives/69#comment-637</guid>
		<description>I agree with PJ (and Mark) about the &quot;never&quot; part. If you can never get better solutions from working with others then that means that you are smarter than all the rest of the team/employees put together. If that&#039;s where you find yourself, then you need to leave quickly!

If you are the smartest person in the place, either in truth or in your perception, then you are probably going to fall behind your peers who work in other organizations where they can work with talented professionals, have their ideas challenged, and improve through collaboration.

I have been fortunate throughout my career to work with very good software developers, architects, and problem solvers. While I think that I have been able to bring a lot to the table over the last 15 years, I believe that the best ideas and solutions have come through a collaborative process.

So, I don&#039;t think Mark is saying that you cannot come up with solutions when working by yourself. It&#039;s more to the point that you will typically get better solutions when working with others.

Bubba</description>
		<content:encoded><![CDATA[<p>I agree with PJ (and Mark) about the &#8220;never&#8221; part. If you can never get better solutions from working with others then that means that you are smarter than all the rest of the team/employees put together. If that&#8217;s where you find yourself, then you need to leave quickly!</p>
<p>If you are the smartest person in the place, either in truth or in your perception, then you are probably going to fall behind your peers who work in other organizations where they can work with talented professionals, have their ideas challenged, and improve through collaboration.</p>
<p>I have been fortunate throughout my career to work with very good software developers, architects, and problem solvers. While I think that I have been able to bring a lot to the table over the last 15 years, I believe that the best ideas and solutions have come through a collaborative process.</p>
<p>So, I don&#8217;t think Mark is saying that you cannot come up with solutions when working by yourself. It&#8217;s more to the point that you will typically get better solutions when working with others.</p>
<p>Bubba</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PJ</title>
		<link>http://blog.markturansky.com/archives/69/comment-page-1#comment-603</link>
		<dc:creator>PJ</dc:creator>
		<pubDate>Fri, 28 Mar 2008 01:49:59 +0000</pubDate>
		<guid isPermaLink="false">http://blog.markturansky.com/archives/69#comment-603</guid>
		<description>Despite the one-sided-ness (unintentional, I&#039;m sure) of your examples that Rob W points out, I agree with you completely.  Anyone who thinks they know it all or are &#039;more disciplined in keeping my code abstract and clean then most people&#039; or have some other excuse that exempts this from this rule is just fooling themselves.  Pair programming is one way to do it, code review is another; at my office no production code gets checked in without going through code review, meaning at least one (and possibly a half dozen!) people have peered at your changes and at least made an attempt at constructive criticism.  I&#039;d never go back to working any other way.</description>
		<content:encoded><![CDATA[<p>Despite the one-sided-ness (unintentional, I&#8217;m sure) of your examples that Rob W points out, I agree with you completely.  Anyone who thinks they know it all or are &#8216;more disciplined in keeping my code abstract and clean then most people&#8217; or have some other excuse that exempts this from this rule is just fooling themselves.  Pair programming is one way to do it, code review is another; at my office no production code gets checked in without going through code review, meaning at least one (and possibly a half dozen!) people have peered at your changes and at least made an attempt at constructive criticism.  I&#8217;d never go back to working any other way.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rob W</title>
		<link>http://blog.markturansky.com/archives/69/comment-page-1#comment-602</link>
		<dc:creator>Rob W</dc:creator>
		<pubDate>Thu, 27 Mar 2008 20:30:17 +0000</pubDate>
		<guid isPermaLink="false">http://blog.markturansky.com/archives/69#comment-602</guid>
		<description>I guess I agree with just about everything except the title.

In both of the incidents you described, it seems like you discussed a solution with someone else, and you personally came up with the better solution because the issues echoed previous experiences you&#039;d had.

If you&#039;d been solving those problems by yourself, it might have taken slightly longer (without the benefit of someone else to organize your ideas with in discussion?), but you would have come up with the same solutions; it was your personal experience that was the key.  If you hadn&#039;t been there to help, your colleagues would have deployed their less ideal but probably still effective solutions... unless while implementing them they too stumbled into the better answer.  Either way, the project moves on.

Not all projects can afford multiple lead developers (some will just have one lead and some interns...).  Not everyone thinks better while interacting with other people (personally, I definitely benefit from discussion, but I think far deeper when alone -- and that&#039;s when my &quot;breakthroughs&quot; are, even if the germ was planted from a good discussion or something I read).

I&#039;d agree that the benefits of direct collaboration are large; but never *ever* work alone with no exceptions?  Too far, and just plain unlikely.

Besides, we are constantly interacting less directly -- even a project I develop entirely solo will involve ongoing interaction with the customer or public, with everyone who&#039;s published sample implementations, code for frameworks and APIs, language guides, etc. that I might read -- everything I run into normally.</description>
		<content:encoded><![CDATA[<p>I guess I agree with just about everything except the title.</p>
<p>In both of the incidents you described, it seems like you discussed a solution with someone else, and you personally came up with the better solution because the issues echoed previous experiences you&#8217;d had.</p>
<p>If you&#8217;d been solving those problems by yourself, it might have taken slightly longer (without the benefit of someone else to organize your ideas with in discussion?), but you would have come up with the same solutions; it was your personal experience that was the key.  If you hadn&#8217;t been there to help, your colleagues would have deployed their less ideal but probably still effective solutions&#8230; unless while implementing them they too stumbled into the better answer.  Either way, the project moves on.</p>
<p>Not all projects can afford multiple lead developers (some will just have one lead and some interns&#8230;).  Not everyone thinks better while interacting with other people (personally, I definitely benefit from discussion, but I think far deeper when alone &#8212; and that&#8217;s when my &#8220;breakthroughs&#8221; are, even if the germ was planted from a good discussion or something I read).</p>
<p>I&#8217;d agree that the benefits of direct collaboration are large; but never *ever* work alone with no exceptions?  Too far, and just plain unlikely.</p>
<p>Besides, we are constantly interacting less directly &#8212; even a project I develop entirely solo will involve ongoing interaction with the customer or public, with everyone who&#8217;s published sample implementations, code for frameworks and APIs, language guides, etc. that I might read &#8212; everything I run into normally.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Signal9</title>
		<link>http://blog.markturansky.com/archives/69/comment-page-1#comment-600</link>
		<dc:creator>Signal9</dc:creator>
		<pubDate>Thu, 27 Mar 2008 16:25:37 +0000</pubDate>
		<guid isPermaLink="false">http://blog.markturansky.com/archives/69#comment-600</guid>
		<description>In large team systems that have multiple application layers sometimes alone is the only thing possible.  The example below is a real project:

1) 10 developers were asked to get the legacy billing system integrated with a new CRM application.

2) 9 of the developers could write the code in C++ and Java that was required for integrating the CRM app to the legacy billing system via IBM MQ series.

3) 1 of the developers was from the legacy billing system written in Mainframe cobol

So that leaves 1 developer able to write, develop, and architect his code.  His code came out perfectly fine and he actually beat the java/C++ developers to the release schedule.  The project turned out well in the end, however what you fail to remember is not everyone is writing their code in Java or C++.  Many companies have millions of lines of code out there written in languages that you may not be familiar with (and do not have the time to learn during a project cycle).

I understand your argument but it is not always doable.  You still need Strong programmers that can work alone.</description>
		<content:encoded><![CDATA[<p>In large team systems that have multiple application layers sometimes alone is the only thing possible.  The example below is a real project:</p>
<p>1) 10 developers were asked to get the legacy billing system integrated with a new CRM application.</p>
<p>2) 9 of the developers could write the code in C++ and Java that was required for integrating the CRM app to the legacy billing system via IBM MQ series.</p>
<p>3) 1 of the developers was from the legacy billing system written in Mainframe cobol</p>
<p>So that leaves 1 developer able to write, develop, and architect his code.  His code came out perfectly fine and he actually beat the java/C++ developers to the release schedule.  The project turned out well in the end, however what you fail to remember is not everyone is writing their code in Java or C++.  Many companies have millions of lines of code out there written in languages that you may not be familiar with (and do not have the time to learn during a project cycle).</p>
<p>I understand your argument but it is not always doable.  You still need Strong programmers that can work alone.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Nygard</title>
		<link>http://blog.markturansky.com/archives/69/comment-page-1#comment-590</link>
		<dc:creator>Michael Nygard</dc:creator>
		<pubDate>Thu, 27 Mar 2008 03:41:54 +0000</pubDate>
		<guid isPermaLink="false">http://blog.markturansky.com/archives/69#comment-590</guid>
		<description>Mark,

Thanks for the added info.  This sounds like a promising avenue to explore.

Cheers,
-Mike Nygard</description>
		<content:encoded><![CDATA[<p>Mark,</p>
<p>Thanks for the added info.  This sounds like a promising avenue to explore.</p>
<p>Cheers,<br />
-Mike Nygard</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul W. Homer</title>
		<link>http://blog.markturansky.com/archives/69/comment-page-1#comment-589</link>
		<dc:creator>Paul W. Homer</dc:creator>
		<pubDate>Thu, 27 Mar 2008 01:18:41 +0000</pubDate>
		<guid isPermaLink="false">http://blog.markturansky.com/archives/69#comment-589</guid>
		<description>For me, as I have grown as a programmer, the best things I have written, have been those where I was &#039;uncompromisingly&#039; able to follow my own design. Granted, after years of practice, I tend to be more disciplined in keeping my code abstract and clean then most people, but that is driven by my understanding how much time is saved by not letting the code get messy. When I worked with other programmers, even with the best of them, I find I have to make compromises to keep them engaged in the development. That&#039;s good for process, but not always good for elegance. A good solid vision is always best when it comes from a single person, if that person really knows what they are doing. 

Of course, after nearly twenty years, when I do hit some algorithmic or structuring problem that is new (which gets rarer as you get older), I generally go in search of a &#039;sounding board&#039; to bounce ideas off of.  What sounds great in your head, doesn&#039;t alway look so good when you have to try and explain it to someone else. 

So, I guess I&#039;d prefer to work alone, or possibly clone myself. If only I had the 100 years necessary to be able to do that ...

Paul.</description>
		<content:encoded><![CDATA[<p>For me, as I have grown as a programmer, the best things I have written, have been those where I was &#8216;uncompromisingly&#8217; able to follow my own design. Granted, after years of practice, I tend to be more disciplined in keeping my code abstract and clean then most people, but that is driven by my understanding how much time is saved by not letting the code get messy. When I worked with other programmers, even with the best of them, I find I have to make compromises to keep them engaged in the development. That&#8217;s good for process, but not always good for elegance. A good solid vision is always best when it comes from a single person, if that person really knows what they are doing. </p>
<p>Of course, after nearly twenty years, when I do hit some algorithmic or structuring problem that is new (which gets rarer as you get older), I generally go in search of a &#8217;sounding board&#8217; to bounce ideas off of.  What sounds great in your head, doesn&#8217;t alway look so good when you have to try and explain it to someone else. </p>
<p>So, I guess I&#8217;d prefer to work alone, or possibly clone myself. If only I had the 100 years necessary to be able to do that &#8230;</p>
<p>Paul.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Turansky</title>
		<link>http://blog.markturansky.com/archives/69/comment-page-1#comment-582</link>
		<dc:creator>Mark Turansky</dc:creator>
		<pubDate>Wed, 26 Mar 2008 16:22:01 +0000</pubDate>
		<guid isPermaLink="false">http://blog.markturansky.com/archives/69#comment-582</guid>
		<description>P.S.

We&#039;re using JRockit in our environment, so there is no perm space.  Classes are loaded in heap space, so we simply filled up the entire heap.  JRockit won&#039;t crash with an OutOfMemoryError like Sun&#039;s runtime will.  JRockit appears to want to GC to find space and page what it can to disk.  So, our servers never quite crashed, they just spiked to 100% CPU usage (GC) and lit up the drives with IO (paging), which makes the server unusable.  I&#039;d rather they just crash with an error.

Sun&#039;s JRE has perm space that would fill up with classes.  HotSpot will also throw an OutOfMemoryError before jettisoning the heap and classloaders before trying to start again.  The restart never seems to work, of course, because all the required lifecycle methods are not called on various containers.  I&#039;d rather they just crash with an error, too.</description>
		<content:encoded><![CDATA[<p>P.S.</p>
<p>We&#8217;re using JRockit in our environment, so there is no perm space.  Classes are loaded in heap space, so we simply filled up the entire heap.  JRockit won&#8217;t crash with an OutOfMemoryError like Sun&#8217;s runtime will.  JRockit appears to want to GC to find space and page what it can to disk.  So, our servers never quite crashed, they just spiked to 100% CPU usage (GC) and lit up the drives with IO (paging), which makes the server unusable.  I&#8217;d rather they just crash with an error.</p>
<p>Sun&#8217;s JRE has perm space that would fill up with classes.  HotSpot will also throw an OutOfMemoryError before jettisoning the heap and classloaders before trying to start again.  The restart never seems to work, of course, because all the required lifecycle methods are not called on various containers.  I&#8217;d rather they just crash with an error, too.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Turansky</title>
		<link>http://blog.markturansky.com/archives/69/comment-page-1#comment-581</link>
		<dc:creator>Mark Turansky</dc:creator>
		<pubDate>Wed, 26 Mar 2008 16:10:53 +0000</pubDate>
		<guid isPermaLink="false">http://blog.markturansky.com/archives/69#comment-581</guid>
		<description>Michael,

You are exactly right.  We did not keep a single instance (static or otherwise) of the Spring AppContext.  We created a new one on each login.  Every AppContext generates classes (Spring proxies and Hibernate DAOs).  It is these classes that fill up perm space because they never get unloaded.

Mark</description>
		<content:encoded><![CDATA[<p>Michael,</p>
<p>You are exactly right.  We did not keep a single instance (static or otherwise) of the Spring AppContext.  We created a new one on each login.  Every AppContext generates classes (Spring proxies and Hibernate DAOs).  It is these classes that fill up perm space because they never get unloaded.</p>
<p>Mark</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Nygard</title>
		<link>http://blog.markturansky.com/archives/69/comment-page-1#comment-569</link>
		<dc:creator>Michael Nygard</dc:creator>
		<pubDate>Wed, 26 Mar 2008 03:46:57 +0000</pubDate>
		<guid isPermaLink="false">http://blog.markturansky.com/archives/69#comment-569</guid>
		<description>Mark, are you able to talk in any more depth about the ApplicationContext memory leak problem? This sounds like it might pertain to a problem I&#039;m seeing.  Was this a case of leaking classes and filling up perm space?

Cheers,
-Mike Nygard</description>
		<content:encoded><![CDATA[<p>Mark, are you able to talk in any more depth about the ApplicationContext memory leak problem? This sounds like it might pertain to a problem I&#8217;m seeing.  Was this a case of leaking classes and filling up perm space?</p>
<p>Cheers,<br />
-Mike Nygard</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Work From Home</title>
		<link>http://blog.markturansky.com/archives/69/comment-page-1#comment-567</link>
		<dc:creator>Work From Home</dc:creator>
		<pubDate>Wed, 26 Mar 2008 02:18:02 +0000</pubDate>
		<guid isPermaLink="false">http://blog.markturansky.com/archives/69#comment-567</guid>
		<description>[...] Lou wrote an interesting post today onHere&#8217;s a quick excerptTwo separate incidences came up today that drove the point home for me. First, a co-worker and I were profiling a piece of slow production code. We found a bottleneck and discussed a solution. His original fix would have worked, &#8230; [...]</description>
		<content:encoded><![CDATA[<p>[...] Lou wrote an interesting post today onHere&#8217;s a quick excerptTwo separate incidences came up today that drove the point home for me. First, a co-worker and I were profiling a piece of slow production code. We found a bottleneck and discussed a solution. His original fix would have worked, &#8230; [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
