Integrating RequestTracker and flow.io

Image by petitshoo (http://www.flickr.com/photos/petitshoo/)For a year or 2 we have been using flow.io at the company I work at to track projects. About a year ago, we decided to use RequestTracker (RT) to track incoming helpdesk requests, and started incorporating tasks within projects. RT almost replaced flow.io, but it lacks in the visualization of the Kanban process. Rather than building a completely new Kanban board on top of RT, I decided to use flow.io as the visualization tool, and get some measurements thrown in as a bonus.

flow.io has a nice REST API interface, allowing you to get a lot of information about your boards, and create or update new tasks. Deleting tasks is done by updating a task to a status of Deleted, giving you the opportunity to undelete the task. I’ve worked with REST interfaces before, so I wasn’t expecting a whole lot of problems there.

The challenge was RT. RT is written in Perl, and uses something called Scrips to run little scripts when something changes on an RT ticket. Scrips are pieces of Perl code. And I’ve never done anything in Perl before… except for a few Mister House scripts.

Below are the steps I took to make this work. It is a work in progress, and I’ve put it on github as an Open Source project, so feel free to improve it, fork it, or whatever.

[Read more...]

Cubicle privacy

So, you’re a software developer, and you’re in a cubicle. You’re on a deadline and deeply engrossed in how the communication driver and the display driver interact with the main program. Then Bill Lumberg comes by to discuss last night’s football game. You just lost track of 5 variables and 2 subroutines, and now need another 30 minutes to get back on track. How do you prevent that?

I run into this problem almost daily (well, not with drivers, but the principal holds true just the same), and came across 3 solutions:

CubeGuard

The easiest solution, yet conveying the message without any doubt: CubeGuard. It is comparable to the crime scene tape, but is set up to be reusable. It fits openings up to 50″, and is available in a large number of standard patterns, and for a surcharge also completely customizable. If you want to send different messages (i.e. “Out to Lunch”, “Working from home” and “Please do not disturb”), you can use the CubeGuard mount and simply replace the message cartridge. One whole set including mounts costs $19.95, and a message cartridge goes for $14.95.

Quartet Workstation Privacy Screen

The Quartet Workstation Privacy Screen goes a step further than the CubeGuard: instead of simply having a message displayed across the entry to the cubicle, it shields the cubicle entrance with a translucent plastic screen. The screen effectively creates a barrier between your cubicle and the outside world, shielding you from people passing by. It comes with a nameplate and a small dry-erase board, that can be used to leave a message for anyone walking by, or provide visitors with a place to leave a message.

The Workstation Privacy Screen comes in a Lightweight version that is 36″ wide, and a Premium version that is 38″ wide. The Lightweight version is $184.25 and the Premium version is $233.11.

Get a door

The third option is the best, but also the most expensive option: get a door, and walls that reach all the way up to the ceiling.

Cubicles are not a good setup for a software development environment. The cubicle was set up in the 1960′s, to allow for easy information sharing. In today’s world the problem seems to be oversharing of information. And it doesn’t have to mean that everybody works with the door closed and nobody can see what others are doing. Joel Spolsky from Fog Creek Software describes how their new office combines everything a developer could ask for in the Bionic Office.

You may not have to go that far (although your developers will love you for it!!), but think about the environment they work in and how it can affect their productivity. Any investment will pay off quickly!

Sharpening the Tools

Through InfoQ I came across this awesome presentation by Dan North about how to progress from beginner to expert, and how that cycle continues (even after reaching expert level).

Just a couple of tools I’d never heard about:

  • Hudson – A continuous integration tool, for Java projects, that allows easy integration of changes into a project, and easy retrieval of a fresh build.
  • GROW Framework – A coaching/self-help tool. GROW stands for Goal, current Reality, Options, and Will. In a nutshell, it lets you evaluate what you want to do, how you want to do it, and apply yourself to doing it.
  • Six Thinking Hats – A thinking tool for group discussions and individual thinking.
  • Clojure – A strange mix between Java and Lisp..?
  • Open Spaces – A meeting/discussion technique to discuss various topics, in a sort-of ad-hoc conference way. Open Spaces last from half a day to about 2 days.
  • Ivy – The Agile Dependency Manager (and that’s all I have for now).

So it looks like I’ve got a nice list of things to learn about, on top of trying to learn more about HTML5, JavaScript, C#, Sharepoint, Visual Web Developer, and MS-SQL…

Kanban in software development

The last year or so I’ve been increasingly involved in Continuous Improvement events, “leaning” the organization and removing non-value added steps from processes.

Most of these processes were manufacturing-oriented. However, some of the same principles can be applied to office processes. While we were discussing that, I kept wondering how to use some of these Lean principles in software development. It turns out I wasn’t the only one, and there are several ways to apply Lean in development.

I moved in about a year from project-driven to-do lists, through Agile/Scrum development, towards something similar to Kanban in the factory process. The principle of Kanban development is fairly simple: limit the amount of Work In Progress (WIP), allowing for more flexible assignment of development tasks, more visibility, and a clearer flow of tasks through the different stages (analysis, development, acceptance, deployment).

In the process of learning about these techniques I came across a variety of websites and blog posts that may be of interest:

I think in the next several weeks we’ll look into Kanban software development closer, and see if we can apply it in our small development department.