Network

Follow kosalanuwan on Twitter
View Kosala Nuwan Perera's profile on LinkedIn

Kanban was my unicorn and now it is my bitch

I remember one of my colleagues asked me once how good I am in work-life balance. I didn't have a perfect answer for him at that time. The newest addition to our life is Kanban. We made Kanban task boards out of all the surfaces we found, such as the almirah, bookshelf, doors, fridge and it would have been great if we had French windows.

We first started a Kanban task board with my wife's studies. In the beginning, she was using the timetable concept for prioritizing and scheduling study topics. This was working fine till she married (still is) to a husband who is on the computer 24/7.

Prioritizing the backlog items

It was an easy task for us to prepare a Backlog. Some have been already prioritized and weighted with hours (according to her calculations) required on the timetable. We took a collection of sticky notes, each with the topic and the weight written on it. It took only few hours for us to compile all the stickies into a Backlog.

Timetable schedule, mind maps, text books

Some study topics have a pile of materials to go through. These are split into smaller topics. Some are very little but include practical. These are noted with smaller stickies on the study topics. Some topics include those already studied in her previous courses.

Our mission was to prioritize these tasks as Urgent, Important, and Optional (topics that can wait).

Kanban task board

The task board initially happened to be our almirah, but now it is part of our almirah and a door, with three (3) sections labeled “To Do”, “Studying”, and “Done”, and we put all selected stickies for the upcoming week in the “To Do” section. My wife then moves stickies from “To Do” to “Studying” to “Done”.

Kanban door with To Do, WIP, and Done

The Studying in Progress (same as Working In Progress - WIP) is always limited to one study topic since this Kanban Board is only for my wife's studies, where as my Grooming Kanban Board has a WIP of four (4), one item for each Category of tasks.

Grooming Kanban Board with WIP of Many

As she completed each study topic, she is required to come up with a Mind Map. Once the Mind Map is sketched, the topic could then can be moved from “Studying” to “Done”, and then she could proceed to another study topic in the “To Do” list.

Monitoring the progress

However, I found that her tasks were moving a bit slower during later in the day than in the morning. I suspect that when she wakes up in the morning, she can see the tasks and that motivates and gives her a fresh start but it wasn't in a place near to her study area and that decreases her productivity. So we moved that task board to our door which is visible even when she is in the kitchen.

Kanban door at the end of first week

My wife enjoyed using the Kanban system. She felt that it reduces her stress and increased the productive time more than the previous timetable practice she had. She also expressed that she wish to continue her studies with Kanban every week.

PM> Install-Package ClassicDalHelpers

NuGet! Didn’t like the name when I heard for the first time! Anyways, NuGet has taken away the .NET open source PAIN! Consequently, now .NET open source is as easy as “Add Reference”.

http://nuget.org/List/Packages/ClassicDalHelpers

You do not need to work hard to refer Classic DAL Helpers by downloading at Codeplex.com. You can now add Classic DAL Helpers directly to your Data Access Layer via Visual Studio 2010.

Library Package Manager

But first, we need to get NuGet Library Package Manager from Visual Studio Gallery.

Visual Studio 2010 Library Package Manager

Visual Studio 2010 > Tools > Library Package Manager > Add Library Package Reference…

Once this is added to Visual Studio, you will get Library Package Manager under Tools menu. Also notice that you will get an additional reference option when you right-click on a project in Solution Explorer.

Add Reference

Add Library Package Reference

Right-Click on Reference > Add Library Package Reference…

This prompts the similar Add Reference Dialog that can be used to search NuGet packages online. To add Classic DAL Helpers, just search for “DAL” under “Online” Packages and click “Install” button.

Seach for DAL using Online package source

That’s it! You have now added Classic DAL Helpers to your project.

Refer Classic Data Access Layer Helpers to implement data access layers in application architecture for usage on Classic DAL Helpers.

Source code and samples are available at Codeplex.com.

Build & Publish NuGet Packages

Building and hosting our own NuGet packages is quite easy with NuGet Package Explorer, available at Codeplex.com as ClickOnce application.

image

NuGet Package Explorer > New > Edit > Edit Package Metadata

In order to publish packages at NuGet Gallary, you need to get registered at NuGet.org (no Open Auth yet!). This will give you an Access Key which has to be provided when publishing packages.

image

Please don’t copy mine! Smile

 

More references:

NuGet > Videos:
There are few videos available at NuGet Videos. Mix11 NuGet in Depth covers almost everything you need to know about NuGet.

Your Own Feeds:
You can have private/corporate feeds as well. Hosting Your Own NuGet Feeds article covers step-by-step approaches.
Refer Setting up a Local NuGet Gallary post to have your own gallery.

Build Server Option:
Integrating building packages into a Build System is possible. Refer Creating and Publishing a Package using NuGet.exe post.

Programmer anarchy

Few days back I came across this great presentation on Leaner Programmer Anarchy by Fred George at InfoQ. I tried to find more references regarding this development process but ultimately ended up with this online video presentation.

Presentation slidePresentation slidePresentation slidePresentation slidePresentation slidePresentation slidePresentation slideimageimagePresentation slidePresentation slidePresentation slidePresentation slidePresentation slide

The principles what Fred George discuss in this presentation somewhat controversial and might not fit for everyone. Yet, there can be things that could use from Anarchy. Anyways, down the road we still use a little bit from chaos to waterfall to agile nerd.

Related links:

InfoQ > Leaner Programmer Anarchy presented by Fred George
Download flash video “Leaner Programmer Anarchy presented by Fred George”

Writing user stories: a practical approach

Let me be clear. Software projects are predictably unpredictable. You cannot solve all the problems in the project plan. It’s good if we can schedule good ideas but people don’t think like this way. People solve problems in unexpected ways. This is where good ideas come from. Many are called “Ahaa Thoughts”.

Explaining things are easy. Documenting it is the hardest part, not only that, many devs hate this part, in a software development process. We could only interpret around 50% of "Ahaa Thoughts" into "words".

Writing user stories is not a hard task. Once you master it you can say:

"Documentation in Development processes was my Unicorn, and now it is my bitch"

Or

"Writing user stories was my Unicorn, and now it is my bitch"

As a good citizen, a Business Analyst or a Product Owner could use a template/standard. I use something like this:

User Story

Name: Customer List
As a: User
I want: Interactive Customer List
So that: I can change the details of my customer
Size: XS, S, M, L, XL

This user story comes from my Product Backlog List. It is a White Note on my wall. Things I can do about this story are called Story Points, that explains further about the story. A story point is a Yellow Note on my White Note. I write it like this:

Acceptance Criteria/Story Points

Name: Delete an address
Given: The customer is in an editable state
When: The remove address button is pressed
Then: The address will be removed from the list
And: The change will persist after a refresh

Name: Add an address
When: The application is loaded
Then: A list containing customer addresses will be displayed
And: The name of each customer will be displayed with an image next to it

To reduce the number of documents that we have to maintain in a development process, I use these User Stories and Acceptance Criteria for Testing. A Bugs is reported under a White Note or a specific Yellow Note, if not, a separate Defects Backlog List (parallel to my Product Backlog List).

For more readings;

Beyond Functional Requirements On Agile Projects by Scott W. Ambler
Complex Requirements On an Agile Project by Scott W. Ambler
Introduction to User Stories by Ambysoft
User Interface Prototypes by Ambysoft