<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Welcome to my dawg house!</title>
	<atom:link href="http://goofydawg.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://goofydawg.net</link>
	<description></description>
	<lastBuildDate>Fri, 10 Feb 2012 16:58:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='goofydawg.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Welcome to my dawg house!</title>
		<link>http://goofydawg.net</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://goofydawg.net/osd.xml" title="Welcome to my dawg house!" />
	<atom:link rel='hub' href='http://goofydawg.net/?pushpress=hub'/>
		<item>
		<title>If You Adopt a Pattern, Stick with the Damn Pattern!</title>
		<link>http://goofydawg.net/2012/02/10/if-you-adopt-a-pattern-stick-with-the-damn-pattern/</link>
		<comments>http://goofydawg.net/2012/02/10/if-you-adopt-a-pattern-stick-with-the-damn-pattern/#comments</comments>
		<pubDate>Fri, 10 Feb 2012 16:58:41 +0000</pubDate>
		<dc:creator>GoofyDawg</dc:creator>
				<category><![CDATA[web development]]></category>
		<category><![CDATA[ui engineering]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://goofydawg.net/?p=80</guid>
		<description><![CDATA[This is a bit of rant, but something that I&#8217;ve seen time and again in development groups that I&#8217;ve worked with over the years: Engineers adopting a design pattern then falling out of the pattern when it&#8217;s convenient. The most egregious is breaking out of the MVC pattern when the interaction gets difficult. Don&#8217;t get [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goofydawg.net&amp;blog=3879553&amp;post=80&amp;subd=goofydawg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This is a bit of rant, but something that I&#8217;ve seen time and again in development groups that I&#8217;ve worked with over the years: Engineers adopting a design pattern then falling out of the pattern when it&#8217;s convenient. The most egregious is breaking out of the MVC pattern when the interaction gets difficult. Don&#8217;t get me wrong, there will always be exceptions; but especially in UI engineering, I see a lot of &#8220;falling back&#8221; on the tried and true DOM-based operations before adequately exploring whether or not it can be done within the context of the particular MVC engine that is being used.</p>
<p>There are several reasons for breaking from the pattern:</p>
<ul>
<li>JavaScript is wide open, and there are lots of ways to skin a cat, so if you hit a bit of a roadblock, there are lots of tools available to solve the problem. But in rebuttal to that, just because you can do something, should you?</li>
<li>Because JavaScript is not strongly typed, enforcing patterns is difficult at best. Everyone has to buy into it.</li>
</ul>
<p>What I see a lot of is falling back on DOM-based libraries such as jQuery. For instance, if you want to show a popup window to display some information from the server when a user clicks a link, the MVC way would be that the view that holds the link intercepts the click, triggers an &#8220;action&#8221; event of some sort which is intercepted by a controller that would then tell a DAO that would retrieve the information from the server. When the data is available, the DAO would fire a &#8220;data available&#8221; event that a model is listening to; the model in turn would update itself, trigger a &#8220;change&#8221; event to which a view is listening. The view updates itself, then displays the results.</p>
<p>This seems a little convoluted and complex but what it ensures is that you have proper separation of concerns; each different component is responsible for only what it was intended to do. The anti-pattern to this is just call a function and use jQuery or another DOM-based library to handle it all, which is totally easy. You make the call, use jQuery&#8217;s AJAX method, then display the message with a jQuery modal dialog. Simple.</p>
<p>But here&#8217;s the problem with that: Once you go that route, you&#8217;re using an external entity outside of your MVC system that acts completely independently of your system. That entity combines MVC and DAO operations. You could argue that that makes it a self-contained MVC. But that would be wrong because there is no separation of concerns, which is what MVC is all about. If you&#8217;re going to follow the pattern, there are no multi-roled objects.</p>
<p>Furthermore, the approach that is commonly taken is to make that function globally available because &#8220;Hey! It&#8217;s a cool function that we could use everywhere!,&#8221; which usually means polluting the global namespace. That has some serious security implications when you do that because you&#8217;re exposing the function to the world, and because that function is making an open server call, it is possible to expose it to CSRF attacks. Not good.</p>
<p>You see this behavior mostly from developers who are new to MVC. So how do you teach them? Simple. You have to get team buy-in to specific rules:</p>
<p>1. Obey the knowledge barrier. Look at the diagram below:</p>
<p><a href="http://goofydawg.files.wordpress.com/2012/02/mvc_knowledge_barrier.png"><img class="aligncenter size-full wp-image-81" title="MVC_Knowledge_Barrier" src="http://goofydawg.files.wordpress.com/2012/02/mvc_knowledge_barrier.png?w=490" alt=""   /></a></p>
<p>The solid lines represent direct knowledge from one entity to another. From that we can see that the controller knows about both the view and the model, and the view also has direct knowledge of the model. The dashed lines represent an implicit knowledge in that the only way for those entities to communicate with the destination object is via messages/events.</p>
<p>2. I mentioned this above: No multi-role objects.</p>
<p>3. DOM-based libraries should only be used to interact with the DOM; that is, they&#8217;re mostly used as helpers for the views. However, since they also have AJAX capabilities, they can also be consumed for use with DAO operations, but a DAO object should always be relegated to that whether the DAO is explicitly or implicitly declared. For instance, Backbone.js utilizes jQuery&#8217;s AJAX for CRUD operations. In that case, the DAO is implicit, and actually obfuscated from the developer as the models and collections interact with the Backbone.sync object which is itself a DAO.</p>
<p>4. Finally, to mitigate shortcuts, developers have to learn and practice good architecture and design; that is, they need to start using some sort of class and object interaction description methodology such as UML.</p>
<p>Those are four simple rules. Having taught this over several years, I know how difficult it can be to enforce and have developers obey them because the temptation is to always go the easy route. But great programs can only be created with a thoughtful approach to building them. Just as in construction, you wouldn&#8217;t build a house without a blueprint, and when you&#8217;re building you wouldn&#8217;t use construction methods that don&#8217;t follow the standards. Why would you do this in software?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/goofydawg.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/goofydawg.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/goofydawg.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/goofydawg.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/goofydawg.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/goofydawg.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/goofydawg.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/goofydawg.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/goofydawg.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/goofydawg.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/goofydawg.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/goofydawg.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/goofydawg.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/goofydawg.wordpress.com/80/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goofydawg.net&amp;blog=3879553&amp;post=80&amp;subd=goofydawg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://goofydawg.net/2012/02/10/if-you-adopt-a-pattern-stick-with-the-damn-pattern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4f1e3be4b2b49a283ad61ac80b2227fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">goofydawg</media:title>
		</media:content>

		<media:content url="http://goofydawg.files.wordpress.com/2012/02/mvc_knowledge_barrier.png" medium="image">
			<media:title type="html">MVC_Knowledge_Barrier</media:title>
		</media:content>
	</item>
		<item>
		<title>Wednesday JavaScript Meanderings</title>
		<link>http://goofydawg.net/2012/02/08/tuesday-javascript-meanderings/</link>
		<comments>http://goofydawg.net/2012/02/08/tuesday-javascript-meanderings/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 14:47:47 +0000</pubDate>
		<dc:creator>GoofyDawg</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[ui engineering]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[thoughts]]></category>

		<guid isPermaLink="false">http://goofydawg.net/?p=73</guid>
		<description><![CDATA[On JavaScript Parasitic Inheritance Hmmm&#8230;. Not sure that I really buy into all the craze in Parasitic Inheritance the last couple of years. Perhaps I&#8217;d buy into it if I heard a really great technical explanation, but thus far, all I&#8217;ve heard and read about the virtues of Parasitic Inheritance center around not having to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goofydawg.net&amp;blog=3879553&amp;post=73&amp;subd=goofydawg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>On JavaScript Parasitic Inheritance</h2>
<p>Hmmm&#8230;. Not sure that I really buy into all the craze in <a title="Crockford Parasitic Inheritance" href="http://javascript.crockford.com/inheritance.html">Parasitic Inheritance</a> the last couple of years. Perhaps I&#8217;d buy into it if I heard a really great technical explanation, but thus far, all I&#8217;ve heard and read about the virtues of Parasitic Inheritance center around not having to use &#8220;this&#8221; and &#8220;new.&#8221; My reaction to that line of reasoning is &#8220;So what?&#8221; &#8220;this&#8221; and &#8220;new&#8221; are artifacts of the JavaScript language. Deal with it. Another line of reasoning used to justify the use of Parasitic Inheritance is the concept of the durable object, which is defined as &#8220;A durable object contains no visible data members, and its methods use neither <code>this</code> nor <code>that</code>. Again we return to the non-use of &#8220;this.&#8221; And again, &#8220;So what?&#8221; You can achieve something similar this using while defining a custom object in the traditional way:</p>
<pre>function myObj() {}

myObj.prototype = (function() {
    function myPrivFunction(myArg) {
       return ...do something with myArg...
    }
    return {
        myMethod : function(param) {
            return myPrivFunction(param);
        }
    };
})();</pre>
<p>You can have a whole set of private functions defined above the return that will not be changeable to the outside world. Furthermore, one of my biggest problems with Parasitic Inheritance is that you lose instanceof. Yes, there are ways to deal with it, but most of the examples I&#8217;ve seen deal with overriding Object and Function prototypes, or creating some intermediary &#8220;helper&#8221; function to enable instanceof with Parasitic Inheritance. My thought about this is if you have to make changes to the core of the language, then the &#8220;solution&#8221; you&#8217;re providing is simply an interesting engineering exercise.</p>
<h2>On MVC: Put the DOM in Its Place, Dammit!</h2>
<p>One of the things I see quite a bit of when working with JavaScript developers who are relatively new to using MVC frameworks such as Backbone.js is that their thinking is very DOM-focused. And while MVC in JavaScript does mean interaction with the DOM through the View, most developers focus their thinking around the View. As a result, their programming is all about direct references. But MVC is about separation of concerns, and each part of the MVC has an important role to play. As such, one of things that I do my best to help &#8220;teach&#8221; is having developers divorce themselves from DOM-based thinking, and start thinking at a much higher level; specifically, the system or application; breaking the application or system into constituent MVC parts.</p>
<p>Admittedly, it&#8217;s difficult for many to make the conceptual leap into MVC thinking because what we as UI Engineers produce ultimately shows up on the DOM. But the DOM is a by-product of MVC interaction. Once you get that concept down, then thinking with a perspective of MVC becomes quite easy.</p>
<p>It doesn&#8217;t help matters much when you have examples that are very DOM-focused, as many developers that move over to MVC are expert in jQuery or YUI or prototype.js, what have you. As a result, these developers provide examples that lean heavily on that previous experience. It&#8217;s a bit of vicious cycle.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/goofydawg.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/goofydawg.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/goofydawg.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/goofydawg.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/goofydawg.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/goofydawg.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/goofydawg.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/goofydawg.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/goofydawg.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/goofydawg.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/goofydawg.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/goofydawg.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/goofydawg.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/goofydawg.wordpress.com/73/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goofydawg.net&amp;blog=3879553&amp;post=73&amp;subd=goofydawg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://goofydawg.net/2012/02/08/tuesday-javascript-meanderings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4f1e3be4b2b49a283ad61ac80b2227fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">goofydawg</media:title>
		</media:content>
	</item>
		<item>
		<title>A Republican&#8217;s View of Why Obama Is Likely to Win the Election&#8230;</title>
		<link>http://goofydawg.net/2012/02/03/a-republicans-view-of-why-obama-is-likely-to-win-the-election/</link>
		<comments>http://goofydawg.net/2012/02/03/a-republicans-view-of-why-obama-is-likely-to-win-the-election/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 18:43:05 +0000</pubDate>
		<dc:creator>GoofyDawg</dc:creator>
				<category><![CDATA[politics]]></category>

		<guid isPermaLink="false">http://goofydawg.net/?p=64</guid>
		<description><![CDATA[&#8230;and How Several Years of Successful Coaching Shows Me Why Republicans Will Lose in the Election I&#8217;ve been a Republican since I registered to vote 32 years ago, and though I&#8217;ve had my ups and downs with political involvement over the years, I always have been an apt observer. This coming presidential election has especially [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goofydawg.net&amp;blog=3879553&amp;post=64&amp;subd=goofydawg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8230;and How Several Years of Successful Coaching Shows Me Why Republicans Will Lose in the Election</p>
<p>I&#8217;ve been a Republican since I registered to vote 32 years ago, and though I&#8217;ve had my ups and downs with political involvement over the years, I always have been an apt observer. This coming presidential election has especially piqued my interest because it has been amazing &#8211; and horrifying and even a bit amusing &#8211; to observe the Republican strategy in the race up to the election. This amazement comes from having been a coach of various sports over the years. I have a winning record in all the sports I&#8217;ve coached, and have four championships under my belt for my high school roller hockey team.</p>
<p>Not to say that I&#8217;m a great coach &#8211; everyone has room to improve &#8211; but I did learn quite a bit from studying successful and arguably great coaches such as Bill Walsh and Herb Brooks. From what I observed, a huge part of their success was simply teaching what it takes to develop a team with a winning attitude. We could talk about collaboration and cooperation and such, but there&#8217;s one thing that I learned as a coach that you never do: Ever mention or plan my game around the word &#8220;lose.&#8221;</p>
<p>And from that, I don&#8217;t mean don&#8217;t play the game to not lose, but also don&#8217;t play the game to make the other team lose. What? Not play the game to make the other team lose? What&#8217;s THAT about, you might say. Basically it&#8217;s this: If you plan your game around the mindset of making the other team lose, what you&#8217;re doing is projecting onto the other team your own idea of what it means to lose. Ultimately, your mindset will be your undoing. We can&#8217;t possibly know what the other team thinks with respect to losing, so if we project our sense of losing onto the other team, we essentially end up focusing on what will make us lose, and ultimately play a game of &#8220;not-losing vs. losing&#8221; as opposed to winning vs. losing. The best we can hope for in that scenario is a draw.</p>
<p>A good example of this comes from a Star Trek: The Next Generation episode &#8220;Peak Performance&#8221; where Data plays a rather arrogant opponent in a game of Stratagema.</p>
<span style="text-align:center; display: block;"><a href="http://goofydawg.net/2012/02/03/a-republicans-view-of-why-obama-is-likely-to-win-the-election/"><img src="http://img.youtube.com/vi/ZIOEklxc_yY/2.jpg" alt="" /></a></span>
<p>When I saw this years ago, the one thing that struck me in Data&#8217;s explanation of beating Kolrami was that he was playing to a draw. But I looked at it the other way. Kolrami had projected what his &#8220;values&#8221; of he believed would make his opponent lose onto Data. Data didn&#8217;t just didn&#8217;t play the game that way, and though he technically did not win the game, he played it in such a way to force Kolrami to withdraw.</p>
<p>And this is EXACTLY what I&#8217;m observing in the GOP right now. They&#8217;re playing the election game very much like Kolrami, and frankly, with all the absolutely STUPID stuff the leadership is spouting, such as John Boehner&#8217;s repeated claims of the &#8220;unconstituionality of Obama-care&#8221; <a href="http://www.newsmax.com/GeorgeWill/Obamacare-Supreme-Will-Silberman/2011/11/22/id/418858">though the US Supreme Court ruling completely blows that out of the water</a>, they&#8217;re doing a great job of it. We have also had to hear every single Republican representative say in the press, &#8220;Our goal is to make Obama a one-term president.&#8221; Every time I hear that I have to laugh because that is exactly the kind of rhetoric Obama wants to hear. The GOP has essentially stated their entire strategy, and it&#8217;s working in Obama&#8217;s favor. <a href="http://www.gallup.com/poll/113980/Gallup-Daily-Obama-Job-Approval.aspx">His job approval ratings (Gallup) are starting to trend upward</a>. The GOP will state that his job approval ratings are historically low as compared to other presidencies. But the only thing that matters is where they&#8217;re at in this current election year, and should they press above the 50% mark, the GOP can kiss the election goodbye.</p>
<p>The net result for the GOP? Since they&#8217;re all partaking in the same strategy, the GOP presidential nomination is frankly, <a href="http://www.gallup.com/poll/152423/Romney-Leads-Gingrich.aspx">still up in the air</a>. Though Romney won Florida, his lead of 31% vs. Gingrich&#8217;s 26% isn&#8217;t significant enough for him to claim victory. Plus, 31% is not really a number about which to be ecstatic. If the numbers were in the 40&#8242;s that would be a different story, but as the numbers don&#8217;t lie, it is easy to interpolate that the Republican Party is generally fractured on who to follow. Not good.</p>
<p>And based upon those numbers, I&#8217;m apt to yet again vote outside the party. I have zero confidence in Romney, whom I see as simply buying the election with his riches and well-funded super-PACs. I was hopeful that Gingrich would fare better, but he has his own skeletons in the closet to deal with, and makes me seriously doubt his ability to lead the country. As such, there&#8217;s really no one in the GOP race that appears to me to be an outright leader. I realize that the number will go up as more candidates leave the race. But I also see that as those supporters settling for the remaining candidate(s). I would much rather see someone who&#8217;s garnering support organically rather than through inheritance.</p>
<p>Obama, on the other hand, has been quietly going about his business, and no matter what the hyperbole of the GOP may state, his policies have had success. Do I like the fact that he didn&#8217;t act much stronger on the Wall Street executives? Not at all. Do I like Obama-care? I&#8217;m a bit on the fence with that, but it has not killed jobs as the GOP keeps touting, and it has cost FAR LESS than what idiots like Michell Bachmann, Glenn Beck and Sarah Palin have made so many believe.</p>
<p>I never did dig the bailout, but understand why it had to happen, though I&#8217;m hopeful that legislation will pass that will prevent institutions from growing too big to fail. And mind you, those institutions were allowed to grow that big due to the rescinding of regulations under the Clinton and Bush administrations. Obama inherited a shit sandwich, and though I&#8217;m a Republican, I have to say that he&#8217;s done okay given the circumstances under which he took the presidency.</p>
<p>In any case, I believe that the only way for a true GOP leader to surface among the mediocrity that&#8217;s present in the race right now is for one of the candidates &#8211; and perhaps the party as a whole &#8211; to stop playing the game of &#8220;not losing.&#8221; They need to start volunteering their leadership on issues that are important to americans &#8211; all americans &#8211; and not just the financial elite and lobbies. Until they stop playing the game the way they&#8217;re playing, Obama has nothing to worry about.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/goofydawg.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/goofydawg.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/goofydawg.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/goofydawg.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/goofydawg.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/goofydawg.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/goofydawg.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/goofydawg.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/goofydawg.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/goofydawg.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/goofydawg.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/goofydawg.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/goofydawg.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/goofydawg.wordpress.com/64/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goofydawg.net&amp;blog=3879553&amp;post=64&amp;subd=goofydawg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://goofydawg.net/2012/02/03/a-republicans-view-of-why-obama-is-likely-to-win-the-election/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4f1e3be4b2b49a283ad61ac80b2227fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">goofydawg</media:title>
		</media:content>
	</item>
		<item>
		<title>On Agile Development and Why It&#8217;s Done So Wrong&#8230;</title>
		<link>http://goofydawg.net/2012/01/27/on-agile-development-and-why-its-done-so-wrong/</link>
		<comments>http://goofydawg.net/2012/01/27/on-agile-development-and-why-its-done-so-wrong/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 02:15:37 +0000</pubDate>
		<dc:creator>GoofyDawg</dc:creator>
				<category><![CDATA[ui engineering]]></category>

		<guid isPermaLink="false">http://goofydawg.net/?p=59</guid>
		<description><![CDATA[I&#8217;ve been in several organizations where we used an &#8220;agile&#8221; development process. I termed what is commonly known as Agile Development in lower case and quoted because most organizations I&#8217;ve been in practice Agile in spirit as opposed to canonically. Granted, any process needs to fit the particular organization, but many organizations&#8217; idea of Agile [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goofydawg.net&amp;blog=3879553&amp;post=59&amp;subd=goofydawg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been in several organizations where we used an &#8220;agile&#8221; development process. I termed what is commonly known as Agile Development in lower case and quoted because most organizations I&#8217;ve been in practice Agile in spirit as opposed to canonically. Granted, any process needs to fit the particular organization, but many organizations&#8217; idea of Agile is a focus on quick delivery. The end result? Lots of technical debt.</p>
<p>For instance, I once worked with one organization where they split their &#8220;agile&#8221; process into three stages: Sprint Planning, Development, and Repaying Technical Debt. About 10% was focused on sprint planning (which is reasonable), 60% was spent on development, and 30% was spent on repaying technical debt. When I heard that 30% spent on repaying technical debt, I about  flipped my lid! To me, allocating that much time to technical debt indicates to me that one very specific point in the principles of the Agile Manifesto was completely missed:</p>
<p><em><strong>Continuous attention to technical excellence and good design</strong></em></p>
<p>Unfortunately, lots of organizations miss this item, and also unfortunately, this particular item is kind of far down in the manifesto principles list. To me, it should be the first issue. Why? Mainly because in my experience, if you take the time to design, then you actually avert paying a lot of technical debt down the line due to a bad design &#8211; or lack thereof.</p>
<p>I understand that one of the major tenets of Agile is &#8220;working software over comprehensive documentation.&#8221; I totally agree with this. But in my experience, the practice usually translates to zero to no design. It&#8217;s not that I want to have rich technical specifications, but especially if you&#8217;re doing object-oriented programming, not having at the very least a class diagram and associated sequence diagrams to describe the interactions is well&#8230; a crime from my perspective.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/goofydawg.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/goofydawg.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/goofydawg.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/goofydawg.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/goofydawg.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/goofydawg.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/goofydawg.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/goofydawg.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/goofydawg.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/goofydawg.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/goofydawg.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/goofydawg.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/goofydawg.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/goofydawg.wordpress.com/59/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goofydawg.net&amp;blog=3879553&amp;post=59&amp;subd=goofydawg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://goofydawg.net/2012/01/27/on-agile-development-and-why-its-done-so-wrong/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4f1e3be4b2b49a283ad61ac80b2227fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">goofydawg</media:title>
		</media:content>
	</item>
		<item>
		<title>Sure, I Believe In a Free Market &#8211; Kind of&#8230;</title>
		<link>http://goofydawg.net/2012/01/15/sure-i-believe-in-a-free-market-kind-of/</link>
		<comments>http://goofydawg.net/2012/01/15/sure-i-believe-in-a-free-market-kind-of/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 17:43:46 +0000</pubDate>
		<dc:creator>GoofyDawg</dc:creator>
				<category><![CDATA[politics]]></category>

		<guid isPermaLink="false">http://goofydawg.net/?p=57</guid>
		<description><![CDATA[The battle cry of the RNC and Tea Party (I&#8217;m a registered Republican, by the way) is &#8220;free market.&#8221; I&#8217;m a proponent of a free market; markets that aren&#8217;t hindered by government. But I&#8217;m not at all in favor of a system of plunder and enslavement that is simply veiled by the term &#8220;free market [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goofydawg.net&amp;blog=3879553&amp;post=57&amp;subd=goofydawg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The battle cry of the RNC and Tea Party (I&#8217;m a registered Republican, by the way) is &#8220;free market.&#8221; I&#8217;m a proponent of a free market; markets that aren&#8217;t hindered by government. But I&#8217;m not at all in favor of a system of plunder and enslavement that is simply veiled by the term &#8220;free market economy.&#8221; You what that kind of free market got us? Just the Crash of 2008. What was that the result of? Very simply, it was deregulation of the financial sector. Without regulations to put a throttle on them, the big financial institutions came up with sub-prime loans. They then figured out a way to securitize that debt and create bonds on the paper. Then they created &#8220;insurance policies&#8221; in the form of collateralized debt obligations to insure against those financial instruments that I suspect they knew were going to fail.</p>
<p>In essence, the &#8220;free market&#8221; basically gave those Wall Street bastards the freedom to gamble with other people&#8217;s money. And the worst thing about that &#8220;freedom&#8221; is that after the Wall Street boys completely screwed up the economy where we saw millions of foreclosures and millions of jobs lost, they had nothing to worry about. The American taxpayer came to their rescue! You can&#8217;t tell me that it is more complicated than that. The freedoms those people enjoyed allowed them to act in such a way that they collectively brought the global economy to the brink of complete failure; they were all essentially acting as huge, interconnected hedge funds and they eventually became too big to fail. If one went down, they all would go down. So what did they do when they realized that they&#8217;d completely fucked up? They cried for help and they got it in the form of a $700 billion bailout!</p>
<p>Think about this: If anyone of the &#8220;little people&#8221; did what Wall Street did, they&#8217;d be ruined, if not jailed. You see anyone go to jail? Not at all. In fact, a year after the collapse, Goldman Sachs awarded billions in bonuses to its employees. No one learned any lesson. Perhaps the ultimate victims in this &#8211; the rank and file American public &#8211; learned a lesson: That those in the upper echelons of the financial community are simply above reproach and in reality and sadly, above the law.</p>
<p>The financial crisis just proved that a free market that is also free from moral responsibility does not work. With this coming election, I&#8217;m actually deathly afraid that my Republican leaders will simply allow Wall Street&#8217;s trend of fiscal irresponsibility to continue. Thus far, all I&#8217;ve heard from the candidates is not how they&#8217;re going to protect against the 2008 crash; instead, they&#8217;re making this a class war and taking the side of the crooks who got us into this mess in the first place; calling them &#8220;job creators.&#8221;</p>
<p>Frankly, I don&#8217;t really give a shit about politicians&#8217; rhetoric on how they&#8217;re going to create jobs &#8211; especially within the context of this particular economic environment. I believe that they first have to find a way to keep Wall Street in check. If that means creating some sort of oversight or regulation, so be it.</p>
<p>To me, a free market is a market where everyone is free to prosper. But in order to make that work, there has to be some sense of responsibility and accountability. There was neither in this latest saga in our economic story, and all that&#8217;s going to happen if this continues is that we&#8217;re bound to have another collapse.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/goofydawg.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/goofydawg.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/goofydawg.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/goofydawg.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/goofydawg.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/goofydawg.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/goofydawg.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/goofydawg.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/goofydawg.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/goofydawg.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/goofydawg.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/goofydawg.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/goofydawg.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/goofydawg.wordpress.com/57/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goofydawg.net&amp;blog=3879553&amp;post=57&amp;subd=goofydawg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://goofydawg.net/2012/01/15/sure-i-believe-in-a-free-market-kind-of/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4f1e3be4b2b49a283ad61ac80b2227fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">goofydawg</media:title>
		</media:content>
	</item>
		<item>
		<title>Mounting Your VMWare VM on OSX Lion</title>
		<link>http://goofydawg.net/2012/01/13/mounting-your-vmware-vm-on-osx-lion/</link>
		<comments>http://goofydawg.net/2012/01/13/mounting-your-vmware-vm-on-osx-lion/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 17:01:22 +0000</pubDate>
		<dc:creator>GoofyDawg</dc:creator>
				<category><![CDATA[ui engineering]]></category>

		<guid isPermaLink="false">http://goofydawg.net/?p=53</guid>
		<description><![CDATA[If you have a VMWare VM installed on your Lion machine, and you have set up SSH on the VM, then it is possible to mount your VM as a volume on your Mac using OSXFuse and a client such as ExpanDrive. For those of us who like to use an IDE like IntelliJ or [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goofydawg.net&amp;blog=3879553&amp;post=53&amp;subd=goofydawg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>If you have a VMWare VM installed on your Lion machine, and you have set up SSH on the VM, then it is possible to <a title="OSXFuse" href="http://osxfuse.github.com/">mount your VM as a volume on your Mac using OSXFuse</a> and a <a title="ExpanDrive" href="http://www.expandrive.com/">client such as ExpanDrive</a>.</p>
<p>For those of us who like to use an IDE like IntelliJ or WebStorm to do development, being able to treat my VM as a volume on my Mac has been a boon to development. But moreover, mounting as a volume allows for easier file management than using the command line. Some folks are fine with the command line, and I applaud them, but I&#8217;ve gotten used to using an IDE and having all its conveniences. Call me soft, but a big part of development is being able to work efficiently. If you&#8217;re not efficient, then you&#8217;re not productive.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/goofydawg.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/goofydawg.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/goofydawg.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/goofydawg.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/goofydawg.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/goofydawg.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/goofydawg.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/goofydawg.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/goofydawg.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/goofydawg.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/goofydawg.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/goofydawg.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/goofydawg.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/goofydawg.wordpress.com/53/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goofydawg.net&amp;blog=3879553&amp;post=53&amp;subd=goofydawg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://goofydawg.net/2012/01/13/mounting-your-vmware-vm-on-osx-lion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4f1e3be4b2b49a283ad61ac80b2227fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">goofydawg</media:title>
		</media:content>
	</item>
		<item>
		<title>When I Vote for President I Will Vote&#8230;</title>
		<link>http://goofydawg.net/2011/12/08/when-i-vote-for-president-i-will-vote/</link>
		<comments>http://goofydawg.net/2011/12/08/when-i-vote-for-president-i-will-vote/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 17:01:56 +0000</pubDate>
		<dc:creator>GoofyDawg</dc:creator>
				<category><![CDATA[politics]]></category>

		<guid isPermaLink="false">http://goofydawg.net/?p=49</guid>
		<description><![CDATA[&#8230;with my conscience. My brother and I have always wondered what was up with our father and many of our ultra-right-wing conservative family members, puzzling over their seemingly blind support of candidates or anything Republican for that matter; all this on top of their absolutely annoying criticism of Democrats. On the other hand, one of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goofydawg.net&amp;blog=3879553&amp;post=49&amp;subd=goofydawg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8230;with my conscience.</p>
<p>My brother and I have always wondered what was up with our father and many of our ultra-right-wing conservative family members, puzzling over their seemingly blind support of candidates or anything Republican for that matter; all this on top of their absolutely annoying criticism of Democrats. On the other hand, one of my closest friends has been a staunch Democrat; staunch to the point of getting angry if I didn&#8217;t agree with his political ideals.</p>
<p>This morning, I read an <a href="http://decoded.nationaljournal.com/2011/12/romney-notes.php">article on the Romney aides attacking Newt Gingrich&#8217;s reliability and trustworthiness</a>, and essentially calling him an anti-Republican, and just falling short of calling him psychotic. But the thing that one of the aides said struck me:</p>
<p><em>I don&#8217;t think Newt Gingrich cares about conservative principles</em>&#8230;</p>
<p>I then realized that statements like the one above are the root of the problem that I&#8217;ve been having with BOTH sides of our political landscape. Each camp has been very effective in polarizing the masses and debating on ideology, not the issues. If an issue does come up, it seems &#8211; at least from what I&#8217;ve been reading &#8211; that the legislators don&#8217;t argue the merits or the problems with the issue itself, they argue the ideology.</p>
<p>The net effect can be akin to brainwashing. Anytime you bring ideology into anything, you bring in emotion. Push the right emotional buttons &#8211; especially the anger buttons &#8211; and you can instantly move thousands, perhaps millions, towards your point of view. Today&#8217;s politicians have been extremely effective at that. Take a look at the GOP: Their resounding, practically single-minded battle-cry has been to make Obama a one-term president. My question for my fellow Republicans is simply this: What do you stand for that will be for the good of the American people?</p>
<p>Oh, they say all the right stuff to address the issues on their websites, that&#8217;s for sure. But the news they make has been all about political ideology. As a Republican, I anguish about this as it makes me extremely reluctant and actually confused about who would be best suited to run against our current president. As it stands, I believe the one who refuses to engage in the ideology debate will be the one I vote for; that is, if they don&#8217;t drive me away as a Republican voter due to their ideological squabbling.</p>
<p>So that is why in the end, I will vote my conscience, and vote for the candidate whom I believe believes in &#8220;by the people for the people.&#8221; That may be Republican &#8211; and I&#8217;m hoping it is &#8211; but it may not be, and as in previous elections, I will cross party lines.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/goofydawg.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/goofydawg.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/goofydawg.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/goofydawg.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/goofydawg.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/goofydawg.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/goofydawg.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/goofydawg.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/goofydawg.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/goofydawg.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/goofydawg.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/goofydawg.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/goofydawg.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/goofydawg.wordpress.com/49/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goofydawg.net&amp;blog=3879553&amp;post=49&amp;subd=goofydawg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://goofydawg.net/2011/12/08/when-i-vote-for-president-i-will-vote/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4f1e3be4b2b49a283ad61ac80b2227fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">goofydawg</media:title>
		</media:content>
	</item>
		<item>
		<title>Why Job Descriptions Are Useless</title>
		<link>http://goofydawg.net/2011/11/23/why-job-descriptions-are-useless/</link>
		<comments>http://goofydawg.net/2011/11/23/why-job-descriptions-are-useless/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 17:16:57 +0000</pubDate>
		<dc:creator>GoofyDawg</dc:creator>
				<category><![CDATA[technical recruiting]]></category>
		<category><![CDATA[job description]]></category>
		<category><![CDATA[recruiting]]></category>

		<guid isPermaLink="false">http://goofydawg.net/?p=46</guid>
		<description><![CDATA[I wonder if companies ever wonder why the hell they get so many crappy resumes for the jobs they post. Part of it may have to do with job hunters simply taking a shotgun approach to their job search and throwing resumes out to see what sticks. For sure, I&#8217;ve done that in the past, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goofydawg.net&amp;blog=3879553&amp;post=46&amp;subd=goofydawg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I wonder if companies ever wonder why the hell they get so many crappy resumes for the jobs they post. Part of it may have to do with job hunters simply taking a shotgun approach to their job search and throwing resumes out to see what sticks. For sure, I&#8217;ve done that in the past, but over time, I&#8217;ve learned to dig into the job descriptions, which leads me to the crux of this article. I&#8217;m not sure if classes are given on writing job descriptions, but especially in my recent experience, most that I&#8217;ve seen have been rubbish.</p>
<p>A lot of this probably has to do with the recruiter of the company being left to write the job description, and they don&#8217;t have the innate knowledge nor perspective of the role that one who is in or managing the position has. But frankly speaking, it&#8217;s not the recruiter&#8217;s job to come up with the job description. It&#8217;s the hiring manager&#8217;s. Then perhaps, we have another quandary, and that is that the hiring manager hasn&#8217;t been very clear nor precise in what he or she is after. Either way, the end result of a bad or inadequate job description is that companies get a lot of misaligned resumes, and waste a ton of time having to sift through them to find the gems.</p>
<p>I realize that many companies have methods and procedures for publishing job descriptions, and it usually starts with the hiring manager writing something up, then turning it into recruiting. But how many job descriptions are actually proofread for more than grammatical or spelling errors? Considering the plethora of what this author feels are crappy job descriptions, probably not much.</p>
<p>That said though, it&#8217;s not difficult to write an effective job description. One simply has to keep a couple of things in mind:</p>
<ol>
<li>First and foremost, a job description is sales collateral. Your buyers are your candidates. Instead discussing this point at length, let me ask a question to get your gears turning: If you were trying to sell a high-value, luxury product, would you package it in newspaper? So the job description should have some polish and have language that evokes a positive emotional response that will compel job hunters to dig deeper into the details of the job.</li>
<li>The job description is also like an invitation to an exclusive club in which certain criteria have to be met. I&#8217;ll get into this point in detail below, but clarity and precision are key because you want to attract the right individuals and make it clear that only those who don&#8217;t meet the criteria don&#8217;t bother to apply; respectfully, of course.</li>
</ol>
<p>The first point is pretty easy to accomplish, though I have found that you have to be careful about not coming off as too &#8220;snobby&#8221; in the job description. That&#8217;ll turn people off. The trick is to word the job description such that people will feel as if it would be a privilege to work at your company, but then balance it with points that will make them excited. A phrase such as,</p>
<p><em>We take great UI seriously, from visual and interaction design to engineering, and the people we have working on our UI are as equally passionate. We&#8217;re looking for people who share that passion, and want to be part of a team that creates &#8220;kick-ass&#8221; UI.</em></p>
<p><em></em>&#8230;is extremely effective in not only stating the value of working at the company, but appealing to people&#8217;s sense of ownership and passion.</p>
<p>Point 2 is all about focusing your requirements. Most job descriptions lump all the requirements together into a single section. I have preferred those that tell me the must-haves in one section, then the nice-to-haves in another section. Also, don&#8217;t list things that are NOT part of the job. For instance, most UI folks know very little about Java, but lots of job descriptions for UI list Java programming as a requirement; something along the lines of &#8220;3-5 years Java experience.&#8221; Don&#8217;t know how many times I&#8217;ve seen that, and when I inquired about it, the hiring manager says it&#8217;s really not that important. What would have been more accurate would be something like this: &#8220;3-5 years experience writing UI on top of a Java platform,&#8221; which is typically what that &#8220;3-5 years Java experience really means.&#8221;</p>
<p>In a case such as the Java experience, not only will scare off potentially great UI talent, you&#8217;ll attract the wrong people who may be great in Java but simply mediocre in UI. So with your requirements, you need to have laser-like focus with your must-haves, and don&#8217;t be afraid to say something to the effect of:</p>
<p><em>Only candidates who fulfill the following requirements will be considered&#8230;</em></p>
<p><em></em>This won&#8217;t prevent what I call resume spammers from sending you a resume, but it will help to reduce the glut.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/goofydawg.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/goofydawg.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/goofydawg.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/goofydawg.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/goofydawg.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/goofydawg.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/goofydawg.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/goofydawg.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/goofydawg.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/goofydawg.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/goofydawg.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/goofydawg.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/goofydawg.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/goofydawg.wordpress.com/46/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goofydawg.net&amp;blog=3879553&amp;post=46&amp;subd=goofydawg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://goofydawg.net/2011/11/23/why-job-descriptions-are-useless/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4f1e3be4b2b49a283ad61ac80b2227fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">goofydawg</media:title>
		</media:content>
	</item>
		<item>
		<title>Keys to Finding and Evaluating Great UI Engineering Talent</title>
		<link>http://goofydawg.net/2011/11/18/keys-to-finding-and-evaluating-great-ui-engineering-talent/</link>
		<comments>http://goofydawg.net/2011/11/18/keys-to-finding-and-evaluating-great-ui-engineering-talent/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 20:48:29 +0000</pubDate>
		<dc:creator>GoofyDawg</dc:creator>
				<category><![CDATA[talent management]]></category>
		<category><![CDATA[technical recruiting]]></category>
		<category><![CDATA[ui engineering]]></category>

		<guid isPermaLink="false">http://goofydawg.net/?p=41</guid>
		<description><![CDATA[There are plenty of books and articles out there that talk about finding and maintaining technical talent in a generalized way, but very little information exists in the published word or on the internet regarding finding, hiring, and keeping great UI Engineering talent. Hiring managers across many industries have been stymied time and again in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goofydawg.net&amp;blog=3879553&amp;post=41&amp;subd=goofydawg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There are plenty of books and articles out there that talk about finding and maintaining technical talent in a generalized way, but very little information exists in the published word or on the internet regarding finding, hiring, and keeping great UI Engineering talent. Hiring managers across many industries have been stymied time and again in bringing in great UI Engineering talent and as <a title="Six reasons why the shortage of ui engineers is going to get worse" href="http://www.usabilitycounts.com/2010/10/20/six-reasons-why-the-shortage-of-ui-engineers-is-going-to-get-worse/">this article by Patrick Neeman at JobVite indicates</a>, it&#8217;s only going to get worse. I agree with most of the points Mr. Neeman makes, but his first bullet point, &#8220;Attention paid to the user experience,&#8221; in my mind, could be the crux of the whole problem. You see, to me, it all boils down to having the proper perspective, and the first point raises serious issues about companies&#8217; perspectives on UI Engineering.</p>
<p>Not the perspective of the candidate, mind you; but companies&#8217; perspectives on what makes a great UI Engineer. I&#8217;ll just say it plainly: Most companies&#8217; expectations and perspectives on evaluating UI Engineering candidates is flawed. To understand this, we have to look at some key traits that make up a great UI Engineer.</p>
<ul>
<li>Most UI Engineers did not start out in UI or UX. They come from varied backgrounds; but especially from non-technical, non-engineering backgrounds. The engineering they&#8217;ve gleaned over the years has been much more of an organic process.</li>
<li>Adding to the point above, these individuals are highly self-motivated. They may not have knowledge of a particular subject, but once they realize that, they have the drive to educate themselves AND apply the ability to add the techniques to their arsenal of tools.</li>
<li>Building on the two previous points, the best UI Engineers don&#8217;t have a CS background, though they practice the critical, high-level engineering such as creating class and sequence diagrams, or some other formalized method of technical design.</li>
<li>Most UI Engineers are pretty chill folks and I mean super-mellow. It&#8217;s a trait that I have observed in the best UI Engineers I have both hired and worked with over the years. They quietly go about their business and continually ROCK THE HOUSE with the things they create. Unfortunately, this chill demeanor often gets mistaken for a lack of motivation. Couldn&#8217;t be further from the truth. To a person, I&#8217;ve observed laser-like focus in the best with whom I&#8217;ve had the privilege to work.</li>
<li>The best UI Engineers have the uncanny ability to take designs and wireframes and express them in code; but more importantly, code that is backed with a solid technical design.</li>
<li>UI Engineers hold a special place in the development process because not only do they have to have great technical acuity, they have to understand the user experience, the product, and the marketing behind the product. I think adding to the chill factor, many are chill because their minds are constantly working in parallel processes to evaluate the appropriate way to express a visual design.</li>
<li>Great UI Engineers also have a certain underlying ferocity about ownership of the UI &#8211; believe me, it&#8217;s a good thing. They are acutely aware that what they build is how the customer will view not only the application, but the company as well. They know they have a huge responsibility, and they take it absolutely seriously.</li>
<li>The best UI Engineers I&#8217;ve worked with or have worked for me aren&#8217;t motivated by UI frameworks. They use the tools at hand first, and if a particular framework makes their job easier, but without affecting the user experience, they will learn the framework as necessary. The point here is that they are extremely quick studies.</li>
</ul>
<p>The list above constitutes what I believe are the most important traits of a great UI Engineer, though I do realize it may not be complete.</p>
<h3>Evaluating UI Engineering Candidates</h3>
<p>Wait a minute! I skipped finding the talent. This was on purpose. Before we can get into that discussion, it&#8217;s important to not only know the traits of a great UI Engineer, but also how to evaluate for those traits. We&#8217;ll get into finding that talent after this discussion.</p>
<p>Before I answer this question, I need to point out flaws that I&#8217;ve observed over the years &#8211; from both personal experience as a hiring manager and as a candidate &#8211; in the perception of the UI Engineer. Because there&#8217;s not really a good understanding of what makes up a great UI Engineer, as I mentioned above, most companies&#8217; perceptions are innately flawed. So I need to point out a couple of important points about what a UI Engineer is NOT:</p>
<ul>
<li><strong>A UI Engineer is not a visual designer</strong>. While he or she may have a good sense of aesthetics, they are not UI designers. Some can do visual design, but that is not their focus.</li>
<li><strong>Many of the best UI Engineers I&#8217;ve run across never received formal computer science training</strong>. So many companies throw algorithms at UI candidates during the interview process that have NOTHING to do with building great UI. This is way too low-level. If you&#8217;re going to effectively evaluate UI Engineers, you&#8217;ll remove this from your evaluation process.</li>
</ul>
<p>With those points in mind, let&#8217;s proceed with a process that I have found to be highly effective. What I will be outlining below is the process, not the actual questions, though I will suggest context of your questions.</p>
<ol>
<li>First, start out with personal motivation and team fit. Many companies do this as a last process. I prefer to do this up front. My thought behind this is to not waste both the candidate&#8217;s and the team&#8217;s time if there isn&#8217;t a fit from a motivational, philosophical and cultural perspective.</li>
<li>The next stage of the interview process needs to focus on object-oriented design acuity. This is the first part of the technical interview that focuses on high-level technical design. Don&#8217;t mark off points for a candidate that may not know UML; but great candidates these days should be familiar with object-oriented design to some extent. One way to test this would be to have them come up with an object hierarchy based upon some arbitrary set of objects. <a href="http://goofydawg.net/2011/11/17/great-interview-exercise-object-oriented-awareness/">Here&#8217;s a great example that I ran across in my own interview process</a>.Now mind you, diagramming can be taught. So it is of absolute no use to discuss the deeper technical points of UML or relational technology. What you&#8217;re after here is getting a sense of how the candidate organizes their thoughts given an environment and constraints within that environment. And you&#8217;re getting a sense of their acuity with object-oriented programming.For those who are thinking that this step is superfluous. Think again. Most UI Engineering candidates will list object-oriented JavaScript on their resumes. It&#8217;s one thing to know the syntax and how to code, it&#8217;s an entirely different matter to know the architecture behind the syntax, and this is what you are evaluating at this stage.Note that most junior candidates will be pretty clueless about this stuff. So if you&#8217;re interviewing a junior-level candidate, you need to be gentle, and evaluate the candidate based upon their ability to grasp the concepts AND especially your estimation of how much time you will have to spend in training the candidate.</li>
<li>Following the design discussion, get into details surrounding the candidate&#8217;s work style. The questions you ask here will give you critical information on how efficient the candidate is when they work. What you&#8217;re looking for here is if they follow a process, whether formal or informal, and the closer to SDLC, the better. If they have followed a formal process in a previous position, ask them what they might improve.</li>
<li>The next stage will go into specific technical questions around HTML, CSS, and JavaScript.
<ul>
<li>For HTML, ask questions about document structure, semantic HTML, and perhaps have them do a coding example. One effective way I&#8217;ve found to measure HTML skills is to give the candidate a sample wireframe and have them list out the document structure they&#8217;d use in as few containers as possible while still maintaining semantic HTML rules (be a bit wary if they&#8217;re not aware of the term &#8220;semantic HTML&#8221;).</li>
<li>For CSS, understanding the box model is ultra-important, so ask questions around how to solve box model issues among the various browsers. To test for CSS 2 and 3, ask a candidate to write out CSS that will take three divs and have them display horizontally adjacent on the page. In CSS 2, this is done with floats, but with CSS 3, you can use display:table-cell.</li>
<li>For JavaScript, there are well-established ways of testing JavaScript syntax knowledge, so I won&#8217;t discuss them here. To test for object-oriented JavaScript knowledge, give the candidate a couple or set of objects in a hierarchy (with properties and methods), and have them code the hierarchy. At a minimum, they should be able to use prototype inheritance. The better coders will write their properties and methods in an object literal and return it from within an anonymous function protected by the global scope. For instance: MyObject.prototype = (function() {  return {myMethod: function() {}} })().Please avoid doing classic algorithms like Fibonacci sequences unless you&#8217;re doing a lot of work with object hashes or the candidate is CS trained. Most of the time, they don&#8217;t have much to do with the core work a UI Engineer will be doing.Also, if you are using MVC in your organization, you should do an MVC exercise. This doesn&#8217;t necessarily have to be in code as the various frameworks approach MVC in different ways. But you should ask questions revolving the candidate&#8217;s understanding of MVC.</li>
</ul>
</li>
</ol>
<p>Okay, that&#8217;s a lot to digest&#8230; But armed with this knowledge, we can now get into finding the talent.</p>
<h3>Finding and Attracting Great UI Engineering Talent</h3>
<p>To find great UI Engineering talent, it all starts out with a great job description. You can&#8217;t imagine how many job descriptions I&#8217;ve run across that just won&#8217;t get the right people looking at the job. What often happens is that a job description will go out and you&#8217;ll get hundreds of applicants; 95% of which are not qualified for the job. What you want to do with the job description is weed out the unqualified candidates. If you&#8217;re using a headhunter, giving them a great job description will help them with their weeding out process.</p>
<p>I&#8217;m not going to write out a job description here. What I will provide are some important touchpoints that should be included in the job description.</p>
<p>First come the core requirements:</p>
<ul>
<li>At least three years of experience hand coding HTML, CSS, and JavaScript (for senior-level and above, this experience should be a minimum of five years)</li>
<li>Track record of  successfully working and openly communicating with cross-functional teams from design, marketing and engineering (this is more important than you might think).</li>
<li>Track record of taking visual designs and/or wireframes to completion</li>
<li>Be able to demonstrate methods of technical design via UML or other technical diagramming.</li>
<li>Knowledge of and familiarity with object-oriented JavaScript; preferably direct experience, without reliance on a third-party framework.</li>
<li>Must know semantic HTML</li>
<li>Must know unobtrusive JavaScript</li>
<li>Must know how and demonstrate how to resolve cross-browser issues</li>
<li>Can code XMLHTTPRequest by hand without a third-party library. (This is a good one: Do they actually know the mechanics behind AJAX &#8211; it&#8217;s only two functions, but you&#8217;d surprised how many don&#8217;t know this and have instead relied entirely on third party libraries).</li>
</ul>
<p>Next comes a summary of the above and something that should be either asterisked or bolded:</p>
<p><strong>Qualified candidates will be required to demonstrate and discuss their work in end-to-end UI development, from concept to technical design to application implementation and maintenance.</strong></p>
<p>What I found by taking this approach is that I get fewer resumes, but resumes that are much more aligned with the actual job.</p>
<p>Notice that the core requirements above don&#8217;t mention third-party libraries such as jquery or MVC frameworks such as backbone or knockout. That&#8217;s stuff you can include below the section of core requirements as nice-to-haves. Remember, a good JS developer can pick that stuff up quickly, or they already know it. What you&#8217;re trying to do is actually scare away the dabblers or the backend guys who think they can do UI because they trivialize HTML, CSS, and JavaScript. You don&#8217;t want anyone who will say, &#8220;It&#8217;s just HTML&#8230;&#8221; or &#8220;It&#8217;s just JavaScript&#8230;&#8221;</p>
<p>As for the other stuff in the job description, I&#8217;ll leave that up to you, as different companies do different things.</p>
<p>Armed with all this, you should be able to acquire great UI Engineers.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/goofydawg.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/goofydawg.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/goofydawg.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/goofydawg.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/goofydawg.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/goofydawg.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/goofydawg.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/goofydawg.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/goofydawg.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/goofydawg.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/goofydawg.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/goofydawg.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/goofydawg.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/goofydawg.wordpress.com/41/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goofydawg.net&amp;blog=3879553&amp;post=41&amp;subd=goofydawg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://goofydawg.net/2011/11/18/keys-to-finding-and-evaluating-great-ui-engineering-talent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4f1e3be4b2b49a283ad61ac80b2227fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">goofydawg</media:title>
		</media:content>
	</item>
		<item>
		<title>Great Interview Exercise: Object-Oriented Awareness</title>
		<link>http://goofydawg.net/2011/11/17/great-interview-exercise-object-oriented-awareness/</link>
		<comments>http://goofydawg.net/2011/11/17/great-interview-exercise-object-oriented-awareness/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 19:01:38 +0000</pubDate>
		<dc:creator>GoofyDawg</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[interview questions]]></category>
		<category><![CDATA[object-oriented design]]></category>

		<guid isPermaLink="false">http://goofydawg.net/?p=32</guid>
		<description><![CDATA[Though I am now employed, the past few months have been illuminating with respect to the interview process. There is so much disparity between what employers are asking for in their job descriptions and what they actually do to evaluate the requirements that they claim they need in candidates. The most interesting thing I&#8217;ve run [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goofydawg.net&amp;blog=3879553&amp;post=32&amp;subd=goofydawg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Though I am now employed, the past few months have been illuminating with respect to the interview process. There is so much disparity between what employers are asking for in their job descriptions and what they actually do to evaluate the requirements that they claim they need in candidates. The most interesting thing I&#8217;ve run across is a requirement for MVC or object-oriented JavaScript. However, in about 90% of the interviews I&#8217;ve had, very little has been discussed with respect to general object-oriented principles, let alone object-oriented JavaScript. In fact, most interviewers simply ask if I know certain MVC frameworks such as &#8220;backbone&#8221; or &#8220;knockout.&#8221; When I&#8217;ve gotten those questions, though I answer that I am familiar with them, but have never built anything with them, I think to myself that the the interviewer is going to be entirely tactical with the interview, and only brush the surface of OO JavaScript.</p>
<p>I&#8217;ll just say it plainly: Just because someone happens to know a particular MVC or OOP framework doesn&#8217;t mean they actually understand OOP. No matter what framework you use, OOP is all about design, all about understanding the relationships and interactions between objects. Go ahead and make all the objects you want. But unless you have a clear idea of how they relate and interact, then you run the risk of doing A LOT of extra coding down the line to compensate for your lack of design. Mind you, I&#8217;m not just throwing this out as a matter of opinion, I&#8217;m coming from a position of experience.</p>
<p>Circling back to the crux of this article, that&#8217;s not to say that there haven&#8217;t been some great interview questions or exercises that cover OOP. There have been. But one in particular stands out above the rest, and it will be an exercise that I will use going forward. I got this from a great interview with a little company called Urban Mapping with which I interviewed a few weeks back. It was the first time I felt that a company &#8220;got it&#8221; with respect to object-oriented design. And you know what? The exercise had very little to do with JavaScript. Their thinking behind this exercise is that it&#8217;s more important to know the architecture behind what you&#8217;re building before you build it. AMEN TO THAT! So without further ado, let&#8217;s get into the exercise:</p>
<p><strong>Let&#8217;s Build an Animal Kingdom</strong></p>
<p>Given the following animals:</p>
<p>Dog, Cat, Eagle, Duck, Python, Anaconda, Iguana, Salmon, Lungfish, Frog</p>
<p>Build an object hierarchy that can describe this set of animals. After you&#8217;re done we&#8217;ll discuss. There isn&#8217;t necessarily a right or wrong answer to this. But we&#8217;re going to take this time to discuss your object-oriented awareness and acuity.</p>
<p>Here&#8217;s a possible solution to this hierarchy:</p>
<p><a href="http://goofydawg.files.wordpress.com/2011/11/animals2.png"><img class="aligncenter size-full wp-image-35" title="animals" src="http://goofydawg.files.wordpress.com/2011/11/animals2.png?w=490&#038;h=294" alt="" width="490" height="294" /></a></p>
<p>Once they&#8217;ve finished the diagram, you get into the application of the design. Note that this is not to be confused with implementation, but rather, providing a context to the design to see if there are any holes in it. But first, some questions:</p>
<ol>
<li>What was your reasoning behind building the hierarchy in this way?</li>
<li>Would there be another way to approach this? (Another possibility would be to break it down by number of legs, but that is actually not optimal based upon the follow-up exercise of creating a world for the animals)</li>
</ol>
<p>So the context we&#8217;ll use is this: Building a world to place the animals. So on the board, draw out an area that has a body of water, some trees, maybe a cloud to represent air, and some rocks. After  you&#8217;ve drawn it out, then say that we&#8217;ll instantiate these animal objects in various places on the board. The idea is to reveal if the design will support the constraints of the environment. If they broke down the hierarchy according to number of legs, they may have missed the functional level. This is something that can be suggested and will almost immediately be revealed once you start going through instantiation.</p>
<p>If they did break it down by function, then chances are they will have missed the multiple inheritance. For instance, an anaconda can be created either in water or on land; same with the dog. You can lead them through this with some questions:</p>
<ol>
<li>Is it possible that an animal can be instantiated in different locations? (You&#8217;ll especially look to see that the duck can be instantiated as a swimmer, walker, or a flyer). That last bit was a little evil on my part. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>Given that animals can be created in a couple of possible locations, and that there constraints as to where they can be created, where would you place the method that would check for the location? The correct answer would be at the second level, so that those animals that inherit from two parents will inherit the location constraint from both.</li>
</ol>
<p><strong>Summary</strong></p>
<p>So in this exercise, what are we trying to accomplish?</p>
<ol>
<li>The obvious answer is to see if they get object-oriented design at all.</li>
<li>The second thing this reveals is how well the candidate can communicate and justify their ideas.</li>
<li>And just as importantly as the other two, this exercise reveals if this person has the ability to work with the team.</li>
</ol>
<p>Note that this exercise is best done with a couple of people in the room &#8211; probably no more than three &#8211; especially to address item 3 above.</p>
<p>Based upon my experience on the receiving end, doing this exercise was literally a breath of fresh air. Personally, I wouldn&#8217;t pull this on a junior developer, but this is something that I&#8217;d definitely use for senior front-end AND back-end developers. Remember, it&#8217;s not about the code with this exercise, it&#8217;s about the design thinking. Do a separate coding interview following this.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/goofydawg.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/goofydawg.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/goofydawg.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/goofydawg.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/goofydawg.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/goofydawg.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/goofydawg.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/goofydawg.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/goofydawg.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/goofydawg.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/goofydawg.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/goofydawg.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/goofydawg.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/goofydawg.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goofydawg.net&amp;blog=3879553&amp;post=32&amp;subd=goofydawg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://goofydawg.net/2011/11/17/great-interview-exercise-object-oriented-awareness/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4f1e3be4b2b49a283ad61ac80b2227fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">goofydawg</media:title>
		</media:content>

		<media:content url="http://goofydawg.files.wordpress.com/2011/11/animals2.png" medium="image">
			<media:title type="html">animals</media:title>
		</media:content>
	</item>
	</channel>
</rss>
