<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Object Mentor Blog: Hate is good</title>
    <link>http://blog.objectmentor.com/articles/2007/09/05/hate-is-good</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Hate is good</title>
      <description>&lt;p&gt;Great people make great software. So what makes great people? Who knows&amp;#8230;certainly not I. But I do know some traits that good software developers all seem to share. One of them is a &lt;i&gt;healthy disdain for mediocrity.&lt;/i&gt;&lt;/p&gt;


	&lt;p&gt;Good developers cannot stand sloppiness (in software, anyway). Apathy, haste, and carelessness send shivers down their spines. They may disagree on the best way to do things, but they all agree that things should be done the best way. And they&amp;#8217;re constantly looking and learning to find exactly what the best way is. They realize that seeking it is an ever-changing, lifelong quest.&lt;/p&gt;


	&lt;p&gt;Part of this is a recognition that the best way is the fastest way. Part of it is simply pride in one&amp;#8217;s work. I also think part of it may be due to the discreet nature of software&amp;#8230;either it works or it doesn&amp;#8217;t. The line between success and failure is only one bit wide, and good developers learn through experience that there&amp;#8217;s no room for maybe, sort-of, and kinda.&lt;/p&gt;


	&lt;p&gt;Whatever the reason for it, I see this trait often in the best developers, and not just with code. Slow builds, lackluster testing, and poor communication are met with intolerance and contempt, quickly followed by an intense desire to set things right.&lt;/p&gt;


	&lt;p&gt;Of course, it&amp;#8217;s possible to take this too far. Simply throwing everything out and starting over is rarely the best option. While good developers can&amp;#8217;t stand bad code, great developers make cleaning it up appear effortless. The code just gets a little better every day. Every change is a new opportunity for improvement, and every improvement is done in the context of delivering something useful. If you treat your software like boy scouts treat campgrounds, you&amp;#8217;ll never work with ugly code for long.&lt;/p&gt;


	&lt;p&gt;If you already have this disdain, foster it. Critique code (especially your own), and improve it. Discuss it with your coworkers. Read books, articles, and blogs. Most importantly, realize that any code you change is never &amp;#8220;done&amp;#8221;. If it was done, you wouldn&amp;#8217;t be changing it, now would you? Take the opportunity to make things better now. Right now. Otherwise, you&amp;#8217;ll lay crap on top of crap and things will be even worse tomorrow.&lt;/p&gt;


	&lt;p&gt;Peter Gibbons, the downtrodden programmer from the movie Office Space, said &amp;#8220;Ever since I started working, every single day of my life has been worse than the day before it. So that means that every single day that you see me, that&amp;#8217;s on the worst day of my life.&amp;#8221; If you don&amp;#8217;t want to follow Peter down the road to code hell, you have to start making things better today. You have to start hating bad code, at least, hating it enough to want to clean it up.&lt;/p&gt;</description>
      <pubDate>Wed, 05 Sep 2007 09:04:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:a4c5c735-5e40-475c-b1e3-97ad291bc7d7</guid>
      <author>Ben Rady</author>
      <link>http://blog.objectmentor.com/articles/2007/09/05/hate-is-good</link>
      <category>Ben's Banal Babble</category>
    </item>
    <item>
      <title>"Hate is good" by Eddy</title>
      <description>&lt;p&gt;I agree with this article.&lt;/p&gt;


	&lt;p&gt;As the author says, it is a trait.&lt;/p&gt;


	&lt;p&gt;Any person very good in their field should cringe and be annoyed with slopiness from themselves.  This is what drives in the direction of perfection.&lt;/p&gt;</description>
      <pubDate>Mon, 02 Jun 2008 08:13:19 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:048e15a8-3183-43de-bd79-d25d27d9e9cd</guid>
      <link>http://blog.objectmentor.com/articles/2007/09/05/hate-is-good#comment-1794</link>
    </item>
    <item>
      <title>"Hate is good" by Tim</title>
      <description>&lt;p&gt;@sebastian&lt;/p&gt;


	&lt;p&gt;Titles really only serve three purposes, and one of them is to pique curiosity.&lt;/p&gt;


	&lt;p&gt;It secondly serves as a handle, rather like a pattern or code smell name.&lt;/p&gt;


	&lt;p&gt;The third is to help people find your content when given a title-inclusive extract (like google search results or a list of articles by author).&lt;/p&gt;


	&lt;p&gt;For two of three purposes, this title serves very well.  It is evocative and memorable.  But I could see how it would be a poor act of marketing to use it in some situations.&lt;/p&gt;


	&lt;p&gt;Most alternative phrasings I came up with failed two of three.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;ve only known Ben a little while, but he absolutely does not seem to be the kind of person who would hate, hurt, or humiliate others.  He&amp;#8217;s a good guy, a good coach, and a good developer.  And I&amp;#8217;m not just saying that because we work for the same company.&lt;/p&gt;</description>
      <pubDate>Mon, 10 Sep 2007 11:05:40 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:fdaa41b3-02a9-414b-9060-de48e5bbd7d6</guid>
      <link>http://blog.objectmentor.com/articles/2007/09/05/hate-is-good#comment-770</link>
    </item>
    <item>
      <title>"Hate is good" by Sebastian K&#195;&#188;beck</title>
      <description>&lt;p&gt;Ben:&lt;/p&gt;


	&lt;p&gt;I 100% agree with your last statement.
