<?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>Code.Implant &#187; Development</title>
	<atom:link href="http://www.codeimplant.com/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.codeimplant.com</link>
	<description>The development, technology, and business of software.</description>
	<lastBuildDate>Fri, 06 Nov 2009 04:17:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CarPaint</title>
		<link>http://www.codeimplant.com/2009/05/24/carpaint/</link>
		<comments>http://www.codeimplant.com/2009/05/24/carpaint/#comments</comments>
		<pubDate>Sun, 24 May 2009 20:55:45 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Innovation]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Television]]></category>

		<guid isPermaLink="false">http://kevindhawkins.com/codeimplant/?p=6</guid>
		<description><![CDATA[A few days ago I saw a documentary on Discovery HD Theater called &#34;BMW: An Expression of Joy&#34; where artist Robin Rhode&#0160;attached paint spray nozzles to the tires of a BMW Z4 and used the vehicle as a paintbrush on a large canvas. You can see the result and more info on this at the [...]]]></description>
			<content:encoded><![CDATA[<p>A few days ago I saw a documentary on Discovery HD Theater called <a href="http://dhd.discovery.com/tv-schedules/special.html?paid=66.15823.128236.0.0" target="_blank">&quot;BMW: An Expression of Joy&quot;</a> where artist Robin Rhode&#0160;attached paint spray nozzles to the tires of a BMW Z4 and used the vehicle as a paintbrush on a large canvas. You can see the result and more info on this at the <a href="http://www.expressionofjoy.com/" target="_blank">Expression of Joy website</a>.</p>
<p>After watching the documentary I decided I wanted to do the same thing. How cool would it be to drive a vehicle that painted with its tires? What kind of artwork could I come up with?</p>
<p>Not wanting to take forever on the project, I moved quickly to create a gameplay prototype. The first problem I ran into, though, was that to reuse my existing 3D codebase would require more work than I wanted to spend on a prototype, particularly since I needed to integrate a physics engine to get the effect I wanted for the vehicle dynamics.</p>
<p>So, I took a look at Flash, noticed that there were a few 3D render engines and a few physics engines, and figured &quot;why not?&quot; Granted, I&#39;ve never used Flash before, but I went to Adobe&#39;s site, downloaded the Flash 30-day trial, and went to town.</p>
<p>A few days later, and I have a prototype of CarPaint: <a href="http://www.gamesunplugged.net/CarPaint3D.html">http://www.gamesunplugged.net/CarPaint3D.html</a>. If you check it out, be sure to click the Help button to see the controls and instructions.</p>
<p>It turns out that BMW also created <a href="http://www.bmw.com/com/en/newvehicles/z4/z4/2009/allfacts/downloads/iphone.html" target="_blank">an iPhone App</a> off this idea &#8211; something I&#0160;just found that out as I searched for the name of that documentary for this post. I&#39;m going to download it and check it out. In the meantime, I&#39;m going to let the Flash version cook for a little bit as I look at porting it over to a Windows-based application using my engine &#8211; and of course consider I&#39;ll consider the iPhone App route.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codeimplant.com/2009/05/24/carpaint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Small Wins Make Big Wins</title>
		<link>http://www.codeimplant.com/2009/05/22/small-wins-make-big-wins/</link>
		<comments>http://www.codeimplant.com/2009/05/22/small-wins-make-big-wins/#comments</comments>
		<pubDate>Fri, 22 May 2009 15:44:14 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Innovation]]></category>
		<category><![CDATA[success]]></category>

		<guid isPermaLink="false">http://kevindhawkins.com/codeimplant/?p=7</guid>
		<description><![CDATA[I&#39;d like to thank JD Meier for reminding me of the importance of small wins this morning through his blog post &#34;Don&#39;t Always Go for the Long Shot&#34;. It&#39;s a great reminder that success doesn&#39;t come all at once. 
Everyone wants to be successful. Entrepreneurs want successful businesses. Athletes want to win.&#0160;Engineers want to build [...]]]></description>
			<content:encoded><![CDATA[<p>I&#39;d like to thank <a href="http://www.sourcesofinsight.com" target="_blank">JD Meier</a> for reminding me of the importance of small wins this morning through his blog post &quot;<a href="http://sourcesofinsight.com/2009/05/21/dont-always-go-for-the-long-shot/" target="_blank">Don&#39;t Always Go for the Long Shot</a>&quot;. It&#39;s a great reminder that success doesn&#39;t come all at once. </p>
<p>Everyone wants to be successful. Entrepreneurs want successful businesses. Athletes want to win.&#0160;Engineers want to build perfect solutions.</p>
<p>The problem is that most&#0160;of us&#0160;try to be successful through grand strategies and big plays. Entrepreneurs hold off on starting a business until they have&#0160;that &quot;killer app&quot; idea. Baseball players try to hit the home run. Engineers try to design a solution that will address any possible situation. Meanwhile, another company comes out with a better &quot;killer app&quot;, the baseball player strikes out trying to &quot;swing for the fence&quot;, and the engineer ends up with an over-complicated solution that has to be scrapped because it doesn&#39;t work.</p>
<p>As JD Meier reminds us, the key to winning isn&#39;t&#0160;the big play.&#0160;The key to winning is to build momentum off a series of small wins. By focusing on small goals, small tasks, and small features, we allow ourselves to adapt to change, to measure tangible progress, and to celebrate successes early and&#0160;often.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codeimplant.com/2009/05/22/small-wins-make-big-wins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More on Reuse</title>
		<link>http://www.codeimplant.com/2009/02/09/more-on-reuse/</link>
		<comments>http://www.codeimplant.com/2009/02/09/more-on-reuse/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 21:55:24 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://kevindhawkins.com/codeimplant/?p=10</guid>
		<description><![CDATA[Jeff Atwood of the Coding Horror blog posted his latest on reuse with an article entitled &#34;Don&#39;t Reinvent The Wheel, Unless You Plan on Learning More About Wheels&#34;, in which Atwood advocates reinventing the wheel as a &#34;call to arms for deeply educating yourself about all the existing solutions&#34;.

Avoiding the reinvention of the proverbial wheel [...]]]></description>
			<content:encoded><![CDATA[<p>Jeff Atwood of the <a href="http://www.codinghorror.com" target="_blank">Coding Horror blog</a> posted his latest on reuse with an article entitled <a href="http://www.codinghorror.com/blog/archives/001145.html">&quot;Don&#39;t Reinvent The Wheel, Unless You Plan on Learning More About Wheels&quot;</a>, in which Atwood advocates reinventing the wheel as a &quot;call to arms for deeply educating yourself about all the existing solutions&quot;.</p>
<blockquote dir="ltr">
<p dir="ltr" style="MARGIN-RIGHT: 0px">Avoiding the reinvention of the proverbial wheel is a <a href="http://sourcemaking.com/antipatterns/reinvent-the-wheel">standard bit of received wisdom</a> in software development circles. There&#39;s certainly truth there, but I think it&#39;s a bit dangerous if taken too literally &#8212; if you <strong>categorically deny all attempts to solve a problem with code once any existing library is in place.</strong></p>
</blockquote>
<p>I don&#39;t think anyone is saying that you should avoid reinventing the wheel at all costs. The reality is that there are times when rolling your own is desirable. As Joel Spolsky <a href="http://www.joelonsoftware.com/articles/fog0000000026.html" target="_blank">said</a>:</p>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<p>And that&#39;s where I learned a key lesson in software architecture: for your most important, mission critical stuff, you have to use a tool that is one level lower in abstraction than ideal. For example, if you&#39;re writing a cool 3D shoot-em-up game (like Quake, around the same time period) and your key number 1 differentiator is to have the coolest 3D graphics, you do not use whatever 3D library you can find. You write your own, because it&#39;s fundamental to what you do. The people who use 3D libraries like DirectX are using them because they are trying to differentiate their games on something other than 3D performance. (Maybe the story line.)</p>
</blockquote>
<p dir="ltr">Bottom line: the issue of reuse&#0160;is not nearly as black and white polarizing as&#0160;the Coding Horror blog wants to make it. </p>
<p dir="ltr">There are times to reuse and times to reinvent the wheel &#8211; knowing the difference is one of the keys to being a good software developer. Even beyond that, it really goes back to basic engineering tradeoffs.</p>
<p dir="ltr">In most cases, however, the software developer who embraces reuse as much as possible will be in a better position and have better opportunity than the software developer who likes to reinvent wheels. It&#39;s often a missed fact that invention and innovation occurs only through an iterative process of work built on top of prior work, which quite frankly is pretty much the definition of reuse.</p>
<p dir="ltr">Besides, as Jesse, a&#0160;commenter in the Coding Horror blog post said, &quot;Doing something that you know can be done is not invention.&quot;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codeimplant.com/2009/02/09/more-on-reuse/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>On Reuse</title>
		<link>http://www.codeimplant.com/2009/02/05/on-reuse/</link>
		<comments>http://www.codeimplant.com/2009/02/05/on-reuse/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 15:22:18 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://kevindhawkins.com/codeimplant/?p=11</guid>
		<description><![CDATA[I believe in software reuse. If you want to release a product in today&#39;s world then I believe it&#39;s too costly to not reuse as much software and technology as you can within your given context. 
Granted, reusing software is not always the best solution, but more often than not it is a very strong [...]]]></description>
			<content:encoded><![CDATA[<p>I believe in software reuse. If you want to release a product in today&#39;s world then I believe it&#39;s too costly to <em>not</em> reuse as much software and technology as you can within your given context. </p>
<p>Granted, reusing software is not always the best solution, but more often than not it is a very strong candidate. I believe that if an engineer or organization&#0160;is not going to reuse software then the onus is on them to provide&#0160;a strong enough rationale why not. And if the engineer or organization can&#39;t defend their rationale with good reasoning? Then the argument against reuse is not strong enough.</p>
<p>Unfortunately, not everyone thinks this way. That&#39;s not surprising. Engineers like to do fun stuff and reusing software or technology takes away some of that fun stuff. I get it. I like to do fun stuff too. I used to write my own rendering engines and XML parsers and Winsock code, but then one day I woke up from this comatose state.</p>
<p>My world changed&#0160;when I stopped looking at software development at the technology level and started looking at&#0160;the product&#0160;end state where adding value to the product became my number one priority. The how and technology used were still important, but they were driven by adding value.</p>
<p>Now, there are times when reuse shouldn&#39;t be used: new technology research, education opportunities, and so on. But most of us live in a world run by businesses that build products for customers and minimizing cost and schedule are important to the business, and reuse is <em>a way </em>to ensure cost and schedule are minimized.</p>
<p>So, when in this world of business I hear something against reuse&#0160;I just shake my head. Some developers just need to go away. Really. They make the world a less productive place.</p>
<p>To cap this off, here are some actual excuses I have heard against reuse &#8211; along with my own thoughts on the excuses.</p>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<p style="text-align: left; TEXT-ALIGN: left"><em><strong>Mr. No Reuse</strong>: Software ABC&#0160;doesn&#39;t provide every feature&#0160;we need and won&#39;t be just a drop-in for us, so we can&#39;t use it.<br /></em><em><strong>Me</strong>: I hope you&#39;re joking. Not every piece of software can be written to your liking.</em></p>
<p style="text-align: left; TEXT-ALIGN: left"><em><strong>Mr. No Reuse</strong>: Our product has special needs.<br /></em><em><strong>Me</strong>: Special needs? Such as, minimizing cost and schedule so we can make money? No problem or product is so special&#0160;that we should limit our&#0160;reuse. We should maximize it.</em></p>
<p style="text-align: left; TEXT-ALIGN: left"><em><strong>Mr. No Reuse</strong>: I want to learn about XYZ technology and this is the best opportunity for me to do that.<br /></em><em><strong>Me</strong>: Good for you. I support continuing education. Now go start your own business and you can do that all you want.</em></p>
<p style="text-align: left; TEXT-ALIGN: left"><em><strong>Mr. No Reuse</strong>: In Software ABC, I don&#39;t like the API or how they do things.<br /></em><em><strong>Me</strong>: I&#39;m sorry they didn&#39;t ask for your opinion when they designed it; however, it does the job and thousands of other developers use it already without complaint.</em></p>
</blockquote>
<p style="TEXT-ALIGN: left">Unfortunately, people like this really exist. Don&#39;t be one of them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codeimplant.com/2009/02/05/on-reuse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Development Like Golf?</title>
		<link>http://www.codeimplant.com/2009/01/27/software-development-like-golf/</link>
		<comments>http://www.codeimplant.com/2009/01/27/software-development-like-golf/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 15:22:31 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://kevindhawkins.com/codeimplant/?p=13</guid>
		<description><![CDATA[I&#39;m a fan of analogies. While sometimes they can be like a bad joke, othertimes they can be an effective means for communicating a complex topic.
Software Development is one such topic, and I often deal with trying to communicate the challenges of software with those who have little or no experience&#0160;in it, so finding good [...]]]></description>
			<content:encoded><![CDATA[<p>I&#39;m a fan of analogies. While sometimes they can be like a bad joke, othertimes they can be an effective means for communicating a complex topic.</p>
<p>Software Development is one such topic, and I often deal with trying to communicate the challenges of software with those who have little or no experience&#0160;in it, so finding good analogies is always helpful for me.</p>
<p>Bernie Thompson took one such shot at an analogy in a&#0160;post&#0160;entitled <a href="http://leansoftwareengineering.com/2009/01/19/software-development-golf-analogy/" target="_blank">&quot;Software Development is like golf&#8230;&quot;</a>. His premise is that your chosen path to the pin is always the problem, and to succeed you have to weigh your capabilities (people), the course (technology), and the conditions (the market).</p>
<p>As a (very) amateur golfer, I can agree with this analogy and it&#39;s one I may even use myself. The only disagreement I have with it is that this analogy can be applied to most engineering disciplines. That is what engineering is about anyway: balancing factors and making tradeoffs. </p>
<p>Still, it&#39;s a good analogy. In engineering you can&#39;t always &quot;go big, or go home&quot; as I like to call it on the golf course, and to be successful you have to be willing to adapt to changing conditions in your design, market,&#0160;and customers. </p>
<p>In fact, in most sports the most successful&#0160;teams and individuals&#0160;are the ones that can adapt to the evolving&#0160;situation of the game, and the way to adapt to the situation is to constantly assess tradeoffs like the ones Thompson chose to address in the game of golf.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codeimplant.com/2009/01/27/software-development-like-golf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Improvement Through Iteration</title>
		<link>http://www.codeimplant.com/2008/11/27/improvement-through-iteration/</link>
		<comments>http://www.codeimplant.com/2008/11/27/improvement-through-iteration/#comments</comments>
		<pubDate>Thu, 27 Nov 2008 08:41:10 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://kevindhawkins.com/codeimplant/?p=19</guid>
		<description><![CDATA[After reading Jeff Attwood&#39;s post &#34;We Are Typists First, Programmers Second&#34;&#0160;and hearing my co-workers ask me how fast I typed for the umpteenth time, I decided to take one of those typing tests and found out I&#0160;average around 100 words per minute (wpm).&#0160;Not bad.
The last time I took a typing test like that was 15 [...]]]></description>
			<content:encoded><![CDATA[<p>After reading Jeff Attwood&#39;s post <a href="http://www.codinghorror.com/blog/archives/001188.html" target="_blank">&quot;We Are Typists First, Programmers Second&quot;</a>&#0160;and hearing my co-workers ask me how fast I typed for the umpteenth time, I decided to take one of those typing tests and found out I&#0160;average around 100 words per minute (wpm).&#0160;Not bad.</p>
<p>The last time I took a typing test like that was 15 years ago, and I was typing around 50 wpm. Back then, my keyboarding experience was only about 2 years. Before that, I only had keyboard access if I was lucky.</p>
<p><a href="http://simbryo.typepad.com/.a/6a00e5518a0f6d88330105361dfc98970b-pi" style="FLOAT: right"><img alt="Baseball" border="0" class="at-xid-6a00e5518a0f6d88330105361dfc98970b " src="http://simbryo.typepad.com/.a/6a00e5518a0f6d88330105361dfc98970b-800wi" style="MARGIN: 0px 0px 5px 5px" title="Baseball" /></a> When I was 23 years old, I was drafted by the Cleveland Indians to play professional baseball. 19 years prior, I had my first at-bat in T-ball and was tagged out after reaching first because I didn&#39;t know the rules &#8211; you know, the one that says you have to stay on the base.</p>
<p>Besides bragging rights,&#0160;I do have&#0160;a point:&#0160;persistence, practice, and&#0160;repetition&#0160;are&#0160;a few of the key ingredients to successful skill improvement.</p>
<p>There are other ingredients of course, but I don&#39;t know anything that refines our skills as much as those three. Genetics and talent play a role, of course, but without repetition and practice we get what&#39;s called &quot;rough around the edges&quot;. This means your talent is only good if you polish it.</p>
<p>Of course this applies to software skills as well. Coding, designing, managing &#8211; they all require repetition to get better.&#0160;Or put another, probably more relative way,&#0160;they all require <em>iteration</em> to get better.
</p>
<p><span id="more-19"></span></p>
<p>&#0160;<a href="http://simbryo.typepad.com/.a/6a00e5518a0f6d88330105361dfd95970b-pi" style="FLOAT: right"><img alt="Helloworldtoast" border="0" class="at-xid-6a00e5518a0f6d88330105361dfd95970b " src="http://simbryo.typepad.com/.a/6a00e5518a0f6d88330105361dfd95970b-800wi" style="MARGIN: 0px 0px 5px 5px" title="Helloworldtoast" /></a> If we think back to when we first started programming, <br />perhaps in BASIC, most of us created some &quot;Hello, world&quot; variation as our first foray into the software development world. We had one line:</p>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<p><font face="Courier">10 print &quot;Hello, world&quot;</font></p>
</blockquote>
<p>And that was it. So when we ran our program, we saw <font face="Courier">&quot;Hello, world&quot;</font> printed to the screen, and our program exited.</p>
<p>Of course, that wasn&#39;t enough. We wanted to make a game.&#0160;(Isn&#39;t that how most of us start?) But we quickly <br />realized there wasn&#39;t a <font face="Courier">rungame</font> command, which meant we had to learn more about the language and its&#0160;programming constructs.</p>
<p>To do so we started adding loops to print more <font face="Courier">&quot;Hello, world&quot;</font>&#39;s to the screen. Then we added random number generation with if-then-else blocks to vary how many <font face="Courier">&quot;Hello, world&quot;</font>&#39;s were printed. After that we played with receiving input from the user by asking for a name, which would then turn into <font face="Courier">&quot;Hello, John&quot;</font>. And then, we became bold:&#0160;we made a <em>function</em> called <font face="Courier">rungame</font> that would do all of it for us.</p>
<p>At this point we felt ready. We went through iterations of our basic <font face="Courier">&quot;Hello, world&quot;</font> program and through the process we had acquired enough skills that we were confident we could build our first game: &quot;Heads or Tails?&quot;</p>
<p><a href="http://simbryo.typepad.com/.a/6a00e5518a0f6d88330105361dff35970b-pi" style="FLOAT: left"><img alt="Nintendo" border="0" class="at-xid-6a00e5518a0f6d88330105361dff35970b " src="http://simbryo.typepad.com/.a/6a00e5518a0f6d88330105361dff35970b-800wi" style="MARGIN: 0px 5px 5px 0px" title="Nintendo" /></a> Of course, this took a few iterations, but eventually we had it: our first game. And we showed it to our family, and maybe friends, and nobody understood the big deal.</p>
<p>Through the process, through the iterations, we acquired a new skillset while also having that sense of&#0160;accomplishment&#0160;for completing our first game. Without even knowing it we had persistence, we practiced, and we had repetition. </p>
<p></p>
<p>We were now better&#0160;at coding and design&#0160;than when we typed that first <font face="Courier">&quot;Hello, world&quot;</font> program. We understood the big deal because we knew that going through those iterations was not an easy thing to do.</p>
<p>Back to today, we can take this a step further. Ever see a system that was designed perfect the first time? Me neither, but that system that has been through several design iterations? Now that was a good system. How many times have you redesigned (or wanted to redesign)&#0160;that application you&#39;re working on?</p>
<p>See -&#0160;&#0160;repetition, persistence, practice &#8211; they all lead to improvement, whether it&#39;s our personal skill sets or that complex software system we&#39;re trying to design. We just have to be willing to be persistent, make time for practice, and go through the repetitions. It&#39;s not easy, but if it was, then everyone would understand the big deal.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codeimplant.com/2008/11/27/improvement-through-iteration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Snippet Designer for VS 2008</title>
		<link>http://www.codeimplant.com/2008/09/29/snippet-designer-for-vs-2008/</link>
		<comments>http://www.codeimplant.com/2008/09/29/snippet-designer-for-vs-2008/#comments</comments>
		<pubDate>Mon, 29 Sep 2008 19:15:00 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://kevindhawkins.com/codeimplant/?p=31</guid>
		<description><![CDATA[Snippets in&#160;Visual Studio 2005/2008 are probably an underused feature, but Matt Manela&#160;aims to&#160;make them a more productive&#160;experience and&#160;has released a Snippet Designer for Visual Studio .NET 2008 on Codeplex. From his blog:

The Snippet Designer was started as an intern project of mine during the Summer of 2006.&#160; The idea was to make snippet files (which [...]]]></description>
			<content:encoded><![CDATA[<p>Snippets in&#160;Visual Studio 2005/2008 are probably an underused feature, but <a href="http://blogs.msdn.com/matt/default.aspx" target="_blank">Matt Manela</a>&#160;aims to&#160;make them a more productive&#160;experience and&#160;has released a Snippet Designer for Visual Studio .NET 2008 on Codeplex. From his blog:</p>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<p>The <a href="http://www.codeplex.com/SnippetDesigner" target="_blank"><font color="#800080">Snippet Designer</font></a> was started as an intern project of mine during the Summer of 2006.&#160; The idea was to make snippet files (which were introduced to Visual Studio in 2005) a first class entity.&#160; Following this idea I created a Visual Studio plug-in which included an editor for snippet files and a search tool window to find snippets.&#160; The plan then was to release it on Codeplex but when my internship ended the project was forgotten about.</p>
<p>Now after two year of sitting there I found the code, cleaned it up a bit and am releasing it on Codeplex as an open source project at <a href="http://www.codeplex.com/SnippetDesigner" title="http://www.codeplex.com/SnippetDesigner"><font color="#800080">http://www.codeplex.com/SnippetDesigner</font></a>.&#160; My goal in releasing it on Codeplex is two fold.&#160; First I would like people to try it out, give me feedback and see if we can make it better (it still has plenty of rough edges).&#160; Second I would love to turn this into a community developed project where we all can collaborate on it.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.codeimplant.com/2008/09/29/snippet-designer-for-vs-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Code Quality Metric</title>
		<link>http://www.codeimplant.com/2008/08/24/a-code-quality-metric/</link>
		<comments>http://www.codeimplant.com/2008/08/24/a-code-quality-metric/#comments</comments>
		<pubDate>Sun, 24 Aug 2008 18:40:31 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://kevindhawkins.com/codeimplant/?p=41</guid>
		<description><![CDATA[I came across this via the Agile Advice blog:

Bob C. Martin (Uncle Bob to you and me) suggested, in his “quintessence” keynote at the Agile2008 conference that he had the perfect metric for code quality. Cyclomatic complexity and others were interesting mostly to those who invented them, etc. His answer was brilliant, and was easily [...]]]></description>
			<content:encoded><![CDATA[<p>I came across this via the <a href="http://www.agileadvice.com/" target="_blank">Agile Advice</a> blog:</p>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px; BACKGROUND-COLOR: #e6e6e6">
<p><span style="FONT-FAMILY: Arial">Bob C. Martin (Uncle Bob to you and me) suggested, in his “quintessence” keynote at the Agile2008 conference that he had the perfect metric for code quality. Cyclomatic complexity and others were interesting mostly to those who invented them, etc. His answer was brilliant, and was easily measured during code reviews:</span></p>
<p><span style="FONT-FAMILY: Arial; BACKGROUND-COLOR: #e6e6e6">WTFs per minute</span></p>
</blockquote>
<p>It seems like a joke, but you know, it&#39;s too true. The worst, or perhaps best, code and design reviews I&#39;ve participated in have involved a lot of &quot;WTF?!?&quot;.&#160;You know you found a problem with quality when that happens.</p>
<p>Perhaps someone can start a WTF trend analysis to see if there&#39;s a direct correlation between quality and WTF count. I bet there is.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codeimplant.com/2008/08/24/a-code-quality-metric/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What makes a better software engineer? Part 2</title>
		<link>http://www.codeimplant.com/2008/08/17/what-makes-a-better-software-engineer-part-2/</link>
		<comments>http://www.codeimplant.com/2008/08/17/what-makes-a-better-software-engineer-part-2/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 06:46:24 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://kevindhawkins.com/codeimplant/?p=42</guid>
		<description><![CDATA[Before Tropical Storm Fay&#39;s mandatory visitor evacuation forced me to leave earlier than planned, I was enjoying some great weather and boating in Key Largo for my birthday weekend.
I go there to get away from the hectic for a few days, sometimes even unplugging from the world completely by disconnecting from Internet, TV,&#160;and phone. It [...]]]></description>
			<content:encoded><![CDATA[<p>Before <a href="http://www.nhc.noaa.gov/text/refresh/MIATCPAT1+shtml/180240.shtml" target="_blank">Tropical Storm Fay&#39;s</a> mandatory visitor evacuation forced me to leave earlier than planned, I was enjoying some great weather and boating in <a href="http://maps.google.com/maps?f=q&amp;hl=en&amp;geocode=&amp;q=key+largo,+fl&amp;ie=UTF8&amp;ll=25.17232,-80.372543&amp;spn=0.223717,0.30899&amp;t=h&amp;z=12&amp;iwloc=addr" target="_blank">Key Largo</a> for my birthday weekend.</p>
<p>I go there to get away from the hectic for a few days, sometimes even unplugging from the world completely by disconnecting from Internet, TV,&#160;and phone. It gives me a chance to unwind, think, and ultimately reflect on where I am and where I want to go. </p>
<p>Anyway, at one point during the last few days I was thinking about the whole topic of <a href="http://www.codeimplant.com/2008/08/what-makes-a-better-software-engineer.html" target="_blank">&quot;What makes a better software engineer?&quot;</a> and remembered an old article series by <a href="http://www.mobygames.com/developer/sheet/view/developerId,32386/" target="_blank">Chris Hargrove</a> that we have on GameDev.net called <a href="http://www.gamedev.net/reference/list.asp?categoryid=215" target="_blank"><em>Code on the Cob</em></a>&#160;(CoTC).</p>
<p><em>CoTC</em>&#160;was originally written by Hargrove for a site called <a href="http://www.loonygames.com" target="_blank">loonygames</a>, run by <a href="http://www.loonyboi.com/" target="_blank">loonyboi</a>, who has since moved on to <a href="http://www.mobygames.com/developer/sheet/view/developerId,155195/" target="_blank">bigger and better things</a>. When loonygames shutdown, I contacted Chris to see if he would be willing to let us host the series, especially since he was pretty active in the GameDev.net community at the time.</p>
<p><span id="more-42"></span>
</p>
<p><em>CoTC</em> is one of my favorite series of articles, not because there was any particular insight or because I necessarily learned a lot, but because Hargrove outlined best practices and principles for software development in an easy-to-understand way. Some of his ideas still resonate with me today.</p>
<p>In fact, there&#39;s one article in particular in CoTC that I&#39;ve always remembered and it&#39;s the one that I thought of while away this past weekend: <a href="http://www.gamedev.net/reference/articles/article832.asp" target="_blank">CoTC 11: The Next Stage</a>, in which Hargrove outlines his thoughts on the development stages of a programmer. While it&#39;s hardly a science, I think he did a pretty good job of outlining the different growth stages a software engineer might go through.</p>
<p>At this point you may be&#160;wondering why I thought of this article when thinking about the&#160;topic of &quot;What makes a better software engineer?&quot; (Or better yet, you may be wondering why I was thinking about any of this while in the Florida Keys, but that&#39;s another topic.)</p>
<p>Well, while discipline is an important attribute to becoming a better software engineer (or as mentioned before, a better anything), another equally important attribute is a desire to reinvent yourself.</p>
<p>Reinventing yourself means to have an insatiable appetite for knowledge and recognizing how to apply that knowledge. It is our ability to change our habits and world views in order to become the person we are&#160;trying to be. Continuous improvement is another popular phrase that means the same thing. Essentially, &quot;good enough never is.&quot;</p>
<p>I thought of Hargrove&#39;s article because his stages of programming are essentially about reinventing ourselves. As we progress through the stages we have to change our habits and perspectives on software development. If we fail to change, or reinvent ourselves, then we fail to progress and become better software engineers.</p>
<p>I know Stage 1 programmers with years of experience. I also know Stage 6 and 7 programmers (whatever 7 is, they are there) with years of experience. Besides their technical skill, the only real difference between the two is that the Stage 6+ programmers were willing to adapt, change, or reinvent themselves as they progressed in their careers. The Stage 1 programmers just went along with the daily grind.</p>
<p>This concept of the &quot;better software engineer&quot; is a very gray area, so nothing&#160;should be viewed as mutually exclusive. For instance,&#160;a person with good discipline may find it easier to reinvent herself than a person with little self-control, but then maybe not if the person uses discipline in such a way that it&#160;prevents themselves from changing.</p>
<p>At the same time, there are certain attributes that successful people have, and&#160;if we want to be successful, then it is in our best interest to learn how they do it, regardless of the field or discipline we are in.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codeimplant.com/2008/08/17/what-makes-a-better-software-engineer-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What makes a better software engineer?</title>
		<link>http://www.codeimplant.com/2008/08/13/what-makes-a-better-software-engineer/</link>
		<comments>http://www.codeimplant.com/2008/08/13/what-makes-a-better-software-engineer/#comments</comments>
		<pubDate>Wed, 13 Aug 2008 16:09:51 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://kevindhawkins.com/codeimplant/?p=44</guid>
		<description><![CDATA[What makes a better software engineer?
This is a question I&#39;ve asked myself often over the years, primarily because I&#39;m constantly asked to teach others how I &#34;do things&#34;. The problem is that I don&#39;t know how I do things &#8211; I just do it, like Nike. No really, I once said that during a radio [...]]]></description>
			<content:encoded><![CDATA[<p>What makes a better software engineer?</p>
<p>This is a question I&#39;ve asked myself often over the years, primarily because I&#39;m constantly asked to teach others how I &quot;do things&quot;. The problem is that I don&#39;t know <em>how</em> I do things &#8211; I just do it, like <a href="http://en.wikipedia.org/wiki/Nike%2C_Inc" target="_blank">Nike</a>. No really, I once said that during a radio interview.</p>
<p>But regardless, I&#39;ve still thought about the question. As a result I&#39;ll probably post more about this because I&#39;ve come to realize a number of factors contribute to the &quot;betterness&quot; of a software engineer (or anything for that matter), but one aspect I&#39;ve thought about more seriously is <em>discipline</em>. Better software engineers, better artists, better management, better athletes, better anything all have one thing in common: they have discipline.</p>
<p><span id="more-44"></span>
</p>
<p>Do a <a href="http://blogsearch.google.com/blogsearch?hl=en&amp;um=1&amp;ie=UTF-8&amp;q=discipline+business" target="_blank">blog search</a> for &quot;discipline and business&quot; and check out the types of articles using the word. They all revolve around a central theme of success. It&#39;s not a huge secret, but millions appear to miss the fact that discipline does several things for you:</p>
<ol>
<li><strong>It keeps you focused.</strong> If you can&#39;t focus, then you&#39;re more likely to be distracted, which means you&#39;ll get less done.
<li><strong>It helps you &quot;nail the details&quot; while also seeing the big picture.</strong> This is critical in leadership, but also in engineering. The better engineers are very detail-oriented, but not to the point where it&#39;s crippling as they also recognize the big picture. The details they nail are things like processes, configuration management, quality, and good algorithm design.
<li><strong>It says, &quot;I am in control&quot; and provides leadership.</strong> Human nature trends away from chaos and toward organization. If you are disciplined, then you are perceived as being in control and&#160;organized, and people are more likely to drift your direction. You have your sh%t together, so to speak, and people want to have their sh%t together, too. </li>
</ol>
<p>Maintaining discipline isn&#39;t easy. It requires constant improvement. Although, one of the best things I learned while playing baseball was the concept of WIN: What&#39;s Important Now. </p>
<p>The concept is simple: If you find yourself adrift or&#160;losing focus, then ask yourself, &quot;What&#39;s Important Now?&quot; If you answer the question honestly, then you&#39;ll know what you need to do, and you&#39;ll stay focused on achieving your goals. That&#39;s the first step to discipline.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codeimplant.com/2008/08/13/what-makes-a-better-software-engineer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
