<?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>The Daily Build &#187; timelog</title>
	<atom:link href="http://blog.bstpierre.org/category/timelog/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.bstpierre.org</link>
	<description>Software Development, version 3.0</description>
	<lastBuildDate>Fri, 03 Feb 2012 02:59:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Seeking Timelog Beta Testers</title>
		<link>http://blog.bstpierre.org/seeking-timelog-beta-testers</link>
		<comments>http://blog.bstpierre.org/seeking-timelog-beta-testers#comments</comments>
		<pubDate>Tue, 27 Jan 2009 19:09:57 +0000</pubDate>
		<dc:creator>Brian St. Pierre</dc:creator>
				<category><![CDATA[timelog]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.bstpierre.org/?p=101</guid>
		<description><![CDATA[Nutria is an online timelog. I&#8217;m hoping to start a live beta this week, initially light on features but with more to follow. I need some beta testers to give it a spin and provide feedback. Sign up to test and you will have my undying gratitude. Thanks!]]></description>
			<content:encoded><![CDATA[<p><a href="http://nutriaproject.com/">Nutria is an online timelog.</a> I&#8217;m hoping to start a live beta this week, initially light on features but with more to follow. I need some beta testers to give it a spin and provide feedback. <a href="http://nutriaproject.com/">Sign up to test</a> and you will have my undying gratitude. Thanks!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bstpierre.org/seeking-timelog-beta-testers/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Today&#8217;s Time Log Is Tomorrow&#8217;s Historical Data</title>
		<link>http://blog.bstpierre.org/todays-time-log</link>
		<comments>http://blog.bstpierre.org/todays-time-log#comments</comments>
		<pubDate>Tue, 20 Jan 2009 13:16:29 +0000</pubDate>
		<dc:creator>Brian St. Pierre</dc:creator>
				<category><![CDATA[timelog]]></category>
		<category><![CDATA[estimation]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://blog.bstpierre.org/?p=93</guid>
		<description><![CDATA[The only good way to create any kind of a reliable estimate is by using (your own) historical data. If you are trying to create an estimate for a new project and are having a hard time, don&#8217;t lament your lack of historical data. The best thing you can do is to set up a [...]]]></description>
			<content:encoded><![CDATA[<p>The only good way to create any kind of a reliable estimate is by using (your own) historical data.</p>
<p>If you are trying to create an estimate for a new project and are having a hard time, don&#8217;t lament your lack of historical data. The best thing you can do is to set up a system for tracking time on your projects.  Today&#8217;s time log is tomorrow&#8217;s historical data. (When I say &#8220;you&#8221; I mean either you, singular, if you work alone or you, plural, to refer to your project team.) Do the best you can on this estimate, recognize that it&#8217;s probably a bunch of nonsense, and move forward.</p>
<p>Before you start working on the project you just (mis-)estimated, plan how you&#8217;re going to track time spent on it. This doesn&#8217;t mean you have to establish the Time Tracking Committee, hold a dozen meetings every day, and publish a seventy-page document describing how time will be tracked. Just pick a solution and spitball it past your team. Lightweight is best for a first pass, you&#8217;ll be able to get a feel for what works and what doesn&#8217;t in your situation.</p>
<p>Some things to keep in mind:</p>
<ul>
<li>You might work a nominal eight hour day, but you probably spend less than three actually working on your project. Meetings, support for previous projects, and the water cooler suck up a lot more time than you realize.</li>
<li>Some meetings are directly project-related (design review, etc) and should probably be charged to the project. Oooh, I said &#8220;charged&#8221;. Don&#8217;t get too uptight about applying all of your time to one bucket or another. Keep it lightweight and easy to implement and you&#8217;ll increase the likelihood that you&#8217;ll be able to stick with it.</li>
<li>Spreadsheets can be a convenient way to track time for individuals or small teams. If a team is going to use a spreadsheet-based solution, take a look at Google Docs and set up a shared spreadsheet.</li>
</ul>
<p>At the end of the project, you can compare the actual results to the estimate you made. Disappointing, eh? Don&#8217;t worry, you&#8217;ll get better with practice and as you build a data collection.</p>
<p>See also <a title="Software Estimation: Demystifying the Black Art" href="http://www.amazon.com/Software-Estimation-Demystifying-Practices-Microsoft/dp/0735605351/">Software Estimation: Demystifying the Black Art</a>, by Steve McConnell. This book is an excellent resource.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bstpierre.org/todays-time-log/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Time Tracking Input Mechanisms?</title>
		<link>http://blog.bstpierre.org/time-tracking-input-mechanisms</link>
		<comments>http://blog.bstpierre.org/time-tracking-input-mechanisms#comments</comments>
		<pubDate>Mon, 19 Jan 2009 20:00:18 +0000</pubDate>
		<dc:creator>Brian St. Pierre</dc:creator>
				<category><![CDATA[timelog]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://blog.bstpierre.org/?p=90</guid>
		<description><![CDATA[Do time tracking tools have a low uptake because it&#8217;s tedious to enter your activity data? What do you use to enter time / activity data into your tracking tool? If you don&#8217;t use time tracking, is there a specific reason or is it just not something you&#8217;ve considered? What if you could enter activity [...]]]></description>
			<content:encoded><![CDATA[<p>Do time tracking tools have a low uptake because it&#8217;s tedious to enter your activity data?</p>
<p>What do you use to enter time / activity data into your tracking tool?</p>
<p>If you don&#8217;t use time tracking, is there a specific reason or is it just not something you&#8217;ve considered?</p>
<p>What if you could enter activity data through twitter or similar services?</p>
<p>Lastly, how much does the ability to (selectively?) share your activity data with others on related projects affect your choice of method?</p>
<p>Thanks for your response!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bstpierre.org/time-tracking-input-mechanisms/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Project Team Blog: Our Projects Are Always Late</title>
		<link>http://blog.bstpierre.org/project-team-blog-our-projects-are-always-late</link>
		<comments>http://blog.bstpierre.org/project-team-blog-our-projects-are-always-late#comments</comments>
		<pubDate>Thu, 18 Dec 2008 14:09:00 +0000</pubDate>
		<dc:creator>Brian St. Pierre</dc:creator>
				<category><![CDATA[timelog]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://blog.bstpierre.org/?p=10</guid>
		<description><![CDATA[Saw this post over at the Project Team Blog Our Projects Are Always Late. Newshirt asks (I&#8217;m paraphrasing) &#8220;Why would this person not use a time tracking tool?&#8221; Two answers: Because it feels like an extra step. If you want to change a behavior like time tracking, you have to make it automatic. Developers and [...]]]></description>
			<content:encoded><![CDATA[<p>Saw this post over at the Project Team Blog <a href="http://www.projectteamblog.com/?p=153">Our Projects Are Always Late</a>. Newshirt asks (I&#8217;m paraphrasing) &#8220;Why would this person not use a time tracking tool?&#8221;</p>
<p>Two answers:</p>
<ol>
<li>Because it feels like an extra step. If you want to change a behavior like time tracking, you have to make it automatic. Developers and other project members are already too busy, you can&#8217;t just ask them to add another step to their daily workflow unless the benefits are immediate and obvious. The benefits of time tracking are not immediate and obvious &#8212; it takes some time (granted a small amount of time) to reap the benefits of time tracking.</li>
<li>Second, they perceive a risk. Even if the software is free (they are providing a 30 day free download), there&#8217;s the risk that you spend an hour or two (or more) downloading and fiddling with the software only to discover that it won&#8217;t work in your environment for one reason or another.</li>
</ol>
<p>To use concrete examples from my recent experience:</p>
<ol>
<li>I&#8217;m developing in Python. I&#8217;ve used <a href="http://www.logilab.org/project/pylint">Pylint</a> in the past and it has been helpful in pointing out bugs before I start testing. I <span style="font-style: italic;">want</span> to use Pylint on my current project, but I keep skipping it because it <span style="font-style: italic;">feels like an extra step</span> and I&#8217;m trying to get work done, not fiddle with extra tools. The solution is for me to integrate this tool into my workflow so that it is automatic and not an extra step. This is what I&#8217;ve done for the current iteration and I expect that it will stick.</li>
<li>I&#8217;ve recently been using more social media sites like <a href="http://twitter.com/bstpierre">twitter</a> and I read about a toolbar for Firefox from <a href="http://wapp.minggl.com/register/install">Minggl</a>. Sounded interesting and after I saw a few mentions of it I decided to give it a whirl. There should be a warning: &#8220;roadblocks ahead&#8221;.
<ol>
<li>They make you register to download.</li>
<li>The registration form does not allow periods or spaces in your last name, so it took a couple of tries to register. (This smacks of ethnocentrism! I am being oppressed because I have a period <span style="font-style: italic;">and</span> a space in my last name!)</li>
<li>It doesn&#8217;t work on linux&#8230; bummer.</li>
</ol>
<p>Contrast this with the experience of signing up for something like <a href="http://twitter.com/">twitter</a> or <a href="http://www.mahalo.com/answers">Mahalo Answers</a>. You sign up (albeit with the gotcha of only allowing alphabetics in the name) and you start using it immediately.
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.bstpierre.org/project-team-blog-our-projects-are-always-late/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Five Reasons to Slow Down</title>
		<link>http://blog.bstpierre.org/five-reasons-to-slow-down</link>
		<comments>http://blog.bstpierre.org/five-reasons-to-slow-down#comments</comments>
		<pubDate>Mon, 15 Dec 2008 18:22:00 +0000</pubDate>
		<dc:creator>Brian St. Pierre</dc:creator>
				<category><![CDATA[process]]></category>
		<category><![CDATA[reviews]]></category>
		<category><![CDATA[timelog]]></category>

		<guid isPermaLink="false">http://blog.bstpierre.org/?p=9</guid>
		<description><![CDATA[Here are five reasons you should wait before moving on to the next phase of your software development process: Get the requirements right. It&#8217;s so often repeated that it&#8217;s almost a cliché to say that requirements errors will cost 10x or more to fix during coding or testing. But it&#8217;s true, so I can risk [...]]]></description>
			<content:encoded><![CDATA[<p>Here are five reasons you should wait before moving on to the next phase of your software development process:</p>
<ol>
<li><strong>Get the requirements right.</strong> It&#8217;s so often repeated that it&#8217;s almost a cliché to say that requirements errors will cost 10x or more to fix during coding or testing. But it&#8217;s true, so I can risk repeating it here. Spend a little more time getting the requirements right, and you&#8217;ll <em>get every second back, with interest</em> during the testing phase. The risk here is overanalysis, but if you tend to be the impatient type &#8212; jumping into design or coding with very thin requirements &#8212; then you&#8217;re unlikely to suffer paralysis.</li>
<li><strong>Get the design right.</strong> It doesn&#8217;t have to be an elaborate 500 page document. One of the best designs for a complex system that I&#8217;ve ever seen was a state machine described in a two-page document with a big matrix on the first page. Remember, a written design is a <em>communication tool</em>. Just like the rest of your software, it can be <a href="http://c2.com/xp/DoTheSimplestThingThatCouldPossiblyWork.html">the simplest thing that will work</a>. Marker on a whiteboard works, if your team decides that is an effective way to communicate. An extra hour spent preparing and reviewing the design will save at least two hours in testing. Really. I&#8217;ve seen too many designs that were rushed (and clearly broken upon review) because of an unexplainable urgent desire to get a document into review so that coding can begin. The state machine I just mentioned went through probably 20 man-hours of reviews in maybe three passes, and we must have found at least 50 defects in it. Those defects took a few seconds each to fix (some may have taken a few minutes), but if there had been code and tests based<br />
on this broken design it would have taken hours to fix some of them.</li>
<li><strong>Get the code right.</strong> I used an Extreme Programming mantra above (&#8220;the simplest thing that will work&#8221;), but I think XP overall often leads to bad practices &#8212; primarily an overemphasis on testing. I agree that automated regression tests are a valuable tool. However, it is important to recognize that testing has limits. It takes an immense effort to achieve full branch coverage, and even this can&#8217;t be considered &#8220;complete&#8221; testing. Testing must be used in conjunction with other tools: code review and static analysis are two such tools for removing defects from code. And before you&#8217;re at the point where code is ready for review or even the compiler, take the time to consult a reference when you&#8217;re unsure how to use an API. I don&#8217;t know how many bugs I&#8217;ve fixed (including some of my own!) that were a few lines down from a <tt>/*TBD: how is this supposed to work?*/</tt> comment. Instead of putting in that comment, take the time to figure out how it is supposed to work.</li>
<li><strong>Get the tests right.</strong> Ever waste time on a bogus bug report? Testers telling you a feature is broken when they&#8217;re just doing the wrong thing? It&#8217;s not their fault if you failed to communicate how the feature is supposed to work. In the same way your test team should be insisting on some written communication from you about the feature set, you should insist on some written communication from them about what they&#8217;re going to test. Again, this &#8220;test plan&#8221; doesn&#8217;t have to conform to an ISO/IEEE standard that requires it be 1200 pages long and six inches thick. Like with the design, a whiteboard works just fine. Whatever communication method you use, if it helps head off problems then it is working. If you&#8217;re finding too many problems late in the game, then maybe you need to have something a little more formal &#8212; try posting short documents to an internal wiki.</li>
<li><strong>Are you keeping score?</strong> A <em>little</em> bit of measurement can do great things for you. I <a href="http://blog.bstpierre.org/2008/12/ten-reasons-to-use-time-tracking-tool.html">track time</a>, lines of code, and defects. I was reviewing one of my designs this morning and this data helped me decide: (a) how many defects I should expect to find in my design and (b) how long it should take me to find those defects. All because I have historical data that tells me how many defects I find per hour of design review, and how many defects I make per hour while designing. I also know how much testing time this is likely to save&#8230; so I don&#8217;t feel any particular rush to start coding from a buggy design. I&#8217;d rather get the design right first.</li>
</ol>
<p>As I mentioned above, the risk to getting into the habit of waiting is that you spend too much time analyzing the current phase and don&#8217;t just get on with it. But if you start from good requirements, it should be obvious when you&#8217;re done with design and coding. And if you&#8217;re keeping score, you&#8217;ll know how much time to devote to reviews to keep them efficient.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bstpierre.org/five-reasons-to-slow-down/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Amnesia &#8211; Joel on Software</title>
		<link>http://blog.bstpierre.org/amnesia-joel-on-software</link>
		<comments>http://blog.bstpierre.org/amnesia-joel-on-software#comments</comments>
		<pubDate>Wed, 10 Dec 2008 12:49:00 +0000</pubDate>
		<dc:creator>Brian St. Pierre</dc:creator>
				<category><![CDATA[timelog]]></category>

		<guid isPermaLink="false">http://blog.bstpierre.org/?p=7</guid>
		<description><![CDATA[Joel Spolsky also thinks that using timelog data for performance tracking is a bad idea.]]></description>
			<content:encoded><![CDATA[<p>Joel Spolsky also thinks that <a href="http://www.joelonsoftware.com/items/2008/12/10.html">using timelog data for performance tracking is a bad idea</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bstpierre.org/amnesia-joel-on-software/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eight Reasons to Use a Time Tracking Tool</title>
		<link>http://blog.bstpierre.org/eight-reasons-to-use-a-time-tracking-tool</link>
		<comments>http://blog.bstpierre.org/eight-reasons-to-use-a-time-tracking-tool#comments</comments>
		<pubDate>Mon, 08 Dec 2008 15:41:00 +0000</pubDate>
		<dc:creator>Brian St. Pierre</dc:creator>
				<category><![CDATA[timelog]]></category>

		<guid isPermaLink="false">http://blog.bstpierre.org/?p=5</guid>
		<description><![CDATA[I just finished the time tracking application for Bale. This is a tool that is key to many other practices, but is very underutilized. (I wonder if this is because so many developers are worried about Big Brother type intrusions into their working habits? See below for why Big Brother is such a bad idea. [...]]]></description>
			<content:encoded><![CDATA[<p>I just finished the time tracking application for Bale. This is a tool that is key to many other practices, but is very underutilized. (I wonder if this is because so many developers are worried about Big Brother type intrusions into their working habits? See below for why Big Brother is such a bad idea. If your employer is in this camp)</p>
<p>Here are eight reasons why you should use a time tracking tool:
<ol>
<li><b>Gather reliable data for future estimates.</b> You can&#8217;t make accurate estimates without accurate historical data. If you try to create estimates using a simple count of days spent working on a project, you&#8217;ll be way off because so much time is lost to non-project activities (like supporting the last project you were on). A time tracking tool keeps an accurate record of how many hours you <em>actually</em> spent working on the project.</li>
<p>
<li><b>Eliminate time wasters.</b> When you start tracking time, you&#8217;ll be surprised how <em>little</em> time you spend working on your current project. You can begin to pay attention to the low value activities that come up during the day. Awareness is the first step, then you can start to reduce or eliminate these time wasters so you can put more time into your bottom line.</li>
<p>
<li><b>Evaluate new practices.</b> Without good time data you have no idea if the introduction of a new practice or process step is helping or hurting. For example, say you move to performing code reviews online instead of on paper. You may have a good idea of how much money this will save in terms of ink and paper, but you have no idea whether it is actually faster. (I&#8217;ll soon have a post on why defect tracking is important too &#8212; evaluating new practices is a key benefit there too.)</li>
<p>
<li><b>Find areas for improvement.</b> When I first started tracking time I realized the vast amount of time I spent in unit testing &#8212; even worse, sometimes in system testing. I made a conscious effort to <em>slow down</em> when doing design work and it paid off. Hasty designs end up requiring a lot of rework during test. Your situation may be different, but you won&#8217;t know until you start tracking where in the lifecycle your time is consumed.</li>
<p>
<li><b>Improve reviews.</b> An effective review finds more defects <em>per hour</em> than an ineffective review. You can&#8217;t tell the difference between effective and ineffective reviews without having the time component. This is sort of a subcategory of finding areas for improvement. For example, I know that my personal design review is about 4x more effective than unit testing, and slightly more effective than my personal code review. In a team context, knowing your team&#8217;s defect removal rate during inspections is an excellent way to justify the investment in review time to upper management. This is why a team-wide time tracking tool is important.</li>
<p>
<li><b>Evaluate new tools.</b> Too often, the process of deciding whether a new tool is going to work is based on watching the salesman demonstrate the tool on the projector in a darkened room, and then some haggling by upper management. Sometimes you get a 30 day eval, but in terms of a test drive, this is really just a spin around the block to see if it &#8220;feels nice&#8221;. It&#8217;s much more useful to be able to know that a given tool actually increased productivity by 8% during the eval period. This also provides leverage during the aforementioned haggling when the vendor is claiming 77% productivity gains&#8230;</li>
<p>
<li><b>Know when to quit.</b> Ever had your manager say, &#8220;Don&#8217;t spend more than an hour on it.&#8221;? Ever blown the afternoon after hearing such a request because you just couldn&#8217;t put it down?</li>
<p>
<li><b>Improve visibility.</b> You can generate better upwards-facing status reports with a good time log. Remind your manager that the reason you missed the Friday deadline is because the VP of Engineering retasked you for all of Tuesday and Wednesday on his pet project. She can then show your status report to the VP as a reminder. (And oh, by the way, she can also show it to the VP of Marketing and CTO/Founder who&#8217;re screaming about the missed deadline. Yes, your organization is not the only dysfunctional group out there.)</li>
</ol>
<p>For all the pointy haired bosses out there, here are a few reasons to <b>not</b> use time tracking to compare employees based on productivity.</p>
<ol>
<li><b>It&#8217;s easy to game the system.</b> You can enter fake data. This will, of course, screw up estimates and make it impossible to use the data for any kind of overall improvements. Developers need every assurance that the data will not be used for evil or they will see to it that the data is worthless.</li>
<p>
<li><b>Productivity varies by task.</b> I&#8217;ve seen examples, on the same project, by the same person (me), where different tasks have enormously different productivity. Some problems are simply harder to solve. Sometimes you have to modify an existing bit of code: sometimes the existing code is easy to work with, sometimes it is a horrible mess. Sometimes you don&#8217;t even know what the problem is, and you have to do a bit of research just to figure out what needs to happen to get something to work.</li>
<p>
<li><b>People make varying contributions.</b> I&#8217;ve known people who appear to work very slowly, producing very little every week. Sometimes (&#8220;The Slacker&#8221;) they&#8217;re not actually working, instead day trading or playing solitaire. Sometimes (&#8220;The Craftsman&#8221;) they are doing very solid work; you&#8217;ll never see a bug come out of system test for these guys. Some developers (&#8220;The Enabler&#8221;) don&#8217;t do lots of work of their own, but rather spend much of their time enabling others, or perhaps interacting with marketing, support, or testers; this is valuable time spent, they are keeping your team in the loop or solving customer problems. You can&#8217;t tell the difference with a time tracking tool, the slacker will simply enter fake data, and the enabler&#8217;s contributions don&#8217;t show up on paper.</li>
</ol>
<p>If you&#8217;re trying to compare using time log data, then when lean times come you may end up firing the Enabler because the Slacker looks good. You&#8217;ll still have the Craftsman, but because he depended on the Enabler for answering questions, keeping Customer Support off his back, and keeping him in the loop about What Marketing Wants This Week, his productivity will drop dramatically.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bstpierre.org/eight-reasons-to-use-a-time-tracking-tool/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