It&amp;#8217;s just the title that I found somewhat dangerous.&lt;/p&gt;</description>
      <pubDate>Mon, 10 Sep 2007 06:11:45 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:4f4d5ca3-4906-4fc8-b368-a97c173163fb</guid>
      <link>http://blog.objectmentor.com/articles/2007/09/05/hate-is-good#comment-768</link>
    </item>
    <item>
      <title>"Hate is good" by Ben</title>
      <description>&lt;p&gt;Sebastian:&lt;/p&gt;


	&lt;p&gt;As I said in my response to Timbo, this isn&amp;#8217;t about hating people. I never suggested that you should belittle or humiliate anyone. Quite the opposite in fact. The best way to foster this trait is to review your own code with a harsh eye (say, that stuff you wrote 6 months ago that you&amp;#8217;ve totally forgotten about).&lt;/p&gt;


	&lt;p&gt;I call it as I see it when it comes to code. When it comes to my own code I&amp;#8217;m brutally honest. When it comes to other people&amp;#8217;s code, I am respectful and diplomatic, and I only give advice when explicitly asked. But doctors don&amp;#8217;t learn how to practice medicine by hanging around healthy people. If we want to improve, we have to address the bad code in front of us and take action to change it. Most of the code out there is bad, but still must be maintained&amp;#8230;simply focusing on how to create good code is not enough.&lt;/p&gt;</description>
      <pubDate>Sun, 09 Sep 2007 17:18:53 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:d2017b40-f638-46db-88bb-c935a05a8937</guid>
      <link>http://blog.objectmentor.com/articles/2007/09/05/hate-is-good#comment-766</link>
    </item>
    <item>
      <title>"Hate is good" by Sebastian K&#195;&#188;beck</title>
      <description>&lt;p&gt;Ben! Be careful with your words! Hate is NEVER good!
