<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Musings of a Software Development Manager</title>
	
	<link>http://edgibbs.com</link>
	<description>Lessons from managing developers</description>
	<lastBuildDate>Wed, 14 Oct 2009 03:34:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/MusingsOfASoftwareDevelopmentManager" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Main Methods in Java Training Labs</title>
		<link>http://feedproxy.google.com/~r/MusingsOfASoftwareDevelopmentManager/~3/Fp1FzWnWRJI/</link>
		<comments>http://edgibbs.com/2009/10/13/main-methods-in-java-training-labs/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 03:34:25 +0000</pubDate>
		<dc:creator>Ed Gibbs</dc:creator>
				<category><![CDATA[software development]]></category>
		<category><![CDATA[test driven development]]></category>

		<guid isPermaLink="false">http://edgibbs.com/?p=776</guid>
		<description><![CDATA[A common pattern when going through labs for various java classes is the pattern of building some main() method, performing a number of operations and spitting out a bunch of System.out.println()s. It&#8217;s an easy way to get feedback and avoid having to start with much context.  Unfortunately it&#8217;s really a procedural style and requires [...]]]></description>
			<content:encoded><![CDATA[<p>A common pattern when going through labs for various java classes is the pattern of building some main() method, performing a number of operations and spitting out a bunch of System.out.println()s. It&#8217;s an easy way to get feedback and avoid having to start with much context.  Unfortunately it&#8217;s really a procedural style and requires eyeballing the output to see if things worked as expected.</p>
<p>This isn&#8217;t a novel concept, I&#8217;m aware that <a href="http://langrsoft.com/">Jeff Langr</a> and <a href="http://clarkware.com/cgi/blosxom/2005/03/18">Mike Clark</a> have talked about using this technique to pick up new languages.  The concept is to remap these sort of lab exercises as TDD style means writing some tests using JUnit or TestNG instead.  It takes a few minutes potentially to explain to students how JUnit works, but the concept isn&#8217;t much more than understanding executing a main method.  There are some good bonuses:</p>
<ul>
<li>If they haven&#8217;t done TDD, the students get a chance to experiment with it in a classroom environment when they&#8217;re already prepared to learn new things.</li>
<li>They don&#8217;t have to do strict TDD to get a benefit, but they can still take a learning test approach.  Not sure what a given method will return just write a quick assertion and check.</li>
<li>You have executable examples to look at long after you leave the class.  This can be a benefit when you need to troubleshoot some issue you&#8217;re having.</li>
<li>You don&#8217;t have to eyeball the results.</li>
</ul>
<p>Next time you&#8217;re in a lab showing main() methods and getting feedback from System.out.println() just start with a test instead. </p>
<img src="http://feeds.feedburner.com/~r/MusingsOfASoftwareDevelopmentManager/~4/Fp1FzWnWRJI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://edgibbs.com/2009/10/13/main-methods-in-java-training-labs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://edgibbs.com/2009/10/13/main-methods-in-java-training-labs/</feedburner:origLink></item>
		<item>
		<title>Continuous Integration Game One Year Later</title>
		<link>http://feedproxy.google.com/~r/MusingsOfASoftwareDevelopmentManager/~3/CWoRZUSkw30/</link>
		<comments>http://edgibbs.com/2009/09/07/continuous-integration-game-one-year-later/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 03:21:19 +0000</pubDate>
		<dc:creator>Ed Gibbs</dc:creator>
				<category><![CDATA[automated builds]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[test driven development]]></category>

		<guid isPermaLink="false">http://edgibbs.com/?p=772</guid>
		<description><![CDATA[
	


Hudson has a Continuous Integration Plugin game that gives you points for successful builds, adding tests, removing TODOs, etc.  As a plugin it started out simple, but now allows you to get points based on:

Doing a successful build.
Adding new successful tests.
Fixing PMD, FindBugs, or Checkstyle warnings.
Fixing a compiler warning.
Fixing a TODO.

Around a year ago [...]]]></description>
			<content:encoded><![CDATA[<div align="center">
	<img src="http://edgibbs.com/images/pinball.jpg" /><br />
<!-- http://www.flickr.com/photos/80327698@N00/3858554539/ -->
</div>
<p><a href="https://hudson.dev.java.net/">Hudson</a> has a <a href="http://wiki.hudson-ci.org/display/HUDSON/The+Continuous+Integration+Game+plugin">Continuous Integration Plugin game</a> that gives you points for successful builds, adding tests, removing TODOs, etc.  As a plugin it started out simple, but now allows you to get points based on:</p>
<ul>
<li>Doing a successful build.</li>
<li>Adding new successful tests.</li>
<li>Fixing PMD, FindBugs, or Checkstyle warnings.</li>
<li>Fixing a compiler warning.</li>
<li>Fixing a TODO.</li>
</ul>
<p>Around a <a href="http://edgibbs.com/2008/04/14/continuous-integration-games/">year ago</a> I tried it out with my development team.  It looked like a fun way to reinforce good practices, but I wasn&#8217;t sure how it would play out.  As a dedicated gamer I loved the idea, but development teams contain all sorts of other personalities.  </p>
<p>At the end of the year it was a mixed success.  One developer really took to the plugin and even reported bugs and modified the rules to make it reflect reality a bit better.  He brought up the scoreboard in a few team meetings and gently tried to foster some competition.  At the end of the year he easily led the leader board.  I had one of the higher scores myself as a caretaker of Hudson since I often ran builds to clarify something that had been configured wrong or to setup a new project.  For the most part the rest of the team knew it was there, but never mentioned their score or ribbed anyone about how low or high they were on the scoreboard.</p>
<p>The key behavior you want on any development team is that the developers care about the CI build and fix it quickly when it breaks.  As the year went along this behavior began to be integrated within the team.  It took a bit of prodding in some cases, but eventually all the developers felt bad if the build was broken for long and stopped to fix the build before moving on again.  The CI game may have played a small role in this, but I was happy with the results.  I&#8217;d recommend trying it with any team and see how your results go.  It didn&#8217;t encourage any negative behavior and the results could be impressive with more gaming centric developers. </p>
<img src="http://feeds.feedburner.com/~r/MusingsOfASoftwareDevelopmentManager/~4/CWoRZUSkw30" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://edgibbs.com/2009/09/07/continuous-integration-game-one-year-later/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://edgibbs.com/2009/09/07/continuous-integration-game-one-year-later/</feedburner:origLink></item>
		<item>
		<title>Staying A Specializing Generalist</title>
		<link>http://feedproxy.google.com/~r/MusingsOfASoftwareDevelopmentManager/~3/u2_o2KFicz4/</link>
		<comments>http://edgibbs.com/2009/09/01/staying-a-specializing-generalist/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 06:37:41 +0000</pubDate>
		<dc:creator>Ed Gibbs</dc:creator>
				<category><![CDATA[automated builds]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://edgibbs.com/?p=770</guid>
		<description><![CDATA[


Long ago Scott Ambler discussed the idea of a specializing generalist, an element critical for Agile teams.  Stumbling across the definition of a generalist who has developed some deep skills in certain areas, but broad skills in a variety of functions felt natural.  As a very old web developer I long ago spread [...]]]></description>
			<content:encoded><![CDATA[<div align="center">
<img src="http://edgibbs.com/images/jars.jpg" />
</div>
<p>Long ago Scott Ambler discussed the idea of a <a href="http://www.agilemodeling.com/essays/generalizingSpecialists.htm">specializing generalist</a>, an element critical for Agile teams.  Stumbling across the definition of a generalist who has developed some deep skills in certain areas, but broad skills in a variety of functions felt natural.  As a very old web developer I long ago spread out from my development roots.  Passion and a love of learning led to a much wider spread of abilities.  Just a few were:</p>
<ul>
<li>Project management which I happened into building web sites, intranets, and e-commerce projects.  Eventually this would lead to picking up a PMP and moving into a Scrum Master role.</li>
<li>Java and J2EE after starting my career with Perl and CGIs.  I started with raw servlets and JSPs.  From there I moved into Struts, DAOs, JSTL.  Then to help with consulting gigs and get a broader view of the large J2EE stack I picked up a bunch of Sun certifications ending with the Sun Certified Enterprise Architect.  I consider the path of preparing for all the certification tests and the project worth far more than the cert itself.</li>
<li>Build tools were always a passion as I wanted to automate as much as I could.  This led to a long time setting up the ant builds for every project and eventually looking into maven and the wonderful rake of the ruby world.   Not too long after I discovered cruisecontrol and started setting up CI for every project.  The last few years I&#8217;ve focused primarily on Hudson which is a fine build server, but I&#8217;m always looking for new ideas in CI servers.</li>
</ul>
<p>As I stepped into management roles staying a generalist was critical.  I can&#8217;t speak for other professions, but if you don&#8217;t stay well steeped in the technologies and practices that your team do much of your feedback will be dismissed as the &#8216;Pointy Haired Boss&#8217;.  You need to be able to checkout the current version of a project, do a build, and talk to your tech lead about why they chose to use iBATIS over Hibernate for the ORM.  You need to be able to walk through the code in some nasty legacy project and really feel the pain as a developer explains how the one JSP is 4300 lines long.</p>
<p>It&#8217;s also insurance against downturns.  If you have skills in a variety of areas and can come up to speed quickly on new technologies many options are open.  If you&#8217;re a manager who&#8217;s let the technology side slip away you have to fight for a very limited number of spots out there.  Plus being a specializing generalist means you&#8217;re always having new learning experiences which is a great payoff all on its own.</p>
<img src="http://feeds.feedburner.com/~r/MusingsOfASoftwareDevelopmentManager/~4/u2_o2KFicz4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://edgibbs.com/2009/09/01/staying-a-specializing-generalist/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://edgibbs.com/2009/09/01/staying-a-specializing-generalist/</feedburner:origLink></item>
		<item>
		<title>Land the Tech Job You Love For Managers</title>
		<link>http://feedproxy.google.com/~r/MusingsOfASoftwareDevelopmentManager/~3/dBjnxSbNQ5E/</link>
		<comments>http://edgibbs.com/2009/08/24/land-the-tech-job-you-love-for-managers/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 04:23:12 +0000</pubDate>
		<dc:creator>Ed Gibbs</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://edgibbs.com/?p=768</guid>
		<description><![CDATA[Land the Tech Job You Love turned out to be a good read full of actionable advice for job seekers who just happen to be techies.  It covers everything from creating three versions of your resume to preparing a portfolio of work products to take with you to the interview.  All of this [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.pragprog.com/titles/algh/land-the-tech-job-you-love">Land the Tech Job You Love</a> turned out to be a good read full of actionable advice for job seekers who just happen to be techies.  It covers everything from creating three versions of your resume to preparing a portfolio of work products to take with you to the interview.  All of this is good advice.</p>
<p>The hidden gem in the book is the great guidelines for technical managers on how to conduct the recruiting process:</p>
<blockquote><p>
&#8220;A hiring manager who wants to get a real feel for her candidates&#8217; skills will ask for examples of work.  When I was hiring programmers, I told every candidate that I called in for a face-to-face interview to bring in code samples, printed on paper, so that we could discuss them during the interview.  Unfortunately I was definitely in the minority.  Ilya Talman, on o the top technical recruiters in Chicago, to me that he estimates only 15% of hiring managers ask to see samples of work.&#8221;</p>
<p>&#8211; <a href="http://theworkinggeek.com/">Andy Lester</a>
</p></blockquote>
<p>For developers bringing in their code and going over it gives you a much deeper feel for a person&#8217;s development skills than any single behavioral question.  </p>
<p>Code samples give you a sense of how the developer looks and how important code hygiene is to them.  You can ask about decisions as to why they didn&#8217;t refactor a longer method or why they named a class a particular way.  In many technical interviews you&#8217;re never asked to go through code at all.</p>
<p>If you&#8217;re not already requiring code samples for prospective developers I&#8217;d suggest trying it out at the next opportunity.  You&#8217;ll be surprised at the insights.</p>
<img src="http://feeds.feedburner.com/~r/MusingsOfASoftwareDevelopmentManager/~4/dBjnxSbNQ5E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://edgibbs.com/2009/08/24/land-the-tech-job-you-love-for-managers/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://edgibbs.com/2009/08/24/land-the-tech-job-you-love-for-managers/</feedburner:origLink></item>
		<item>
		<title>Researching Developer Candidates Online</title>
		<link>http://feedproxy.google.com/~r/MusingsOfASoftwareDevelopmentManager/~3/yBfW0_uQj0k/</link>
		<comments>http://edgibbs.com/2009/08/06/researching-developer-candidates-online/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 03:08:19 +0000</pubDate>
		<dc:creator>Ed Gibbs</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://edgibbs.com/?p=766</guid>
		<description><![CDATA[As a hiring manager the world has gotten easier with respect to getting some independent information on a given developer candidate.  For many years now I&#8217;ve taken to doing a bit of googling for any candidate that passed the initial resume screening test. 
Back in the early to mid 2000s this search often didn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>As a hiring manager the world has gotten easier with respect to getting some independent information on a given developer candidate.  For many years now I&#8217;ve taken to doing a bit of googling for any candidate that passed the initial resume screening test. </p>
<p>Back in the early to mid 2000s this search often didn&#8217;t yield too much information.  Back then Facebook and LinkedIn either didn&#8217;t exist or were just getting started.  Blogging was popular, but still relatively rare, and Twitter was still waiting for ODEO to fail first.  I often found the only relevant hits in some old USENET posts, but they were often at a time when the candidate may have been in college.  I can&#8217;t even remember getting a candidate who had a blog or one who worked on an open source project.  Today the picture is different.</p>
<p>Assuming the candidate doesn&#8217;t have a very common name you&#8217;re about 80-90% likely they at least have a LinkedIn page and very often Facebook or twitter accounts show up.  I get really excited if I can find a blog for there or even better some source code from an open source project or so.  As a hiring manager this stuff is golden as you can get a lot of background on a candidate to help decide if they&#8217;re meeting the bar for at least a technical phone screen:</p>
<ul>
<li><strong>Consistency:</strong> Does the LinkedIn or other information line up with the submitted resume.  You don&#8217;t want to see a candidate who reports their job experience very differently online.  Slightly out of date is fine, but when the employed dates are off by years, you&#8217;re probably not going to make the phone screen cutoff.</li>
<li><strong>Passion:</strong> This is a critical factor in any hire.  Do you really enjoy the career you&#8217;re in or trying to break into.  Blogs and open source here are easy ways to see this in a candidate.  If they contribute maven plugins or work on a build tool you can see they really care about automation and release management.  Negative opinions of certain technologies aren&#8217;t bad here, techies are passionate about what they don&#8217;t like as well, but I like to see reasoned arguments and a passion for some alternative.</li>
<li><strong>Learning:</strong> I only want to hire candidates who excel at picking up new technologies, tools, business domains, and practices.  Seeing some tutorials, reading your twitter posts about messing with Clojure, or even seeing a list of books you&#8217;re currently reading along the side of your personal site can present compelling evidence that you enjoy keeping up with the software development field.</li>
<li><strong>Communication:</strong>  Written content helps evaluate how someone communicates and blogs are especially helpful here.  Even tweets can give you a sense of how someone can string together punchy short sentences.  Often all you can find are posts in forums asking for help with a product issue, but the person&#8217;s skill at asking for help and describing the issue can give you a feel for their abilities.</li>
</ul>
<p>I haven&#8217;t mentioned other items that you come across like that their kid sister had breast cancer or that their favorite hobby is Ultimate Frisbee.  Those facts aren&#8217;t relevant to how they perform on the job.  I try to ignore them altogether when doing research.</p>
<p>Finally, I&#8217;d suggest that if you&#8217;re on the market, and a many developers are currently you might want to at least look at your online profile.  As credit checks and drug tests have become regular screening items for a number of employers an online search of your name is certainly becoming almost a standard item.  There&#8217;s not much you can do if there&#8217;s something unfortunate out there that shows up at the top of Google searches.  By enhancing your online presence with relevant blogs, twitter, or other publishing sites you can build up a more recent history that&#8217;s relevant to hiring managers out there who google your name.  You might want to just go ahead and include it on your resume as long as the majority of the content is relevant.  And contributing to an open source project is a great way to stand out from many other candidates and worth pointing out on a resume.  </p>
<img src="http://feeds.feedburner.com/~r/MusingsOfASoftwareDevelopmentManager/~4/yBfW0_uQj0k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://edgibbs.com/2009/08/06/researching-developer-candidates-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://edgibbs.com/2009/08/06/researching-developer-candidates-online/</feedburner:origLink></item>
		<item>
		<title>PHP and Javascript at OSCON 2009</title>
		<link>http://feedproxy.google.com/~r/MusingsOfASoftwareDevelopmentManager/~3/OjJvLjHrpxs/</link>
		<comments>http://edgibbs.com/2009/08/01/php-and-javascript-at-oscon-2009/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 05:16:15 +0000</pubDate>
		<dc:creator>Ed Gibbs</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[test driven development]]></category>

		<guid isPermaLink="false">http://edgibbs.com/?p=764</guid>
		<description><![CDATA[
	


I took an opportunity to head down to OSCON a week or so ago on a free expo pass.  I always wanted to attend OSCON up in Portland, but I never had the opportunity to go.  Anyway I invited another developer along and made the morning drive down to San Jose amid unusually [...]]]></description>
			<content:encoded><![CDATA[<div align="center">
	<img src="http://edgibbs.com/images/badges_oscon_2009.jpg" /><br />
<!-- http://www.flickr.com/photos/fallenpegasus/3747675184/ -->
</div>
<p>I took an opportunity to head down to OSCON a week or so ago on a free expo pass.  I always wanted to attend OSCON up in Portland, but I never had the opportunity to go.  Anyway I invited another developer along and made the morning drive down to San Jose amid unusually light traffic.  Reminded me of the times I drove around during the dotcom bust.  </p>
<p>As an expo attendee there were a number of free things to do beyond walking around looking at vendors.  The bulk of these involved attending OSCamp which initially looked sort of like it might be an Open Space type offering, but ended up being more of a loosely organized mini conference.  I listened to three different speakers.</p>
<p>Bill Shupp from digg.com gave a talk on the PHP PEAR proposal process works.  The key takeaways were that it helped to bring PHP coders into a more formal process where you follow some coding standards, are expected to have unit tests, and go through a code review process.  He explained that digg.com had really gotten into unit testing and TDD including hiring the author of PHPUnit to help them with the adoption.  They are also running a CI server and a nice 52 inch monitor with red or green for each currently running sprint. </p>
<p>I didn&#8217;t catch the name of a speaker who explained how he got into open source through the PHPbb bulletin board software, but it was nice to see a high school student who really felt empowered by contributing to software that&#8217;s used by thousands of sites.</p>
<p>Marcus Westin from Meebo gave a talk on Javascript best practices which included a mention of HTML 5.  It was compelling enough to make me think I should look into it.  Meebo is essentially a giant javascript application and Marcus explained that he&#8217;s a full time Javascript engineer.  I hadn&#8217;t really thought of the idea of full time javascript developers, but Meebo is actually hiring even in the bad economy.  He talked about how they&#8217;d been cleaning up the codebase over time, but there was still some 8000 line Javascript file that was too hairy to refactor.  Sounds like a great challenge to get some test harness around.</p>
<p>Overall I enjoyed the free expo day at OSCON, and if I get the chance to be sponsored by my employer in the future I&#8217;d put it on my short list of potential conferences.</p>
<img src="http://feeds.feedburner.com/~r/MusingsOfASoftwareDevelopmentManager/~4/OjJvLjHrpxs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://edgibbs.com/2009/08/01/php-and-javascript-at-oscon-2009/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://edgibbs.com/2009/08/01/php-and-javascript-at-oscon-2009/</feedburner:origLink></item>
		<item>
		<title>Professional Services Alumni</title>
		<link>http://feedproxy.google.com/~r/MusingsOfASoftwareDevelopmentManager/~3/W5Rz9xqV6cg/</link>
		<comments>http://edgibbs.com/2009/07/18/professional-services-alumni/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 05:57:45 +0000</pubDate>
		<dc:creator>Ed Gibbs</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[professional services]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://edgibbs.com/?p=758</guid>
		<description><![CDATA[
	


About half my career has been inside professional service firms.  The work has quite a few perks and you&#8217;re constantly pushed to learn new things.  Having spent quite a bit of time within IT departments as a manager I did sometimes missed the wealth of different clients and projects you&#8217;re exposed to as [...]]]></description>
			<content:encoded><![CDATA[<div align="center">
	<img src="http://edgibbs.com/images/tricycle_500.jpg" /><br />
<!-- http://www.flickr.com/photos/wvannus/2970809388/ -->
</div>
<p>About half my career has been inside professional service firms.  The work has quite a few perks and you&#8217;re constantly pushed to learn new things.  Having spent quite a bit of time within IT departments as a manager I did sometimes missed the wealth of different clients and projects you&#8217;re exposed to as a consultant.  </p>
<p>I&#8217;m not sure how common the practice is, but after leaving my last professional services firm about five years ago they let me know they considered me part of the alumni network.  I remember thinking it was a novel way to approach employees who leave your company on good terms.  I&#8217;m not sure how common the approach is, but I think it pays significant dividends.  Over a few years I got a few little goodies in the mail including a USB key at one point and I ended up doing a few very short engagements to help out the local office. </p>
<p>For the professional services firm this sort of practice is a little extra effort, but pays particular dividends:</p>
<ul>
<li>You maintain a good relationship with former employees which helps in a small way your overall brand.</li>
<li>Those employees may send prospective new employees your way who are already well recommended.</li>
<li>Former employees may need some professional services and you&#8217;re often invited to compete for work.</li>
<li>The alumni member may throw some leads your way when they find out about potential projects.</li>
<li>Those alumni members may someday return to your firm bringing back valuable experiences from their time outside the firm.</li>
</ul>
<p>As I now find myself returning to the fold with my former firm, I&#8217;m impressed with the little extra effort they took to stay in touch.</p>
<img src="http://feeds.feedburner.com/~r/MusingsOfASoftwareDevelopmentManager/~4/W5Rz9xqV6cg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://edgibbs.com/2009/07/18/professional-services-alumni/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://edgibbs.com/2009/07/18/professional-services-alumni/</feedburner:origLink></item>
		<item>
		<title>TDD Takes Years</title>
		<link>http://feedproxy.google.com/~r/MusingsOfASoftwareDevelopmentManager/~3/-ofQjmHNNtY/</link>
		<comments>http://edgibbs.com/2009/07/11/tdd-takes-years/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 06:37:56 +0000</pubDate>
		<dc:creator>Ed Gibbs</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[test driven development]]></category>

		<guid isPermaLink="false">http://edgibbs.com/?p=756</guid>
		<description><![CDATA[
	


Unit testing is a practice that takes years to sink in.  For many the first experience with the green/red bar is interesting, but not life altering.  Maybe it was just a quick demo.  They go back to the normal debugging patterns in the IDE or with printing output to the terminal.  [...]]]></description>
			<content:encoded><![CDATA[<div align="center">
	<img src="http://edgibbs.com/images/traffic_tree.jpg" /><br />
<!--  http://www.flickr.com/photos/squirmelia/2451382877/  -->
</div>
<p>Unit testing is a practice that takes years to sink in.  For many the first experience with the green/red bar is interesting, but not life altering.  Maybe it was just a quick demo.  They go back to the normal debugging patterns in the IDE or with printing output to the terminal.  They try testing for a bit and find battling with legacy code just doesn&#8217;t feel like its worth the effort.</p>
<p>How do you effect change here?  After experience with several groups I&#8217;ve found a gradual approach to work better than total immersion:</p>
<ul>
<li>Exposing the team to the concepts, especially if they haven&#8217;t really seen a true TDD session.</li>
<li>Explaining the benefits to them as developers with reduction in defects, better code that&#8217;s easier to refactor, and knowing that when you get asked to work on a legacy codebase with a decent test harness that you won&#8217;t have to cross your fingers that the new feature you added didn&#8217;t break some other code.</li>
<li>Continuing the conversation through one on ones and other means of how testing is going and where they&#8217;re having trouble writing tests or how writing the tests first might work a little better, or even starting with just some larger integration tests.  With one team I asked the question of all the developers every week, &#8216;How many tests did you write this week?&#8217;</li>
<li>Celebrating as code coverage metrics start climbing and pointing back at the reduction in defects.</li>
</ul>
<p>While I often hoped the process of becoming real TDD style developers would take people a few months, it often took years.  I never saw overnight success with adoption, but after time I started to see &#8216;aha&#8217; moments among many of the developers:</p>
<ul>
<li>A developer who was dedicated to testing let about 20 unit tests start failing because he&#8217;d made some changes to the domain model.  He knew he needed to get back to them, but had prioritized some other work.  As the tech lead on the project who I&#8217;d worked with for years saw the failure email from the CI server he rushed over right away and got the developer refocused on fixing the tests first. </li>
<li>Another developer finished off a recent project release and had zero real defects.  The code coverage was well over 80% and among the best tested code in the organization.  I&#8217;d started introducing testing to that developer over 6 years ago, but now he feels bad not writing tests.</li>
</ul>
<p>As a manager and a person I treasure these stories as I hear them even if it they were years in the making.  They&#8217;re more important than any kudos on an annual review or a big end of year bonus. </p>
<img src="http://feeds.feedburner.com/~r/MusingsOfASoftwareDevelopmentManager/~4/-ofQjmHNNtY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://edgibbs.com/2009/07/11/tdd-takes-years/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://edgibbs.com/2009/07/11/tdd-takes-years/</feedburner:origLink></item>
		<item>
		<title>New Business Card</title>
		<link>http://feedproxy.google.com/~r/MusingsOfASoftwareDevelopmentManager/~3/GQ8d83pANF8/</link>
		<comments>http://edgibbs.com/2009/07/08/new-business-card/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 04:31:14 +0000</pubDate>
		<dc:creator>Ed Gibbs</dc:creator>
				<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://edgibbs.com/?p=754</guid>
		<description><![CDATA[
	

The picture pretty much speaks for itself.  I haven&#8217;t had to make business cards on my own in years, but Zazzle made it pretty simple to do online.  I created the logo at faceyourmanga.it.   Even in the days of the web a card can have some impact.  
]]></description>
			<content:encoded><![CDATA[<div align="center">
	<img src="http://edgibbs.com/images/business_card.jpg" />
</div>
<p>The picture pretty much speaks for itself.  I haven&#8217;t had to make business cards on my own in years, but <a href="http://www.zazzle.com/">Zazzle</a> made it pretty simple to do online.  I created the logo at <a href="http://www.faceyourmanga.it/welcome.htm">faceyourmanga.it</a>.   Even in the days of the web a card can have some impact.  </p>
<img src="http://feeds.feedburner.com/~r/MusingsOfASoftwareDevelopmentManager/~4/GQ8d83pANF8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://edgibbs.com/2009/07/08/new-business-card/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://edgibbs.com/2009/07/08/new-business-card/</feedburner:origLink></item>
		<item>
		<title>Project Status Reports with Attachments</title>
		<link>http://feedproxy.google.com/~r/MusingsOfASoftwareDevelopmentManager/~3/ioflS-L2xEU/</link>
		<comments>http://edgibbs.com/2009/07/06/project-status-reports-with-attachments/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 04:19:01 +0000</pubDate>
		<dc:creator>Ed Gibbs</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://edgibbs.com/?p=750</guid>
		<description><![CDATA[As a project manager on dozens of projects I have sent hundreds or perhaps thousands of project status reports.  I&#8217;ve read even more status reports as a development manager often showing up Friday afternoons in the old inbox.
Every status report needs to cover the basics like budget, scope, and schedule.  Other than that [...]]]></description>
			<content:encoded><![CDATA[<p>As a project manager on dozens of projects I have sent hundreds or perhaps thousands of project status reports.  I&#8217;ve read even more status reports as a development manager often showing up Friday afternoons in the old inbox.</p>
<p>Every status report needs to cover the basics like budget, scope, and schedule.  Other than that the big thing is to point out new risks or items that have been mitigated.  In an Agile context the status reports can often be eliminated entirely, but it tends to be a document people hold onto when getting adjusted to Agile.  They often looks like paper versions of dashboards with the traditional red/yellow/green designations.  All green means no need to read.  Then again I once worked for a director who was actually color blind so I&#8217;d make sure the colors are also spelled out.</p>
<p>As a PM I remember borrowing my first status template from another PM who had in turn adopted it from her time at Andersen Consulting (Accenture after the rebranding).  I adjusted it, but I&#8217;ve used it ever since.  I can&#8217;t say I have a favorite format for project status reports, but I do know they need to communicate the key points as succinctly as possible.  As a PM it&#8217;s important to know who&#8217;s going to actually read these reports.  Some of your audience much prefers to here a verbal update even if it&#8217;s very short.  </p>
<p>As a manager the best approach to status reports is to stay directly connected with your projects so you don&#8217;t need to rely on them.  You should be spending a significant portion of time with the bigger projects or the projects that are struggling potentially only relying on status reports for the well oiled smaller projects that are just getting done.  And don&#8217;t forget to reward those projects that are just getting done right without much need of your services.  These are the well managed projects that should be rewarded more often.</p>
<p>Finally, I think I should expand on email and status reports.  As managers you typically get 150-200+ emails a day many CCed or forwarded to you as an FYI.  When you send that very detailed status report as a Word attachment much of your audience will never read it.  I realize PMs often spend a painful 30-60 minutes tweaking the status report to send out every week only for it to go almost completely unread.  What I really want is the key points of the status report directly in the email.  That means you can send the attachment, but make sure you copy the critical stuff into the body of the email.  The pain involved in not being able to read it in the preview pane, having to click on the attachment, wait a few seconds for Word to bring it up and render it just to start reading that nothing critical really happened this week often isn&#8217;t worth it.  And an email link to the status report buried in project server is rarely any better.  So, please don&#8217;t rely on attachments.</p>
<img src="http://feeds.feedburner.com/~r/MusingsOfASoftwareDevelopmentManager/~4/ioflS-L2xEU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://edgibbs.com/2009/07/06/project-status-reports-with-attachments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://edgibbs.com/2009/07/06/project-status-reports-with-attachments/</feedburner:origLink></item>
	</channel>
</rss>
