Skip to content

Feed aggregator

Time Tracking on an Agile Team

Stephen Walther on ASP.NET MVC - 5 hours 39 min ago

What’s the best way to handle time-tracking on an Agile team? Your gut reaction to this question might be to resist any type of time-tracking at all. After all, one of the principles of the Agile Manifesto is “Individuals and interactions over processes and tools”.  Forcing the developers on your team to track the amount of time that they devote to completing stories or tasks might seem like useless bureaucratic red tape: an impediment to getting real work done.

I completely understand this reaction. I’ve been required to use time-tracking software in the past to account for each hour of my workday. It made me feel like Fred Flintstone punching in at the quarry mine and not like a professional.

Punching In

Why You Really Do Need Time-Tracking

There are, however, legitimate reasons to track time spent on stories even when you are a member of an Agile team.  First, if you are working with an outside client, you might need to track the number of hours spent on different stories for the purposes of billing. There might be no way to avoid time-tracking if you want to get paid.

Second, the Product Owner needs to know when the work on a story has gone over the original time estimated for the story. The Product Owner is concerned with Return On Investment. If the team has gone massively overtime on a story, then the Product Owner has a legitimate reason to halt work on the story and reconsider the story’s business value.

Finally, you might want to track how much time your team spends on different types of stories or tasks. For example, if your team is spending 75% of their time doing testing then you might need to bring in more testers. Or, if 10% of your team’s time is expended performing a software build at the end of each iteration then it is time to consider better ways of automating the build process.

Time-Tracking in SonicAgile