In stead of hating &amp;#8220;bad code&amp;#8221;, encourage people to write &amp;#8220;good code&amp;#8221; by doing so yourself. Help your coworkers recognize code smells and help them to improve. Don&amp;#8217;t belittle or humiliate people who didn&amp;#8217;t have the chance to learn how to write good code.&lt;/p&gt;</description>
      <pubDate>Sun, 09 Sep 2007 12:33:09 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:deac598b-7e5f-4535-b62d-0f1c8c487490</guid>
      <link>http://blog.objectmentor.com/articles/2007/09/05/hate-is-good#comment-764</link>
    </item>
    <item>
      <title>"Hate is good" by Bob S.</title>
      <description>&lt;p&gt;I guess, Ben Rady is a bad developer!&lt;/p&gt;</description>
      <pubDate>Sat, 08 Sep 2007 09:21:06 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:10abf078-e2fd-4e79-9c51-00dde1de8d1d</guid>
      <link>http://blog.objectmentor.com/articles/2007/09/05/hate-is-good#comment-761</link>
    </item>
    <item>
      <title>"Hate is good" by Karl Moore</title>
      <description>&lt;p&gt;I would agree with lots of your points. Having a healthy disdain for mediocrity is ok, but you have to also have the same energy and passion for making things better. It&amp;#8217;s great to want to get better, but I believe it&amp;#8217;s even more important to want to help other people get better.&lt;/p&gt;


	&lt;p&gt;You can&amp;#8217;t do this alone you need other people with like minded views or at least other people who are willing to listen. There&amp;#8217;s nothing worse than someone who wants things to be better but does nothing about it.&lt;/p&gt;


	&lt;p&gt;If you hate mediocrity, get everyone else hate it as well. That is the real battle I&amp;#8217;ve found, if you can solve that your nearly home and dry.&lt;/p&gt;</description>
      <pubDate>Sat, 08 Sep 2007 08:58:58 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:124a18c8-f145-47fe-b5de-44e9211aa014</guid>
      <link>http://blog.objectmentor.com/articles/2007/09/05/hate-is-good#comment-760</link>
    </item>
    <item>
      <title>"Hate is good" by FrankC</title>
      <description>&lt;p&gt;Fixing up bad code isn&amp;#8217;t a bad idea on the surface. Of course, obvious things should be cleaned up as part of a debugging or refactoring effort. However, if the program in question is poorly designed as a whole, cleaning code up in a routine can cause &#226;&#8364;&#339;fatal improvements&#226;&#8364;&#157; where a little change in one routine causes serious bug somewhere else in the program.&lt;/p&gt;</description>
      <pubDate>Sat, 08 Sep 2007 08:53:32 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:0992e997-4eef-4bae-87cf-903bd180c626</guid>
      <link>http://blog.objectmentor.com/articles/2007/09/05/hate-is-good#comment-759</link>
    </item>
    <item>
      <title>"Hate is good" by Nilanjan</title>
      <description>&lt;p&gt;All the great developers I know are very passionate about their work. Changing smelling part of the code comes to them naturally. Not having time and delivery deadlines are lame excuses. You don&amp;#8217;t have to have a separate time allocated to refactor code, it should be part of the daily work. Unfortunately it takes a while for some developers to even understand what is bad code.&lt;/p&gt;</description>
      <pubDate>Thu, 06 Sep 2007 20:03:20 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:47ab21f4-6963-447b-a972-704a9b4ccb87</guid>
      <link>http://blog.objectmentor.com/articles/2007/09/05/hate-is-good#comment-753</link>
    </item>
    <item>
      <title>"Hate is good" by Ben</title>
      <description>&lt;p&gt;OJ (point 1): I&amp;#8217;ve never had problems with the rule of &amp;#8220;If you change it, you clean it&amp;#8221;. When I&amp;#8217;m adding a feature or fixing a bug, anything that I touch gets cleaned up, tested, or improved in whatever ways I can. Anything I don&amp;#8217;t have to change to fix the bug or add the feature doesn&amp;#8217;t get cleaned up, (unless it gets changed because of other task-related cleanup).&lt;/p&gt;


	&lt;p&gt;This method seems to strike a good balance between cleaning up your campsite, and cleaning up the whole park.&lt;/p&gt;


	&lt;p&gt;Timbo: I should have specified that this &amp;#8220;hate&amp;#8221; is (for lack of a better word) internal. Professional software developers should treat people with respect&amp;#8230;clean code is no reason to be a jerk.&lt;/p&gt;</description>
      <pubDate>Thu, 06 Sep 2007 18:07:12 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:ab153c37-522c-4733-bf8f-dfdb4adfdd49</guid>
      <link>http://blog.objectmentor.com/articles/2007/09/05/hate-is-good#comment-751</link>
    </item>
    <item>
      <title>"Hate is good" by Dean Wampler</title>
      <description>&lt;p&gt;You see this &amp;#8220;fanaticism&amp;#8221; in most creative fields. I&amp;#8217;ve read that Frank Sinatra was a real pain in the recording studio, because of his fanatical attention to detail. It paid off, though ;)&lt;/p&gt;</description>
      <pubDate>Thu, 06 Sep 2007 09:07:40 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:04fbfca2-d09a-4f97-9c59-b8a93a417371</guid>
      <link>http://blog.objectmentor.com/articles/2007/09/05/hate-is-good#comment-747</link>
    </item>
    <item>
      <title>"Hate is good" by OJ</title>
      <description>&lt;p&gt;I just have a couple of things to say:&lt;/p&gt;


	&lt;p&gt;1 &amp;#8211; There is only so much time that you can spend improving the quality of the code when you have deadlines to meet. Software still needs to be shipped and supported, which can sometimes get in the way of fixing things properly. In the long term, a good developer should still have an affect on the code. Whether they stick around long enough to see it through is another matter.&lt;/p&gt;


	&lt;p&gt;2 &amp;#8211; Every programmer thinks they are good (even if they say that they&amp;#8217;re not). Everyone who reads this post will agree with you, and feel that they&amp;#8217;re in the &amp;#8216;good developer&amp;#8217; bucket.&lt;/p&gt;


	&lt;p&gt;I enjoyed reading your post. And yes, I too agree with your sentiments (what a surprise! :) ).&lt;/p&gt;</description>
      <pubDate>Wed, 05 Sep 2007 19:38:19 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:001b883f-5746-4a0e-95cc-c165ee4c0a75</guid>
      <link>http://blog.objectmentor.com/articles/2007/09/05/hate-is-good#comment-745</link>
    </item>
    <item>
      <title>"Hate is good" by timbo in limbo</title>
      <description>I&amp;#8217;ve hear this theory before and I&amp;#8217;m still skeptical.  I know I don&amp;#8217;t like working with pushy, intollerant people who get things done (for them) at the price of making others work inefficiently.
