<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>www.hans-eric.com &#187; time-optimizing</title>
	<atom:link href="http://www.hans-eric.com/category/time-optimizing/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hans-eric.com</link>
	<description>Hans-Eric Grönlund on software development</description>
	<lastBuildDate>Thu, 29 Jul 2010 17:32:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Tools of The Effective Developer: Touch Typing</title>
		<link>http://www.hans-eric.com/2007/12/06/tools-of-the-effective-developer-touch-typing/</link>
		<comments>http://www.hans-eric.com/2007/12/06/tools-of-the-effective-developer-touch-typing/#comments</comments>
		<pubDate>Thu, 06 Dec 2007 15:27:53 +0000</pubDate>
		<dc:creator>Hans-Eric</dc:creator>
				<category><![CDATA[time-optimizing]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.hans-eric.com/2007/12/06/tools-of-the-effective-developer-touch-typing/</guid>
		<description><![CDATA[A colleague of mine thinks learning touch typing is a waste of time. He even suggests that it might be a disadvantage for a programmer to be able to type fast. While typing slowly, he reasons, one has time to reflect upon the work at hand. Well, I don&#8217;t share his point of view. I [...]]]></description>
			<content:encoded><![CDATA[<p>A colleague of mine thinks learning <a href="http://en.wikipedia.org/wiki/Touch_typing">touch typing</a> is a waste of time. He even suggests that it might be a disadvantage for a programmer to be able to type fast. While typing slowly, he reasons, one has time to reflect upon the work at hand. Well, I don&#8217;t share his point of view. I mean, should a cook not become skilled with his knives because slicing and chopping slowly gives more time to plan the next step? Of course not!</p>
<p>As a programmer, typing is what you do most, so you should spend time to become good at it. Touch typing is not only about rapid typing. It&#8217;s also about the freedom of your eyes. You can look at the screen and still be able to strike the right keys. That way you&#8217;ll discover typing errors more quickly.</p>
<p>Being able to look away and still type has another great advantage. When I get into &#8220;the zone&#8221;, my most productive state, I&#8217;d like to stay there as long as possible without interruption. If someone comes by I&#8217;m still able to continue my work thanks to touch typing. All I have to do is turn my face to the intruder and fake interest with nodding, humming and carefully placed responses like &#8220;mmm&#8217;right&#8221;, &#8220;mmm&#8217;kay&#8221; or &#8220;mmm&#8217;yes&#8221;. Try it, and I promise your productivity will skyrocket. <img src='http://www.hans-eric.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Learning touch typing has been well worth the investment for me. It took me approximately two months to become fluent, spending 20-60 minutes of practice every day. To my help I had <a href="http://typingsoft.com/stamina.htm" title="Stamina Typing Tutor">Stamina</a>, a free typing tutor software, which I gladly recommend.</p>
<p>You could, like me, <a href="http://www.microsoft.com/globaldev/tools/msklc.mspx" title=" The Microsoft Keyboard Layout Creator">create your own keyboard layout</a>. I have based mine on <a href="http://aoeu.info/?page=svorak&amp;section=dvorak" title="Svorak A5 (swedish page)">a swedish version of Dvorak</a>, with more convenient placement of special characters common to programming. I&#8217;m not sure I want to recommend creating your own layout though, at least not if you&#8217;re a Windows user. One thing I&#8217;ve had problems with is that certain IDEs have been shadowing parts of my layout, forcing me back to qwerty and my old-style typing. And, you&#8217;ll need your own layout installed, which is a problem if you&#8217;re using computers that belong to others.</p>
<p>Whether you decide to create your own layout or not, be sure to learn touch typing. You&#8217;ll be grateful you did.</p>
<p><em>Previous posts in the Tools of The Effective Developer series:</em></p>
<ol>
<li><a href="http://www.hans-eric.com/2007/08/31/tools-of-the-effective-developer-personal-logs/">Tools of The Effective Developer: Personal Logs</a></li>
<li><a href="http://www.hans-eric.com/2007/09/05/tools-of-the-effective-developer-personal-planning/">Tools of The Effective Developer: Personal Planning</a></li>
<li><a href="http://www.hans-eric.com/2007/09/25/tools-of-the-effective-developer-programming-by-intention/">Tools of The Effective Developer: Programming By Intention</a></li>
<li><a href="http://www.hans-eric.com/2007/09/27/tools-of-the-effective-developer-customer-view/">Tools of The Effective Developer: Customer View</a></li>
<li><a href="http://www.hans-eric.com/2007/10/02/tools-of-the-effective-developer-fail-fast/">Tools of The Effective Developer: Fail Fast!</a></li>
<li><a href="http://www.hans-eric.com/2007/10/29/tools-of-the-effective-developer-make-it-work-first/">Tools of The Effective Developer: Make It Work &#8211; First!</a></li>
<li><a href="http://www.hans-eric.com/2007/11/16/tools-of-the-effective-developer-whetstones/">Tools of The Effective Developer: Whetstones</a></li>
<li><a href="http://www.hans-eric.com/2007/12/03/tools-of-the-effective-developer-rule-of-three/">Tools of The Effective Developer: Rule of Three</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.hans-eric.com/2007/12/06/tools-of-the-effective-developer-touch-typing/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Quit Debugging!</title>
		<link>http://www.hans-eric.com/2007/09/17/quit-debugging/</link>
		<comments>http://www.hans-eric.com/2007/09/17/quit-debugging/#comments</comments>
		<pubDate>Mon, 17 Sep 2007 11:27:19 +0000</pubDate>
		<dc:creator>Hans-Eric</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[test-driven]]></category>
		<category><![CDATA[time-optimizing]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.hans-eric.com/2007/09/17/quit-debugging/</guid>
		<description><![CDATA[I have a confession to make: I used to be addicted to debugging. Yes, it&#8217;s true. When I got hooked &#8211; damn you Delphi &#8211; I wasn&#8217;t able to see the dark side, the demonic side of the debugger. It lured me into thinking only quick fixes, and I lost track of the big picture. [...]]]></description>
			<content:encoded><![CDATA[<p>I have a confession to make: I used to be addicted to debugging. Yes, it&#8217;s true. When I got hooked &#8211; damn you <a href="http://en.wikipedia.org/wiki/Borland_Delphi" title="Borland Delphi">Delphi</a> &#8211; I wasn&#8217;t able to see the dark side, the demonic side of the debugger. It lured me into thinking only quick fixes, and I lost track of the big picture. Heed my warning: debuggers are bad!</p>
<p>Fortunately I&#8217;m one of the lucky few who have been able to recover from this particularly addictive behavior. I&#8217;ve been clean &#8211; thank you <a href="http://en.wikipedia.org/wiki/JUnit" title="The java unit-testing framework">jUnit</a> &#8211; for almost 5 years now. And you can do it too, you can let go of the safety zone that these integrated debuggers provide, and break free just like I did.</p>
<p>The first thing to do is to realize that there is a better alternative: <a href="http://en.wikipedia.org/wiki/Test-driven_development">test-driven development</a>. To get rid of a bug, the right thing to do is not to fire up your debugger, but to write a unit-test to reveal it. If necessary, keep writing tests and go deeper and deeper into your code. Eventually the tests will tell you what is wrong, and they&#8217;ll even point out a solution for you.</p>
<p>I know that using a debugger may seem like a faster way to find and extinguish a bug, but that is just an illusion. Here are the reasons:</p>
<ol>
<li>TDD improves the design. Being forced to think testability tends to divide your code into small manageable pieces. This will make your code a bad breeding ground for bugs.</li>
<li>Tests remain useful for a long time. They become an addition to your testing harness, which helps protecting your code against future infestations. The work spent in a debugging session can never be reused.</li>
<li>Unit-testing saves time, a lot!  While this isn&#8217;t immediately obvious, the long term effects are huge. Think of it: all those debugging sessions can be run automatically at your command, whenever you want, how often you want, and in just a matter of seconds. All you have to do to achieve this is to let go of the debugger, and write relevant tests.</li>
<li>Unit-testing gives you courage. There&#8217;s nothing like a good harness to make you feel invincible. I still remember the first time I felt the real power of unit-testing. I was working on a huge legacy application and had developed a new set of functionalities, using TDD for the very first time. Several months later I realized I had to do a major rewrite. The rewrite was risky business and took me a couple of days to complete. When finished, I ran the unit-tests which all came out green! I could be confident the program worked just as before the rewrite. And the best part: I drew the conclusion out of just five seconds of testing. Boy, I still get the goose bumps.</li>
</ol>
<p>[PREACHING OFF]</p>
<p>Of course debuggers are useful tools. In certain occasions they are even invaluable. For someone who&#8217;s new to the software they provide a great way of getting to know it. The problem is that a debugger tends to make you lazy. So be sure to get rid of it as soon as you identify a testing strategy.</p>
<p>Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hans-eric.com/2007/09/17/quit-debugging/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Kill two birds with one stone</title>
		<link>http://www.hans-eric.com/2007/07/10/kill-two-birds-with-one-stone-i-am-a-very-busy-ma/</link>
		<comments>http://www.hans-eric.com/2007/07/10/kill-two-birds-with-one-stone-i-am-a-very-busy-ma/#comments</comments>
		<pubDate>Tue, 10 Jul 2007 08:29:00 +0000</pubDate>
		<dc:creator>Hans-Eric</dc:creator>
				<category><![CDATA[learning]]></category>
		<category><![CDATA[reading]]></category>
		<category><![CDATA[time-optimizing]]></category>

		<guid isPermaLink="false">http://hans-eric.com/2007/07/10/kill-two-birds-with-one-stone-i-am-a-very-busy-ma/</guid>
		<description><![CDATA[I am a very busy man. I have a full time job as a project manager and software developer. In my spare time I am an freelance journalist, writing articles for a Swedish computer magazine. On top of that I am a caring father of two lovely children. Needless to say, spare time is scarce.
Both [...]]]></description>
			<content:encoded><![CDATA[<p>I am a very busy man. I have a full time job as a project manager and software developer. In my spare time I am an freelance journalist, writing articles for a <a href="http://datormagazin.se/">Swedish computer magazine</a>. On top of that I am a caring father of two lovely children. Needless to say, spare time is scarce.</p>
<p>Both my job and my writing, as well as my wellbeing, require constant learning. The most convenient way for me to accomplish this is by reading. I love reading books. Tech-, popular science and fiction books &#8211; I devour them all.</p>
<p>The only problem is when to do it. I am always busy, either with work or with my family. But the optimizer in me has found a solution: I read while in the toilet. Tech-books are especially well suited for toilet-reading. They are usually well structured and have relatively short chapters. I tend to keep at least a couple of them lying within range.</p>
<p>Of course, I sometimes take unnecessary long time doing my needs, and sometimes my wife complains about it. But you know what they&#8217;re saying: a man&#8217;s gotta do what a man&#8217;s gotta do.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hans-eric.com/2007/07/10/kill-two-birds-with-one-stone-i-am-a-very-busy-ma/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Automating deployment</title>
		<link>http://www.hans-eric.com/2006/09/29/automating-deployment-im-a-great-believer-in-aut/</link>
		<comments>http://www.hans-eric.com/2006/09/29/automating-deployment-im-a-great-believer-in-aut/#comments</comments>
		<pubDate>Fri, 29 Sep 2006 13:16:00 +0000</pubDate>
		<dc:creator>Hans-Eric</dc:creator>
				<category><![CDATA[software development]]></category>
		<category><![CDATA[time-optimizing]]></category>

		<guid isPermaLink="false">http://hans-eric.com/2006/09/29/automating-deployment-im-a-great-believer-in-aut/</guid>
		<description><![CDATA[I&#8217;m a great believer in automating time consuming tasks. Since deploying my rails application (the Forlorn Hope movie site I told you about in my last post) has become increasingly painful I decided to automate it. Today I succeeded. It is not a simple task for someone who&#8217;s knowledge in Unix server administration is limited, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a great believer in automating time consuming tasks. Since deploying my rails application (the <a href="http://www.forlorn.se">Forlorn Hope movie site</a> I told you about in my last post) has become increasingly painful I decided to automate it. Today I succeeded. It is not a simple task for someone who&#8217;s knowledge in Unix server administration is limited, but I made it! I&#8217;m finally there.</p>
<p>The basic ingredient is <a href="http://manuals.rubyonrails.com/read/chapter/97">Capistrano</a>, a rails/rake extension designed to automate the deployment of rails applications (although not restricted to that). I may do a write up some day but for now I will just enjoy my newly won ease of deployment. You know: change a little bit here &#8211; DEPLOY! &#8211; change a little bit there &#8211; DEPLOY! Wah, I love it!</p>
<p>If you don&#8217;t want to wait for my write up there are plenty of information on the Internet to get you started. Be prepared for extensive tweaking though.</p>
<p><a href="http://help.textdrive.com/index.php?pg=kb.chapter&amp;id=71">Installing a rails application at TextDrive</a><br />
<a href="http://manuals.textdrive.com/read/book/9">Lighttpd the painless way</a><br />
<a href="http://subversion.tigris.org/">You need to install the subversion client</a><br />
<a href="http://rubynoob.com/articles/2006/09/21/how-to-deploy-your-first-rails-app-to-dreamhost-using-capistrano-in-windows">How to deploy your first rails application using Capistrano in Windows</a><br />
<a href="http://nubyonrails.com/pages/shovel">Shovel &#8211; Rails deployment with Lighttpd</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hans-eric.com/2006/09/29/automating-deployment-im-a-great-believer-in-aut/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.397 seconds -->
