<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Elegant Code &#187; Esoterica</title>
	<atom:link href="http://elegantcode.com/tag/esoterica/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Sun, 12 Feb 2012 04:40:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>Software Craftsmanship and Giving Back</title>
		<link>http://elegantcode.com/2010/07/01/software-craftsmanship-and-giving-back/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-craftsmanship-and-giving-back</link>
		<comments>http://elegantcode.com/2010/07/01/software-craftsmanship-and-giving-back/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 18:31:33 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/07/01/software-craftsmanship-and-giving-back/</guid>
		<description><![CDATA[This spring I had the distinct honor of teaching a .Net programming course at Boise State University.&#160; Going into the course I was definitely unsure of what to expect. From David Starr’s horror stories of burning ERD’s to cautious skepticism from other professors I entered this senior level class half wondering if I’d be teaching [...]]]></description>
			<content:encoded><![CDATA[<p>This spring I had the distinct honor of teaching a .Net programming course at <a href="http://www.boisestate.edu" target="_blank">Boise State University</a>.&#160; Going into the course I was definitely unsure of what to expect. From David Starr’s horror stories of burning ERD’s to cautious skepticism from other professors I entered this senior level class half wondering if I’d be teaching the students C# for loops and if statements for a semester. </p>
<p>The more nauseous I got at the thought of teaching through a mundane semester of for loops and syntax the more I realized that these students deserved better; after all for many of these students my course would be the last programming course they took before they graduated and entered (or attempted to enter) the workforce. </p>
<p>I decided I had 1 semester to teach them all I could and maybe, just maybe turn them into junior programmers that I would want to hire myself.&#160; I decided I was going to throw them into the ocean and see how many could learn to swim before drowning in the waves of semi colons and compiler warnings.&#160; The results where exceptionally surprising:</p>
<ul>
<li>25 – percentage of students who said WTF did I get myself into, gave up and just sunk </li>
<li>25 – percentage of students who realized they hadn’t been taught well up to this point but gritted their teeth and dug in to see what they could learn </li>
<li>50 – percentage of students who said, “Hell, yeah no more learning for loops! I actually want to come to this class. Can we learn how to do ___X___?” </li>
<li>3 – number of students who asked, “Can we build a networked XNA game for our class project?”&#160; and then built it! <a href="http://codingquirks.com/projects/xna-tanks/">http://codingquirks.com/projects/xna-tanks/</a> </li>
</ul>
<ul>As the semester progressed several students began approaching me with ideas they had for software products or business they wanted to create but didn’t feel they had the technical expertise to start. At the same time I started hearing several senior level programmers talking about these great products they were going to write ‘someday’ and I began to see a possible convergence.</ul>
<ul>
<blockquote style="margin-right: 0px" dir="ltr">
<h3 align="center"><font style="background-color: #ffffff"></font></h3>
<h3 align="center">&#160;</h3>
<h3 align="center">What if? </h3>
<p align="center">&#160;</p>
<h3 align="center">We stopped talking and actually built that product we’ve dreamed of and created more Software Craftsmen in the process?</h3>
<p align="center">&#160;</p>
</blockquote>
<p align="center">&#160;</p>
<p> What if, there was some way to bring together these students who are eager to learn and full of energy with these senior programmers who want to build something. Is it possible to create an informal setting where younger programmers can receive mentoring and code advice and also motivate the senior programmers to stop talking about that great product and actually build it?</ul>
<p>Out of that idea was born something called the <a href="http://dojo.codinginertia.com" target="_blank">‘Code Dojo’</a>.&#160; As aspiring Software Craftsmen I feel that one of our duties is to teach others our craft and as an aspiring software entrepreneur I feel that one of the greatest tools toward actually shipping a product is a healthy dose of peer pressure. </p>
<p>We had our first <a href="http://dojo.codinginertia.com" target="_blank">Code Dojo</a> meeting last month at the <a href="http://www.codinginertia.com" target="_blank">Coding Inertia</a> office in downtown Boise. We barbequed some burgers, almost set off the building’s smoke alarms, used up all the whiteboard space and shared some <a href="http://dojo.codinginertia.com/first-meeting-startup-projects" target="_blank">great product ideas</a>.&#160; The next Code Dojo meeting is set for <a href="http://dojo.codinginertia.com/code-dojo-meeting-july-6th-2010-at-530" target="_blank">Tuesday July 6th</a> at 5:30. If you are in Boise and you are looking to help out some younger coders, hang out with some startups or just want to chill on the balcony for a while please stop by. </p>
<p>And where ever you are if you consider yourself an experienced programmer or a Software Craftsman then chances are that somebody helped you get there, now what are you doing to give back?</p>
<p>&#160;</p>
<hr />
<p>One more thing: I actually hired one of those students as an intern for the summer and he’s doing great.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/07/01/software-craftsmanship-and-giving-back/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>IE team ports FireBug to IE8</title>
		<link>http://elegantcode.com/2008/03/06/ie-team-ports-firebug-to-ie8/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ie-team-ports-firebug-to-ie8</link>
		<comments>http://elegantcode.com/2008/03/06/ie-team-ports-firebug-to-ie8/#comments</comments>
		<pubDate>Thu, 06 Mar 2008 16:56:14 +0000</pubDate>
		<dc:creator>Chris Brandsma</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2008/03/06/ie-team-ports-firebug-to-ie8/</guid>
		<description><![CDATA[EDIT: I created a follow up post to this. Microsoft, doing what it knows how to do best, has once again copied a great tool &#8211; striving to make the tool Microsoft&#8217;s own.&#160; Granted, a number of times this has gone badly (the first version of MSUnit is such a case), but I am very [...]]]></description>
			<content:encoded><![CDATA[<p>EDIT: <a href="http://elegantcode.com/2009/05/18/firefoxfirebug-vs-ie8-developer-toolbar/">I created a follow up post to this.</a></p>
<p>Microsoft, doing what it knows how to do best, has once again copied a great tool &#8211; striving to make the tool Microsoft&#8217;s own.&nbsp; Granted, a number of times this has gone badly (the first version of MSUnit is such a case), but I am very hopeful this time around.</p>
<p>They did a near full scale copy of <a href="http://www.getfirebug.com">FireBug for Firefox</a> and called it <a href="http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=ie8whitepapers&amp;ReleaseId=580">Developer Tools for IE 8</a>.&nbsp; I couldn&#8217;t be happier.&nbsp; Actually, I&#8217;m ecstatic!</p>
<p>Now, for IE 7 there were some tools that sort of competed with FireBug called the <a href="http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;displaylang=en">Developer Toolbar</a> and <a href="http://www.nikhilk.net/Project.WebDevHelper.aspx">Nikhil&#8217;s Web Development Helper</a>.&nbsp; And those are good tools, but just not as slick as FireBug.&nbsp; FireBug&#8217;s ability to play with the html, css, and debug javascript were just unparalleled.&nbsp;&nbsp; We had to wait for Visual Studio 2008 and those two tools just to get close.&nbsp; The Developer Tools should change a lot of that for web developers.</p>
<p>For those of you who are saying, &#8220;There goes Microsoft and their anti-competitive practices again, sticking it to the little guy&#8221;, I say: GET REAL, it is an open source tool for crying out loud.&nbsp; Plus, if <a href="http://ejohn.org/blog/javascript-in-internet-explorer-8/">John Resig is to be believed</a>, Joe Hewitt (the creator of FireBug) is perfectly happy with this.&nbsp; The reason is, the IE developer team was probably the only group that could create this tool for IE, so they did.&nbsp; </p>
<p>Actually, go back and read <a href="http://ejohn.org/blog/javascript-in-internet-explorer-8/">John Resig&#8217;s blog</a> and see all of the JavaScript enhancements to IE8.&nbsp; Well worth a read.</p>
<p>The point is, as much as I like FireFox (it is my standard browser), it is still not the dominate browser on the market.&nbsp; Most businesses and general users will continue to use IE for a long time.&nbsp; What I hated was the difference in the quality of the debugging tools between FireFox and IE.&nbsp; That has now leveled off a bit, and in the end that is better for everyone.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2008/03/06/ie-team-ports-firebug-to-ie8/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Are You Experienced?</title>
		<link>http://elegantcode.com/2007/12/22/are-you-experienced/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=are-you-experienced</link>
		<comments>http://elegantcode.com/2007/12/22/are-you-experienced/#comments</comments>
		<pubDate>Sat, 22 Dec 2007 18:08:32 +0000</pubDate>
		<dc:creator>Jason Grundy</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2007/12/22/are-you-experienced/</guid>
		<description><![CDATA[In addition to overall architecture (let&#8217;s not argue about what that means) my role with my current employer involves a lot of higher level operations responsibilities. So I am a stereotypical non-coding architect&#8230;who doesn&#8217;t even to get to do much architecting! However recently I&#8217;ve wormed (forced!) my way onto a couple of projects where I [...]]]></description>
			<content:encoded><![CDATA[<p>In addition to overall architecture (let&#8217;s not argue about what that means) my role with my current employer involves a lot of higher level operations responsibilities. So I am a stereotypical non-coding architect&#8230;who doesn&#8217;t even to get to do much architecting! However recently I&#8217;ve wormed (forced!) my way onto a couple of projects where I have actually got to use my atrophying coding skills. That explains the recent flood of technical posts. This one is going to buck the trend.</p>
<p>I am a strong believer in balanced teams (different levels of experience and diverse backgrounds) because I have fund that this tends to result in the best solutions. But why exactly does experience matter? For my purposes here I am going to ignore the technical aspects and focus on some &#8220;softer&#8221; benefits of having been there before:</p>
<ol>
<li><strong>Experienced people are not afraid to be wrong.</strong></p>
<p>They have been wrong before. They know that they are going to be wrong in the future. Every day you need to make decisions based upon imperfect information. When the decisions are big it&#8217;s easy to become paralyzed. However once you come to the realization that you can only do the best that you can with the inputs that you have things become a lot easier. And making these decisions with confidence (not arrogance) is important too.</li>
<li><strong>Experienced people are not easily flustered.</strong>
<p>Let&#8217;s face it , once you&#8217;ve been round the block a few times it&#8217;s pretty much guaranteed that you&#8217;ve been in some horrible situations. And yet the world has not ended. So when life throws one of its infamous curve balls you simply compare the current disaster to those that you have survived before and think &#8220;I&#8217;ve seen much worse&#8221;.</li>
<li><strong>Experienced people know when to push back&#8230;but equally they know when to stop pushing.<br /></strong><br />We&#8217;ve all seen it before. &#8220;And when the user presses this button I need dancing penguins to materialize and&#8230;&#8221;. The ability to constructively question the &#8220;business value&#8221; is critical to any project&#8217;s success. Everyone is different and users and no different. Over time you&#8217;ll pick up a variety techniques that work for steering the different personality stereotypes in the right direction.
<p>But there is a second piece to this, knowing when to stop pushing. No matter how skilled your customer management skills there will always be things that you need to do that you don&#8217;t like or that don&#8217;t make sense. My advice is simple &#8211; get used to it!</p>
<p>It difficult because every time anything happens that supports your previously ignored opinions it&#8217;s very easy to fall into the &#8220;we should have done it my way trap&#8221;. This can be very destructive because the negative energy can adversely affect not just you but the entire team. I&#8217;m not saying that you shouldn&#8217;t vent about the fact that you were right and everyone else was wrong&#8230;I would not want to deny you that pleasure. However vent and then quickly move on.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2007/12/22/are-you-experienced/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>But the tests passed on my machine&#8230;</title>
		<link>http://elegantcode.com/2007/12/19/but-the-tests-passed-on-my-machine/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=but-the-tests-passed-on-my-machine</link>
		<comments>http://elegantcode.com/2007/12/19/but-the-tests-passed-on-my-machine/#comments</comments>
		<pubDate>Thu, 20 Dec 2007 02:05:07 +0000</pubDate>
		<dc:creator>Jason Grundy</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2007/12/19/but-the-tests-passed-on-my-machine/</guid>
		<description><![CDATA[I checked in some code earlier today. Naturally I had successfully run all of the unit tests locally first. Nevertheless the CI build still failed. Luckily I had faced this problem before and after some initial frustration I quickly figured out the cause. Here are a couple of tips to help you if you face [...]]]></description>
			<content:encoded><![CDATA[<p>I checked in some code earlier today. Naturally I had successfully run all of the unit tests locally first. Nevertheless the CI build still failed. Luckily I had faced this problem before and after some initial frustration I quickly figured out the cause. Here are a couple of tips to help you if you face the same situation:</p>
<ol>
<li>If you use R# remember that it does necessarily run tests in the same order as NUnit. So running the tests in NUnit is a good starting point, Obviously the order in which tests are run should not be important. That brings us to #2&#8230;</li>
<li>The problem is not always caused by the test or even test fixture that fails. If the test runs individually but fails as part of the entire suite then look to the previous test. In my case the previous test&#8217;s class did not inherit from AbstractRepositoryTest (a bases class which is similar to <a href="http://weblogs.asp.net/rosherove/archive/2007/11/28/data-layer-testing-test-inheritance-patterns.aspx">Roy&#8217;s Abstract Utility Class</a>) and hence some previous work was not being cleaned up properly.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2007/12/19/but-the-tests-passed-on-my-machine/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Are named queries outside of your DAO layer bad?</title>
		<link>http://elegantcode.com/2007/10/31/are-named-queries-outside-of-your-dao-layer-bad/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=are-named-queries-outside-of-your-dao-layer-bad</link>
		<comments>http://elegantcode.com/2007/10/31/are-named-queries-outside-of-your-dao-layer-bad/#comments</comments>
		<pubDate>Wed, 31 Oct 2007 14:11:30 +0000</pubDate>
		<dc:creator>Guest Blogger</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2007/10/31/are-named-queries-outside-of-your-dao-layer-bad/</guid>
		<description><![CDATA[Both Hibernate and JPA support named queries and I would typically recommend keeping them inside your DAOs. However, using a typesafe Generic DAO implementation, you can have one class support all of your CRUD operations, and use named queries to support finder methods. But this approach requires that your service/manager layer know your named queries [...]]]></description>
			<content:encoded><![CDATA[<p>Both Hibernate and JPA support named queries and I would typically recommend keeping them inside your DAOs.</p>
<p>However, using a typesafe Generic DAO implementation, you can have one class support all of your CRUD operations, and use named queries to support finder methods. But this approach requires that your service/manager layer know your named queries to submit to your generic finder method.  To me this smells bad, I don&#8217;t want my service layer knowing about my DAO named queries, even if its only by name.</p>
<p>Here is my Generic DAO Interface:</p>
<div>
<div>
<pre> 1: public interface GenericDao&lt;T, PK extends Serializable&gt; {</pre>
<pre> 2: // ... state methods (persist, save, remove)</pre>
<pre> 3:&#xA0; </pre>
<pre> 4: public T findByPk(PK pk);</pre>
<pre> 5: public List&lt;T&gt; findAll();</pre>
<pre> 6:&#xA0; </pre>
<pre> 7: public T findInstanceByNamedQueryPositionalParameter(</pre>
<pre> 8: String queryName, QueryParameter... args);</pre>
<pre> 9:&#xA0; </pre>
<pre> 10: // .. Other named query methods supporting multiple </pre>
<pre> 11: // and named parameters </pre>
<pre> 12: }</pre>
</p></div>
</div>
<p>&#xA0;</p>
<p>The implementation of my GenericDao uses simple JPA calls so I won&#8217;t include it here.</p>
<p>Here is my User model object with JPA annotations that the Generic DAO can work on:</p>
<pre> 1: @Entity</pre>
<pre> 2: @Table(name = "USER")</pre>
<pre> 3: @NamedQueries( { @NamedQuery(name = "user.findByName",</pre>
<pre> 4: query = "select u from User u where u.username like ?1") })</pre>
<pre> 5: public class User extends BaseObject implements Serializable {</pre>
<pre> 6: @Column(name = "USERNAME", nullable = false, unique = true)</pre>
<pre> 7: private String username;</pre>
<pre> 8:</pre>
<pre> 9: // … other properties</pre>
<pre> 10: }</pre>
<p>The primary key Long ID is defined on the BaseObject.  The number of named queries in a real model object will likely be larger.</p>
<p>I can then create a Spring User DAO bean using my Generic DAO implementation, telling it which model class it will be typed as.</p>
<pre> 1: &lt;bean id="userDao"</pre>
<pre> 2: class="dao.jpa.GenericDaoJpa"&gt;</pre>
<pre> 3: &lt;constructor-arg&gt;</pre>
<pre> 4: &lt;value&gt;model.User&lt;/value&gt;</pre>
<pre> 5: &lt;/constructor-arg&gt;</pre>
<pre> 6: &lt;/bean&gt;</pre>
<p>I can use this bean in my service layer like this:</p>
<pre> 1: User user = userDao.findInstanceByNamedQueryPositionalParameter(</pre>
<pre> 2: "user.findByName", new QueryParameter("user"));</pre>
<p>Of course I want to have my cake and eat it too, because I want to say userDao.findByUserName(&#8220;user&#8221;)</p>
<p>Which means I either need a User DAO class definition (which sadly means a DAO for every model that needs finders) or an elegant AOP solution. Per Mellqvist has a solution to provide this using Spring AOP introductions which is slick as snot, but I fear that this approach will confuse the heck out of my junior developers, and they will likely spend an entire day searching for the definition of userDao.findByUserName which doesn&#8217;t exists. Since my developers don&#8217;t have the luxury of walking down to my desk to ask for clarification, I think I’m stuck having an explosions of DAO classes. At least the implementation of the finder methods will be simple</p>
<p>Here is my User DAO interface with the finder method:</p>
<pre> 1: public interface UserDao extends GenericDao&lt;User, Long&gt; {</pre>
<pre> 2: public User findByUserName(String userName);</pre>
<pre> 3: }</pre>
<p>User DAO implementation</p>
<pre> 1: public class UserDaoJpa extends GenericDaoJpa&lt;User, Long&gt; implements UserDao {</pre>
<pre> 2: public User findByUserName(String userName) {</pre>
<pre> 3: return findInstanceByNamedQueryPositionalParameter("user.findByName",</pre>
<pre> 4: new QueryParameter(userName));</pre>
<pre> 5: }</pre>
<pre> 6: }</pre>
<p>And the Spring bean definition would change to:</p>
<pre> 1: &lt;bean id="userDao"</pre>
<pre> 2: class="dao.jpa.UserDaoJpa"/&gt;</pre>
<p>Now my code can all the friendly findByUserName method on the User DAO:</p>
<pre>User user= userDao.findByUserName(userName);</pre>
<p>I know that I&#8217;m working against the &#8220;Don&#8217;t repeat the DAO&#8221; movement, but my feeling is that my team will be more productive even though they end up creating more boilerplate code. As AOP gains adoption, I think the introductions approach will be a better choice, maybe I can submit curriculum guidance to Indian engineering colleges. I do have hope though, now that C# 3.0 has introduced extension methods, developers from Java and C# will slowly become comfortable not seeing the definition of the methods they call in the class definition.</p>
<p>References</p>
<ul>
<li>&#8220;Don&#8217;t repeat the DAO!&#8221; <a href="http://www.ibm.com/developerworks/java/library/j-genericdao.html">http://www.ibm.com/developerworks/java/library/j-genericdao.html</a> (Per Mellqvist , developerWorks, May 2006): Presents a Spring AOP generic DAO implementation using Hibernate</li>
<li>&#8220;Defining Your Object Model with JPA&#8221; <a href="http://www.theserverside.com/tt/articles/article.tss?l=JPAObjectModel" title="http://www.theserverside.com/tt/articles/article.tss?l=JPAObjectModel">http://www.theserverside.com/tt/articles/article.tss?l=JPAObjectModel</a> (Chris Maki, TheServerSide.com, September 2007) Generic DAO implementation using JPA</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2007/10/31/are-named-queries-outside-of-your-dao-layer-bad/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Behind Closed Doors, Secrets of Great Management</title>
		<link>http://elegantcode.com/2006/09/05/behind-closed-doors-secrets-of-great-management/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=behind-closed-doors-secrets-of-great-management</link>
		<comments>http://elegantcode.com/2006/09/05/behind-closed-doors-secrets-of-great-management/#comments</comments>
		<pubDate>Tue, 05 Sep 2006 05:30:44 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=475</guid>
		<description><![CDATA[I am becoming more and more a fan of Esther Derby.  I heard her speak several times at Agile 2006 with Diana Larson and knew then that I would be seeking out more of their collective wisdom, despite their admission that they create scrapbooks like other Midwestern women.   Esther has a very plain spoken, but effective communication style [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.elegantcode.com/DasBlog/"></a></p>
<p>I am becoming more and more a fan of <a href="http://www.estherderby.com/">Esther Derby</a>.  I heard her speak several times at Agile 2006 with Diana Larson and knew then that I would be seeking out more of their collective wisdom, despite their admission that they create scrapbooks like other Midwestern women.  </p>
<p>Esther has a very plain spoken, but effective communication style with which she imparts the secrets of the softer side of software development.  Esther does a great job of drawing our attention to the soft skills that we will don&#8217;t want to admit to needing in our technology jobs. </p>
<p>Her Pragmatic Programmers book, <a href="http://www.estherderby.com/books/behindcloseddoors.htm">Behind Closed Doors</a> is  a wonderful example of this.  Her fictional Director level manager, Sam, joins ABC Company and finds his way through the first seven weeks on the job, dealing with the issues of his direct reports, peers, and supervisors.</p>
<p>While the examples and discussions may be somewhat remedial for hardened long-term managers with years of experience behind them, this is the kind of book all of us needed at one time or another.  Regardless of your experience, there is almost certainly something you will learn as Sam works his team through the Storming, Forming, Norming, and Performing phases.</p>
<p>The last half of the book is a quick reference guide for running meetings, coaching, giving feedback, and 1000 other things that I wish I had read 7-8 years ago.</p>
<p>Thank you, Esther.</p>
<p> </p>
<p><img src="http://elegantcode.web123.discountasp.net/dasblog/aggbug.ashx?id=58efeb18-88f5-4468-b873-f7c20fe4371a" alt="" width="0" height="0" /></p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2006/09/05/behind-closed-doors-secrets-of-great-management/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

