<?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>Endlessly Curious &#187; productivity</title>
	<atom:link href="http://www.endlesslycurious.com/tag/productivity/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.endlesslycurious.com</link>
	<description>Programming, Productivity &#38; Software Development.</description>
	<lastBuildDate>Mon, 09 Jan 2012 09:00:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Window Managment on Large Monitors</title>
		<link>http://www.endlesslycurious.com/2009/06/22/window-managment-on-large-monitors/</link>
		<comments>http://www.endlesslycurious.com/2009/06/22/window-managment-on-large-monitors/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 09:00:14 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.endlesslycurious.com/?p=1286</guid>
		<description><![CDATA[I have had a 24&#8243; monitor at work for a while and recently bought myself a 24&#8243; for use as a second monitor on my 17&#8243; iMac at home.  I really enjoy the extra screen real estate that a large monitor with a resolution of 1920&#215;1200 provides.  However most applications don&#8217;t really make good use [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-1304" title="WinSplit Revolution" src="http://www.endlesslycurious.com/wp-content/uploads/2009/06/WinSplitRev.png" alt="WinSplit Revolution" width="179" height="141" />I have had a 24&#8243; monitor at work for a while and recently bought myself a 24&#8243; for use as a second monitor on my 17&#8243; iMac at home.  I really enjoy the extra screen real estate that a large monitor with a resolution of 1920&#215;1200 provides.  However most applications don&#8217;t really make good use of the massive screen real estate of a large LCD monitor e.g. web browsers viewing fixed width webpages. This leaves you with the problem of how to maximise your usage of your screen real estate, if a single application using the whole display is sub-optimal then viewing two or more applications can be more useful.</p>
<p>The simplest solution to this is to manually position and size the windows of your applications so you can view two or more at once.  Arranging application windows manually quickly becomes tedious, due to the many events that can occur in a modern operating system which cause your application windows to be moved around, re-sized or moved to another monitor.</p>
<p><img class="size-full wp-image-1287 alignleft" title="Size Up Animation" src="http://www.endlesslycurious.com/wp-content/uploads/2009/06/sizeupanimation.gif" alt="Size Up Animation (Max OS X)" width="240" height="180" /></p>
<p>The solution to this problem is using Window Management utilities which allow you to easily re-size and move application windows around, typically using key combinations.  These utilities exist for most operating systems for Mac OS X the window management utility is called <a title="Irradiated Software" href="http://www.irradiatedsoftware.com/sizeup/">SizeUp</a>, the equivalent utility for the PC is called <a title="Winsplit Revolution" href="http://www.winsplit-revolution.com/">WinSplit Revolution</a>.  I use both of these applications daily, WinSplit is freeware but SizeUp costs a minimum of $4.99 and its worth every cent.  Each utility has some unique features: WinSplit allows you to chain several window configurations on a single key combination and SizeUp allows you to set up a key combination for moving windows between monitors.</p>
<p>I would struggle to maximise my use of one or more large monitors without a Window Management utility.  Hopefully one day this functionality will be built into operating systems as large monitors become more common.  Until then Window Managment utilties are going to be an essential tool that ever serious power user needs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.endlesslycurious.com/2009/06/22/window-managment-on-large-monitors/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Effective Work Breaks</title>
		<link>http://www.endlesslycurious.com/2009/02/04/effective-work-breaks/</link>
		<comments>http://www.endlesslycurious.com/2009/02/04/effective-work-breaks/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 09:00:25 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Dogs]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[productivity]]></category>

		<guid isPermaLink="false">http://www.endlesslycurious.com/?p=1028</guid>
		<description><![CDATA[I have made an interesting discovery since I started taking our new puppies to work with me: I actually seem to be more productive now than I was before I started taking the puppies to work!  The pups generally need to be taken outside to relieve themselves and run off some energy every hour or [...]]]></description>
			<content:encoded><![CDATA[<p>I have made an interesting discovery since I started taking our new <a href="http://www.endlesslycurious.com/2009/01/26/alternative-linkage/">puppies</a> to work with me: I actually seem to be more productive now than I was before I started taking the puppies to work!  The pups generally need to be taken outside to relieve themselves and run off some energy every hour or so for about ten minutes.  These puppy induced breaks are fairly practicable and not skippable unless the pups are asleep at which point I think it is better to let sleeping dogs lie.</p>
<p>Previously I had been using programs like <a href="http://www.workrave.org/welcome/">Work Rave</a> and <a href="http://tech.inhelsinki.nl/antirsi/">Anti-RSI</a> to make sure I&#8217;m taking sufficient work breaks, mostly to keep me sane and free of RSI like injuries (I still recommend these programs).  I confess I am guilty of skipping breaks suggested by these applications fairly frequently, which perhaps is not a smart thing to do as it increases the likelihood of fatigue, injury and lowered productivity.  I had thought this system to be effective but I&#8217;m finding puppy breaks even more effective: possibly due to the lack of a skip option.  As puppies with full bladders cannot miss a break without risking an accident!</p>
<p>I think perhaps this lack of a skip option to puppy induced breaks is giving me more of a sense of having to make the most of the time between the breaks, this is helping me focus which results in increased productivity (which is not what I would have expected).  This is a most welcome and unexpected side effect to having the puppies at work with me: aside from the obvious benefits of canine companionship and having a very good excuse to go for a walk at lunch time!</p>
<p>I have found over the years that any sort of regular break gives me a chance to pause and reflect about my current task and that is very useful for considering options and possible solutions to problems.  The end result is that stopping to reflect about what I am currently doing regularly results in a superior end product than just hammering away at a task.</p>
<p>Do you have regular breaks and do they help or hinder your productivity?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.endlesslycurious.com/2009/02/04/effective-work-breaks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fail fast, fail cheap!</title>
		<link>http://www.endlesslycurious.com/2008/11/27/fail-fast-fail-cheap/</link>
		<comments>http://www.endlesslycurious.com/2008/11/27/fail-fast-fail-cheap/#comments</comments>
		<pubDate>Thu, 27 Nov 2008 09:00:18 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[productivity]]></category>

		<guid isPermaLink="false">http://www.endlesslycurious.com/?p=852</guid>
		<description><![CDATA[I was explaining this to some junior programmers the other day and it&#8217;s worth repeating.  Failure is fine in software engineering, in fact it is expected: I get nervous if something works first time these days as I know my limits and expect to make mistakes.  However I think that new programmers don&#8217;t always realise [...]]]></description>
			<content:encoded><![CDATA[<p>I was explaining this to some junior programmers the other day and it&#8217;s worth repeating.  Failure is fine in software engineering, in fact it is <em>expected</em>: I get nervous if something works first time these days as I know my limits and expect to make mistakes.  However I think that new programmers don&#8217;t always realise that failure is acceptable and in some cases failure is <em>preferred</em>, this is especially true during research and development tasks.  Consider the following diagram representing three programmers A, B and C working on a task over a period of time, each arrow represents one attempt at a solution.</p>
<p><img class="aligncenter size-full wp-image-853" title="Fail Fast" src="http://www.endlesslycurious.com/wp-content/uploads/2008/11/failfast.jpg" alt="" width="480" height="176" /></p>
<p>Assume the task that has been set is complex and contains some degree of uncertainty which means that the first few attempts will probably fail.  Which programmer would you want working on the task?  If the task is actually impossible then programmer A will be the cheapest from a business standpoint as they fail earliest followed by programmer B and finally programmer C.  Also, programmer A will have five attempts at a solution compared to programmer B&#8217;s two and a half attempts and programmer C&#8217;s single attempt.  As iteration leads to improved quality (<a href="http://www.codinghorror.com/blog/archives/000788.html">Boyd&#8217;s Law</a>) this means that programmer A is also likely to hit on a more superior solution than programmer B or programmer C in the same time period.</p>
<p>The interesting thing here is that in my experience new programmers tend to work like programmer C: they will attempt a single solution working diligently to overcome any hurdles they encounter, no matter how severe the hurdle.  This sounds harmless but remember that few things are impossible in programming, so the more a programmer hammers away at a problem the more likely they are to fudge a solution and that solution (in my experience) is not often of a high quality.  The counter point to this is that more productive programmers will rapidly discard attempts early in each attempt when it becomes clear that the solution though possible is not actually <em>desirable</em> e.g. the dog is hungry and solutions include: A) feed the dog B) kill the dog.</p>
<p>This can also be observed by monitoring how long a programmer will remain stuck for before asking for assistance.  The most productive programmers will get help within minutes of becoming completly stuck.  However the least productive (and often least experienced) programmers will often struggle with the problem for days before actually asking for assistance and this delay is expensive in terms of money, deadlines and product quality.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.endlesslycurious.com/2008/11/27/fail-fast-fail-cheap/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Getting work done: the empty office effect.</title>
		<link>http://www.endlesslycurious.com/2008/11/19/getting-work-done-the-empty-office-effect/</link>
		<comments>http://www.endlesslycurious.com/2008/11/19/getting-work-done-the-empty-office-effect/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 09:00:18 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[productivity]]></category>

		<guid isPermaLink="false">http://www.endlesslycurious.com/?p=790</guid>
		<description><![CDATA[You may have noticed the lack of updates this week, I was in the office all weekend implementing something for a customer, so that they could then evaluate it this week which they were not expecting.  I do not mind doing the occasional brief bit of overtime like this, especially when it is my idea.  [...]]]></description>
			<content:encoded><![CDATA[<p>You may have noticed the lack of updates this week, I was in the office all weekend implementing something for a customer, so that they could then evaluate it this week which they were not expecting.  I do not mind doing the occasional brief bit of overtime like this, especially when it is my idea.  And it also gets me ahead of schedule plus it allows me to surprise my customers with an early delivery!  It did however mean that I did not have time to write posts, for that I apologise!</p>
<p>Working this last weekend and observing the results (on our scrum&#8217;s burn down chart) did get me thinking about just how much more productive I can be over the course of a day at the weekend compared to a normal weekday: I believe I did 3-4 weekdays of work over two days this weekend.  Yet I did not work any more hours than I would during the week but I achieved more in terms on implementation and testing than I would normally expect.  I also experienced that familiar loss of a sense of time (losing track of hours while working) which I&#8217;ve come to associate with really productive periods of work: some people call it &#8216;the zone&#8217; which sounds a bit too dramatic (and cheesy) to me.</p>
<p>As to the causes for this bout of hyper productivity I think part of it was that I went into the weekend knowing exactly what I wanted to get done in terms of goals and also having a fair idea of how to achieve those goals.   I believe that helped me a lot, as a large portion of development time can be swallowed up with experimentation, thinking and research.  So knowing what needed done helped me focus my efforts but I don&#8217;t believe it was the sole reason for the apparent (brief) doubling of my productivity over the weekend.</p>
<p>Perhaps another beneficial factor was the lack of people in the building over the weekend (sorry folks).  The area where I work was very very quite this weekend, I was alone for most of the time with only one co-worker popping in and out for a few hours.  This meant there was no external distractions like background conversations, people (or dogs) moving about or folk asking me questions to distract me from my task at hand.   The building being mostly empty also meant there was no external electronic distractions e.g, email or instant messaging icons competing for my attention.</p>
<p>The lack of meetings was also great as this meant I had large unbroken periods of time to work in rather than an hour or so between meetings, as most experiments have shown that when you are in &#8216;the zone&#8217; any disruption costs you about 15-20 minutes of time before you can get back to your &#8216;zone&#8217; or train of thought.  As I have mentioned before in <a href="http://www.endlesslycurious.com/2008/09/25/work-blocks-in-action/">previous</a> <a href="http://www.endlesslycurious.com/2008/09/22/flow-vs-distractions/">posts</a> I make a practice of booking myself in my office calender system for meetings that I call work blocks during the week.  These blocks are usually about half a day in size and help prevent my day from getting horribly fragmented by meetings.  Working this weekend has just reinforced to me just how disruptive meetings can be to actually getting work done and how important it is to have uninterrupted periods of time for getting work done in.</p>
<p>Yet for all that an empty office helped me get stuff done this weekend, I would I be as productive over the long term working in such a solo fashion?  I&#8217;m not sure as these days software like games are suck large undertaking and require large teams of developers which means that communication and synchronisation becomes such key factors in development sucess but also key <a href="http://www.endlesslycurious.com/2008/09/23/effectiveness-vs-communication-load/">bottlenecks</a> as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.endlesslycurious.com/2008/11/19/getting-work-done-the-empty-office-effect/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Reflection for improved performance</title>
		<link>http://www.endlesslycurious.com/2008/09/29/reflection-for-improved-performance/</link>
		<comments>http://www.endlesslycurious.com/2008/09/29/reflection-for-improved-performance/#comments</comments>
		<pubDate>Mon, 29 Sep 2008 09:00:29 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Reflection]]></category>

		<guid isPermaLink="false">http://www.endlesslycurious.com/?p=324</guid>
		<description><![CDATA[Regularly taking time to pause and then review and reflect on how you could improve, and then experimenting based on those thoughts is key to personal improvement and increasing productivity.   This technique has really been highlighted to me since starting to use Agile development methodologies like Scrum where at at the end of each [...]]]></description>
			<content:encoded><![CDATA[<p>Regularly taking time to pause and then review and reflect on how you could improve, and then experimenting based on those thoughts is key to personal improvement and increasing productivity.   This technique has really been highlighted to me since starting to use <a href="http://en.wikipedia.org/wiki/Agile_development">Agile</a> development methodologies like <a href="http://en.wikipedia.org/wiki/Scrum_(development)">Scrum</a> where at at the end of each sprint (short iteration period) a <a href="http://en.wikipedia.org/wiki/Retrospective#Software_engineering">retrospective meeting</a> is held.  These meetings allow those working on the sprint to pause, review and reflect on their performance during that sprint and to discuss how performance could be improved.  The regular retrospective meeting is in my mind one of the most important innovations introduced by Scrum and Agile, as otherwise retrospective activities were limited to once per development cycle after shipping the product.</p>
<p>I think that those short development iterations and regular reflection sessions at the end of each iteration  introduced by Agile/Scrum are perhaps the two components of these methodologies that help drive process improvement the most, but they are perhaps also the easiest to overlook.  It would seem that the natural inclination for most workers (especially when stressed) is to not stop and think about <em>how</em> they are working, which means they do not truly understand their work flow and this limits their ability to improve their performance.</p>
<p>Some of the most productive individuals I&#8217;ve met, or have heard about, are those that regularly take the time to pause and think about <em>how</em> they are working not just about <em>what</em> they are working on and then experiment to improve.  This habit goes against the instinctual urge most of us seem to have when &#8216;busy&#8217; which is to not stop to think about the <em>how</em> as we think we don&#8217;t have the time to spare.  This is a huge misconception, as taking time to pause and think about <em>how</em> we are doing things and <em>how</em> we can improve can yield large gains in terms of increasing productivity and reducing frustration.</p>
<p>Another overlooked aspect of reflection is that it can make a mundane repetitive task more interesting and stimulating by turning it into a personal challenge: can you tune your work flow and improve your performance on a set task?  For example, habit can even be applied to repetitive manual tasks like mowing the lawn: can I mow the loan in a shorter period, where can I save time or remove repetition?</p>
<p>In summary, pausing and reflecting during your working day and then experimenting to improve can help drive a habit of efficiency which will increase your productivity and potentially improve the development process for your whole team, and this is what all development efforts need to suceed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.endlesslycurious.com/2008/09/29/reflection-for-improved-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Personal Oragisation</title>
		<link>http://www.endlesslycurious.com/2008/09/24/personal-oragisation/</link>
		<comments>http://www.endlesslycurious.com/2008/09/24/personal-oragisation/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 09:00:07 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Oragisation]]></category>
		<category><![CDATA[productivity]]></category>

		<guid isPermaLink="false">http://www.endlesslycurious.com/?p=228</guid>
		<description><![CDATA[Since starting work at my current workplace, which has almost two thousand employees in the same building, I&#8217;ve found myself in more meetings that I am used to.  This is due to being in a central technology team in a large studio with many teams we need to communicate with via meetings.  This, combined with [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-227 alignright" title="Palm Z22" src="http://www.endlesslycurious.com/wp-content/uploads/2008/09/palmz22.gif" alt="" width="116" height="194" />Since starting work at my current workplace, which has almost two thousand employees in the same building, I&#8217;ve found myself in more meetings that I am used to.  This is due to being in a central technology team in a large studio with many teams we need to communicate with via meetings.  This, combined with a large corporate directory for the studio which means more telephone numbers than I can easily memorize and a desire to be able to create tasks and notes for myself in meetings or on the go, has lead me to recommission my trusty old <a href="http://www.palm.com/us/products/handhelds/z22/">Palm Z22</a> Personal Digital Assistant (PDA).  I used to be a die hard PDA user starting with a <a href="http://en.wikipedia.org/wiki/Palm_Vx">Palm Vx</a> then a <a href="http://en.wikipedia.org/wiki/Palm_Zire">Palm Zire</a>, then a <a href="http://en.wikipedia.org/wiki/Palm_Zire">Palm Zire 21</a> and finally onto my current Z22.  I&#8217;ve always loved Palm&#8217;s <a href="http://www.palm.com/us/software/desktop/">Palm Desktop</a> software but when I moved to using an Apple iMac at home I found the Palm Desktop port to be a poor port, to such an extent that I actually stopped using it for the last few years.</p>
<p>Since my responsibilities have increased at work and I find myself in more meetings with more potential to forget when my next meeting is if I&#8217;m not at my desk, I&#8217;ve brought my trusty Z22 out of retirement.  Fortunately as the Z22 has no email client getting IT approval to use it was simple.  I don&#8217;t think I&#8217;d want a mobile email device for my work email like a blackberry, Palm Treo or Apple iPhone as it would be far too distracting for me I think.  I&#8217;ve also made the switch to syncing my Z22 to <a href="http://office.microsoft.com/en-us/outlook/default.aspx">Outlook 2007</a> instead of Palm Desktop, which is taking a bit of getting used to as Outlook&#8217;s Tasks and Notes features are not as powerful as Palm Desktops.</p>
<p>My favorite features of PDAs are:</p>
<ul>
<li><strong>Calendar: </strong>It is incredibly useful to be able to sync the calender on my workstation at work with my PDA so I can review my schedule at any time and anywhere.</li>
<li><strong>To-do lists</strong>: creating, managing, sorting and completing tasks is very satisfying not to mention useful, especially as task management software has gotten smarter to allow recurring tasks, notes and alarms on tasks.</li>
<li><strong>Digital Notes:</strong> have always been a favorite of mine, even during periods when I&#8217;m not using an electronic PDA chances are I have at least one or more <a href="http://www.moleskineus.com/">Moleskin</a> notebooks on the go, to keep information in.</li>
<li><strong>Contacts: </strong>I previously did not need to use the contacts facility much but since I&#8217;ve started working in a larger studio and needing to keep more peoples telephone number, email and office location close to hand I am starting to use the contacts facility more and more.</li>
<li><strong>Security:</strong> Old school Moleskin notebooks are great but unless you memorise equally old school encryption techniques to protect the data in them you become limited in terms of what you can store in them, as without encryption they are effectively public.  Thankfully PDA&#8217;s provide various options in password protecting your device, locking the device either on a timer or schedule, preventing anyone from syncing with the device and the option to encrypt the memory of the PDA.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.endlesslycurious.com/2008/09/24/personal-oragisation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Becoming unstuck</title>
		<link>http://www.endlesslycurious.com/2008/09/10/becoming-unstuck/</link>
		<comments>http://www.endlesslycurious.com/2008/09/10/becoming-unstuck/#comments</comments>
		<pubDate>Wed, 10 Sep 2008 09:00:08 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[productivity]]></category>

		<guid isPermaLink="false">http://www.endlesslycurious.com/?p=150</guid>
		<description><![CDATA[In my previous post I talked about being bored and dealing with that, now its time to talk about being stuck and how to deal with it effectively.  For me there is a few flavors of being stuck: The brick wall: you&#8217;re working fine and then suddenly you&#8217;re stuck and you&#8217;ve no idea how to [...]]]></description>
			<content:encoded><![CDATA[<p>In my previous <a href="http://www.endlesslycurious.com/2008/09/08/combating-boredomcombating-boredom/">post</a> I talked about being bored and dealing with that, now its time to talk about being stuck and how to deal with it effectively.  For me there is a few flavors of being stuck:</p>
<ul>
<li><strong>The brick wall:</strong> you&#8217;re working fine and then suddenly you&#8217;re stuck and you&#8217;ve no idea how to continue.</li>
<li><strong>Recursively stuck:</strong> this one is hard to spot. You&#8217;re trying solutions to something but each attempt takes so long to work through that by the time you&#8217;ve tried it you&#8217;ve forgot what started that attempt, you then try the first thing that comes to mind which often is the last thing you tried, repeat until you notice&#8230;</li>
<li><strong>Too many options: </strong>something that appeared straight forward on closer examination has multiple potential solutions and you&#8217;re not sure which.</li>
</ul>
<p>My approach to becoming unstuck is as follows:</p>
<ul>
<li><strong>Take Notes: </strong>As soon as I realise I&#8217;m stuck I start taking notes: what I think I know, what I suspect, what I&#8217;ve tried and what I want to happen.  Doing this helps me prevent myself getting bogged down by attempting the same solution repeatedly. Also by recording what you think and what you&#8217;ve tried you give yourself an agenda of potential solutions to work through as you attempt to solve the problem, as once you&#8217;ve ruled everything on your list out what you are left with is usually the issue, although at times that may seem ridiculous!</li>
<li><strong>Ask Google: </strong>There are very very few new problems in the world that haven&#8217;t already been encountered by someone else and chances are there is something Google can find for you that may give you the pearl of insight you need to solve your issue.</li>
<li><strong>Ask the community:</strong> Chances are unless there is some sort of general community for the language and/or technologies you are dealing with, which you can ask via email, forums or IRC about your issue.  A lot of the time Google will give you results from these communities if their archives are somewhere the Google spiders can reach.</li>
<li><strong>The cardboard programmer: </strong>This solution sounds silly but it works, find anyone (they don&#8217;t need to be technical at all) and then step through your problem with them talking over the source code. A lot of the time you will realise your error mid way through your explanation!</li>
<li><strong>Ask an experienced co-worker: </strong>Find a more experienced co-worker and ask them about your problem in an intelligent fashion e.g, giving details on the issue and what you&#8217;ve tried.</li>
</ul>
<p>My golden rule for becoming unstuck is:</p>
<ul>
<li><strong>Never be stuck for long! </strong>I can&#8217;t emphasise this enough, this is an industry where programmer productivity is the number one priority, not solving the issue yourself.  If you&#8217;re totally stuck don&#8217;t sit for more than an hour (ideally half an hour or less) before you start involving more experienced people in finding a solution.  Don&#8217;t believe me?  Watch the most productive programmers around you, I would put money on them never sitting for long if they are stuck before they start asking for help, it is <em>not a weakness, </em>it is simply <em>more</em> <em>efficient</em>!</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.endlesslycurious.com/2008/09/10/becoming-unstuck/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Combating boredom</title>
		<link>http://www.endlesslycurious.com/2008/09/08/combating-boredom/</link>
		<comments>http://www.endlesslycurious.com/2008/09/08/combating-boredom/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 09:00:34 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.endlesslycurious.com/?p=109</guid>
		<description><![CDATA[We&#8217;ve all been there, working away trying to solve some an implementation issue or design detail and suddenly realise we&#8217;ve been browsing the web or the building, chatting with co-workers for no reason, surfing the email inbox, going for over-long breaks or otherwise avoiding the task at hand. The most likely diagnosis?  You are either [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve all been there, working away trying to solve some an implementation issue or design detail and suddenly realise we&#8217;ve been browsing the web or the building, chatting with co-workers for no reason, surfing the email inbox, going for over-long breaks or otherwise avoiding the task at hand. The most likely diagnosis?  You are either stuck or bored, today we are going to look at dealing with being bored.</p>
<p>Boredom is common, especially during tedious tasks that involve repetitive tasks.  The solution to this is automation, either with tools or a scripting language. A good software engineer should be lazy and by this I don&#8217;t mean they should do no work, I mean they should not do the same task more than twice in recent succession before they start looking for a way to automate the task so they don&#8217;t have to do it again manually because its just plain boring:</p>
<ul>
<li><strong>Doing lots of copy and pasting? </strong><br />
Chances are you are either copying the same code snippet around, if so that is screaming out to be factored into a separate function: copy and paste duplication of code is <em>evil</em>, especially if you don&#8217;t fully understand the snippet you are moving around. Are you sure it is safe to put <em>that</em> snippet there in <em>that</em> method?  Or have you just renamed something and are now searching for and replacing each instance with the new name? Don&#8217;t do this manually!  Invest in some refactoring tools. Most good editors and IDEs now come with some form of refactoring tool sets built in, find them, learn them, <em>love</em> them they will save you tons of time!</li>
<li><strong>Calling a n step pipeline of tools manually?<br />
</strong>Invest some time in learning a scripting language like Python, shell script, php or Perl (my favorite is Python): n step tool pipelines are the tedious problems that scripting languages were designed to solve by automating them into a single script call.  Scripting a pipeline becomes an investment especially if this pipeline is being run a lot by many users, think of all the time you are saving all those users and the removal of operator error by taking the time to automate it.</li>
<li><strong>Waiting on an external dependency?</strong><br />
Are you waiting on something from someone else that is blocking you?  First off: do they know they are blocking you?  It may not have been communicated to them, don&#8217;t assume they know: check.  If they know but they can&#8217;t give you their deliverable yet, is there anything you can do to help them or to prepare for the coming integration (e.g, refactoring)?  If all else fails, do you have any other task you can do while you wait?  Maybe something you&#8217;ve been meaning to do but didn&#8217;t have the time?  Still nothing?  Find your lead or manager, there will be something else for you to do while you wait, if there isn&#8217;t I&#8217;d be worried!</li>
<li><strong>Waiting for bugs and in code base lock down?</strong><br />
So you&#8217;re near the end of development in your current cycle, most of the bugs have been found and fixed, your code base has been locked down and you&#8217;re not allowed to change anything except for bug fixes?  You have several options here still, the most immediately useful is to see if anyone else has a bug they could give you to keep you going.  Then if there is no spare bugs start testing your application yourself, be pro active, find bugs, torture your areas or responsibility to make sure they work.  Bored of that now eh?  If you&#8217;re near the end of a development cycle chances are there is going to be a sequel: start your own mini postmortem of the project, think about what went well, what didn&#8217;t and what you would do differently next time.</li>
</ul>
<p>Next we will look at being stuck&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.endlesslycurious.com/2008/09/08/combating-boredom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