&lt;p&gt;
Of course, any professional worth is salt dislikes inefficiency, stupidity, laziness, etc.  
&lt;p&gt;
Passion for doing things well is not quite the same as a hate for doing things badly.  Hate is a negative emotion, not constructive.  The road to effectiveness is through finding the things you do well and doing them, not wasting your time hating someone else.&lt;/p&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 05 Sep 2007 17:37:30 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:76063be2-afb1-457e-b241-345c8a0056f1</guid>
      <link>http://blog.objectmentor.com/articles/2007/09/05/hate-is-good#comment-744</link>
    </item>
    <item>
      <title>"Hate is good" by Erik</title>
      <description>&lt;p&gt;I&amp;#8217;m in total agreement with you.&lt;/p&gt;


	&lt;p&gt;I don&amp;#8217;t know whether I&amp;#8217;m a great developer (this is relative to the environment you work in anyway) but I certainly miss the will to make things better, to learn more in far too many of my colleagues &amp;#8211; and as nice as they may be as persons, it&amp;#8217;s sometimes hard for me to respect them as developers :-(.&lt;/p&gt;


	&lt;p&gt;But maybe that&amp;#8217;s simply the difference between a passionate developer (or whatever job you have) and one who only sees it as a job.&lt;/p&gt;</description>
      <pubDate>Wed, 05 Sep 2007 11:48:11 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:f1ed77dd-e0a7-417e-aaca-9ae7957e6b30</guid>
      <link>http://blog.objectmentor.com/articles/2007/09/05/hate-is-good#comment-742</link>
    </item>
  </channel>
</rss>