For these reasons, we added time-tracking as a feature to SonicAgile which is our free Agile Project Management tool. We were heavily influenced by Jeff Sutherland (one of the founders of Scrum) in the way that we implemented time-tracking (see his article http://scrum.jeffsutherland.com/2007/03/time-tracking-is-anti-scrum-what-do-you.html).

In SonicAgile, time-tracking is disabled by default. If you want to use this feature then the project owner must enable time-tracking in Project Settings.

Enable Time Tracking

You can choose to estimate using either days or hours. If you are estimating at the level of stories then it makes more sense to choose days. Otherwise, if you are estimating at the level of tasks then it makes more sense to use hours.

After you enable time-tracking then you can assign three estimates to a story:

  • Original Estimate – This is the estimate that you enter when you first create a story. You don’t change this estimate.
  • Time Spent – This is the amount of time that you have already devoted to the story. You update the time spent on each story during your daily standup meeting.
  • Time Left – This is the amount of time remaining to complete the story. Again, you update the time left during your daily standup meeting.

So when you first create a story, you enter an original estimate that becomes the time left. During each daily standup meeting, you update the time spent and time left for each story on the Kanban.

Assign time estimate

If you had perfect predicative power, then the original estimate would always be the same as the sum of the time spent and the time left. For example, if you predict that a story will take 5 days to complete then on day 3, the story should have 3 days spent and 2 days left.

Unfortunately, never in the history of mankind has anyone accurately predicted the exact amount of time that it takes to complete a story. For this reason, SonicAgile does not update the time spent and time left automatically. Each day, during the daily standup, your team should update the time spent and time left for each story.

For example, the following table shows the history of the time estimates for a story that was originally estimated to take 3 days but, eventually, takes 5 days to complete:

Day Original Estimate Time Spent Time Left Day 1 3 days 0 days 3 days Day 2 3 days 1 day 2 days Day 3 3 days 2 days 2 days Day 4 3 days 3 days 2 days Day 5 3 days 4 days 0 days

In the table above, everything goes as predicted until you reach day 3. On day 3, the team realizes that the work will require an additional two days. The situation does not improve on day 4. All of the sudden, on day 5, all of the remaining work gets done.

Real work often follows this pattern. There are long periods when nothing gets done punctuated by occasional and unpredictable bursts of progress. We designed SonicAgile to make it as easy as possible to track the time spent and time left on a story.

Detecting when a Story Goes Over the Original Estimate

Sometimes, stories take much longer than originally estimated. There’s a surprise. For example, you discover that a new software component is incompatible with existing software components. Or, you discover that you have to go through a month-long certification process to finish a story.

In those cases, the Product Owner has a legitimate reason to halt work on a story and re-evaluate the business value of the story. For example, the Product Owner discovers that a story will require weeks to implement instead of days, then the story might not be worth the expense.

SonicAgile displays a warning on both the Backlog and the Kanban when the time spent on a story goes over the original estimate. An icon of a clock is displayed.

Going overtime

Time-Tracking and Tasks

Another optional feature of SonicAgile is tasks. If you enable Tasks in Project Settings then you can break stories into one or more tasks.

You can perform time-tracking at the level of a story or at the level of a task. If you don’t break a story into tasks then you can enter the time left and time spent for the story. As soon as you break a story into tasks, then you can no longer enter the time left and time spent at the level of the story. Instead, the time left and time spent for a story is rolled up from its tasks.

On the Kanban, you can see how the time left and time spent for each task gets rolled up into each story. The progress bar for the story is rolled up from the progress bars for each task.

Kanban

The original estimate is never rolled up – even when you break a story into tasks. A story’s original estimate is entered separately from the original estimates of each of the story’s tasks.

Summary

Not every Agile team can avoid time-tracking. You might be forced to track time to get paid, to detect when you are spending too much time on a particular story, or to track the amount of time that you are devoting to different types of tasks.

We designed time-tracking in SonicAgile to require the least amount of work to track the information that you need. Time-tracking is an optional feature. If you enable time-tracking then you can track the original estimate, time left, and time spent for each story and task.

You can use time-tracking with SonicAgile for free. Register at http://SonicAgile.com.

Categories: Blogs

Get List of Columns in SharePoint 2013 Online Using REST API

C-Sharpcorner - Latest Articles - Sun, 04/20/2014 - 13:37
In this article you will see how to get all the columns for a specific list using the REST API in SharePoint 2013 Online.
Categories: Communities

Get All Site Columns in SharePoint 2013 Online Using REST API

C-Sharpcorner - Latest Articles - Sun, 04/20/2014 - 13:19
In this article you will see how to get all the site columns using the REST API in SharePoint 2013 Online.
Categories: Communities

Navigation of Pages in Windows Store App

C-Sharpcorner - Latest Articles - Sun, 04/20/2014 - 13:00
This article explains navigation in Windows Store Apps using C#.
Categories: Communities

Application Bar in Windows 8

C-Sharpcorner - Latest Articles - Sun, 04/20/2014 - 12:46
Tthis article explains Application Bars in Windows 8.
Categories: Communities

Get All Site Content Types in SharePoint 2013 Online Using REST API

C-Sharpcorner - Latest Articles - Sun, 04/20/2014 - 12:21
This article shows how to get all the site content types using the REST API in SharePoint 2013 Online.
Categories: Communities

Paging and Sorting in ASP.NET GridView

C-Sharpcorner - Latest Articles - Sun, 04/20/2014 - 10:17
In this article I will tell you about Paging and Sorting in an ASP.NET GridView.
Categories: Communities

Restrict Specific File Types From Being Uploaded in SharePoint

C-Sharpcorner - Latest Articles - Sun, 04/20/2014 - 09:58
In this article I will tell you how to restrict specific file types from being uploaded in SharePoint.
Categories: Communities

How to Get All the Lists in SharePoint 2013 Online Using REST API

C-Sharpcorner - Latest Articles - Sun, 04/20/2014 - 09:47
In this article you will see how to get all the lists using the REST API in SharePoint 2013 Online.
Categories: Communities

Exception Propagation in Java

C-Sharpcorner - Latest Articles - Sun, 04/20/2014 - 08:59
In this article we will explain the propagation of the exceptions following some basic examples for good learning.
Categories: Communities

Introduction to MongoDB Indexing

C-Sharpcorner - Latest Articles - Sat, 04/19/2014 - 20:06
This article explains how to use an index to speed up our queries with a practical example.
Categories: Communities

Database Values in Textbox For Combobox Selection in Windows Forms

C-Sharpcorner - Latest Articles - Sat, 04/19/2014 - 09:35
Here I will explain how to create a combobox such that when a name is selected from the combobox then all the details are shown in respective textboxes.
Categories: Communities

Link ComboBox With Database in Window Form

C-Sharpcorner - Latest Articles - Sat, 04/19/2014 - 09:32
Here I will explain how to Link a combobox with a database. Before this I explain how to use a combobox.
Categories: Communities

//build/ –> //learn/-> //publish/ -> //your free new training sessions/

Building Apps for Windows - //build/ –> //learn/-> //publish/: new resources to help you publish your universal Windows apps

You’ve heard announcements at //build/ around the launch of Windows Phone 8.1 and the converged development platform; now get the details and support from community experts to bring your universal Windows apps to life. We’d like to invite you to join us over the next month for a series of educational and hands-on events.

First up is //learn/, a unique opportunity for you to get an introduction to building your own universal Windows apps for phone, tablet and pc. Ask questions and learn what’s new from Microsoft MVPs and get insights from your peers.

Jumpstart, a 3-day training course from Microsoft’s Virtual Academy follows, giving you an in-depth overview of the most important new features and platform capabilities.

Once you’ve started your app, be sure and register for one of our in-person //publish/ regional events, where Microsoft MVPs and local experts will be on hand to help you bring your apps over the finish line and into the Windows Store.

...

//learn/ - coming soon, April 24

Microsoft MVPs will present live webinars introducing the latest features and technologies for phones, tablets and PCs. ...

Date: April 24, 2014

Click here to register

Jumpstart

In this live training webinar by Microsoft Technical Evangelists Andy Wigley and Matthias Shapiro, you will learn how to design and build Windows Phone 8.1 apps using XAML and C# to share a high percentage of code. You will also learn...

Dates: April 29 – May 1, 2014

Click here to register. If you are unable to attend live, you can watch this course on-demand on Channel 9 after May 9, 2014.

//publish/

//publish/ is a global event series where you will bring your project to polish and complete, and receive support, incentives, prizes and just have a lot of fun along the way.

//publish/ events occur in more than 60 different locations worldwide - simultaneously, all connected by a big online digital dashboard (“The Board”) You will receive expert guidance and support for app design, performance, testing, publishing, and Unity porting in a cool and inspiring environment.

Attend in-person at one of the 35 Microsoft-led events or 30 MVP-led satellite events at locations worldwide. No matter which event you attend, you’ll find it an extraordinary opportunity to learn, share and code; connected to the others via a unique online experience. Register early as space is limited.

Dates: May 16 - May 17, 2014

Click here to register

...

//learn/

Whether you are a New Windows App Developer or an Experienced one- we have something for you!

Join us and take a deep dive into the latest features and technologies for Windows Phones, PCs and Tablets.//learn/ from our community in this “to the community, for the community and by the community” event where our MVPs and Expert Developers will help you better understand all that’s new with Windows.

Want to learn how to easily share code between store apps of different form factors? or Want to build your own universal App? You are at the right place. These sessions will cover all the basic concepts to develop Universal Windows apps –One App for all form factors (PC, Table and Phone), Windows Phone 8.1 apps: the new application lifecycle, the new XAML etc.-with live chat and Q&A with our speakers

No need to dress up or step out you can watch and learn from the comforts of your home/office in this online webcast of informative sessions delivered by our community experts. That’s not all, our local experts will deliver these sessions in not 1 but 8 languages from across the globe(each accommodating the local time zone) to help you learn and leverage the new features and technologies.

So get started and Register Now!

image

...

Building Apps for Windows Phone 8.1 Jump Start

If you're an app developer who wants to design and build Windows Phone 8.1 apps using XAML and C#, don't miss this exciting event. The two-and-a-half day, demo-rich course, taught by experts who have years of experience developing (and writing about the process), focuses on how to create apps for Windows Phone 8.1 in Visual Studio and how to create universal app projects that share a high percentage of code and that target both Windows and Windows Phone.

Course Outline:

  • Day 1: Introduction to Windows Phone 8.1 & Building Windows Store Apps
  • Day 2: Programming Windows Phone 8.1 Platform Features
  • Day 3: Store, Universal Apps, and Silverlight

image

publishwindows.com

SNAGHTML1fe3651

Now, get your learn on!

Categories: Blogs

Cool Blast from The Past Page of the Day: Revisit the Restarts of the past, experience Windows, Mac, Amiga and more "restarts" live in your browser

404 Tech Support - The Restart Page lets you experience reboots in your browser

The Restart Page allows you to interact with shutdown prompts from different operating systems. You can click on the buttons and watch the page turn off or restart with an accurate depiction. There are different versions of Microsoft Windows, Apple Mac OS, and others with sounds, icons, and progress bars.

...

www.therestartpage.com

image

Awesome... Relive reboots without rebooting.

imageimageimage

Categories: Blogs

Data Editing in SQL Server Data Tools just got a little cooler (you can filter and sort now...)

Deborah's Developer MindScape - SSDT Data Editor Now Has Sorting and Filtering!

The SQL Server Data Tools (SSDT) provide access to many SQL Server features from within Visual Studio. One of those features, available from the SQL Server Object Explorer, is the visual Data Editor.

While the Data Editor has always been great for inserting, updating, and viewing data, it did not support any sorting or filtering … until now!

image

NOTE:

  • For an introduction to SSDT and the SQL Server Object Explorer, see this post.
  • For an introduction to the SSDT Data Editor, see this post.

The March 2014 release of SSDT added support for SQL Server 2014 databases. But it ALSO provided new features in VS 2012 and VS 2013 for sorting and filtering the data in the Data Editor!

If you are using VS 2012, you can use the update option to get this update (SQL | Check for Updates).

If you are using VS 2013, the update should appear in the Notification window when you click the notification flag:

...

image

While I don't suggest this as a main stream means to edit your data, but some times it's just so much easier to fire this up and edit knock out your quick updates. This also helps you avoid the "oh crap, I used the wrong WHERE in my Query Window update" game (not that I've ever done that, updating every row in a table, without a BEGIN TRAN... nope, not me! :/  )

Categories: Blogs

Yield Keyword in C#

C-Sharpcorner - Latest Articles - Fri, 04/18/2014 - 13:01
In this article, we will be discussing this keyword to understand the basic functionality this keyword provides.
Categories: Communities

Introducing Various Project Templates in Visual Studio 2013 RC

C-Sharpcorner - Latest Articles - Fri, 04/18/2014 - 12:10
This article introduces the various project templates with their updated versions and a brand new project template named Windows Azure Mobile Services in Visual Studio 2013.
Categories: Communities

How to Delete WiFi Profiles in Windows 8.1 Using Command Prompt

C-Sharpcorner - Latest Articles - Fri, 04/18/2014 - 11:40
In this article we will learn how to delete WiFi profiles in Windows 8.1 using a command prompt.
Categories: Communities

Optimizing Voron and the cost of Multi Trees

Ayende @ Rahien - Fri, 04/18/2014 - 10:00

One of the nice features that Voron got from LMDB is the notion of multi trees. If I recall correctly, LMDB calls them duplicate items, or something like that. Basically, it is the ability to store multiple values for a single key.

Update: The behavior described in this post has been in LMDB for the over 3 years. It is just something that Voron didn't have. Please note that this post discuss the Voron's limitation and its solution, not LMDB, which has had the solution for a long time.

Those items are actually stored as a nested tree, which effectively gives us a great way to handle duplicates. From an API standpoint, this looks like this:

// store
tree.MultiAdd(tx, "Eini", "users/1");
tree.MultiAdd(tx, "Eini", "users/3");
tree.MultiAdd(tx, "Eini", "users/5");



//read 
using(var it = tree.MultiRead(tx, "Eini"))
{
    if(it.Seek(Slice.BeforeAllKeys) == false)
        yield break;
    do
    {
        yield return it.CurrentKey; // "users/1", "users/3", "users/5"
    }while(it.MoveNext());
}

Internally, we handle this in the following fashion:

  • If a multi add operation is the very first such operation, we’ll add it as a simple key/value pair in the tree.
  • If a multi add operation is the 2nd such operation, we’ll create a new tree, and add both operations to the new tree. The original tree will have the key/nested tree reference stored.

That lead to a very easy to use API, which is quite useful in many cases. However, it also have space usage implication. In particular, a tree means that we have to allocate at least one page to it. And that means that we have to allocate 4KB to hold any multi tree with more than a single value. Since there are actually a lot of scenarios where we would want to store a small number of small values, that can often lead to a lot of waste on our part. We use 4KB to store data that we could have stored in just 64 bytes, for example. That means that when we want to actually store things that might be duplicated, we actually need to consider the taken space consideration as well.

I think that this is a pretty bad idea, because it leads us to do things with composite keys under some scenarios. That is something that Voron should be able to just handle for me.  So we changed that, in fact, what we did was changed the way we approach multi trees in general. Now, for every multi value, we can store up to 1KB of items in the same page as the key, before we devolve into a full blown multi tree.

The idea is that we can use the same Page mechanism we use elsewhere, and just have a nested page inside the parent page. As long as the nested page is small enough, we can just store it embedded. That result in some nice space saving. Since usually we have items in the following counts: zero, one, few, lots.

We need this to help with Corax, and in general, that would reduce the amount of space we need to use in many cases.

Categories: Blogs