Tag Archives: task tracking

Testing Sinatra applications

I have been mucking around a bit more with my Sinatra application, running it via Rack with a config.ru file and some code improvements (though everything I write still looks like it was done by a ten-year-old) and I decided it ought to be fairly straightforward to prepare some test cases since I’m only handling two routes.

Not so. This is Ruby after all.

There’s quite a long testing page, http://www.sinatrarb.com/testing.html, but at no point does it give a command that will actually run the tests listed on the page! And none of the tests include POST data.

Every time I’ve tried to spend time figuring out how to run simple application tests with Rails, and now Sinatra, I just want to tear my hair out and just give up.

I know I’m a numpty coder, but it’s so difficult trying to do the right thing.

Sweating the small stuff

In a previous role, in preparation for a major datacenter migration project, I figured that there were a ton of really small mini- or micro-projects that we needed to get sorted before we’d be in a position to undertake the big stuff: migration of filestore from Netware to Windows, internal app upgrades, non-disruptive re-platforming, the kind of things that were often talked about in the office for half an hour and then lost to the ether, or, jobs that were important to a particular team member, that would have been started but lose momentum when the bigger stuff takes over.

Realising that these small-scale projects are a genuine way for the team to deliver incremental improvements, rewarding in their own right, I figured that why they usually stopped or lost was because they were no actual targets, that the individual knew what was required and didn’t need to write any of it down.

Also, knowing that techies are lousy are keeping track of their ideas, I asked the powers that be for some low-key project management assistance, not a formal project, but keeping tabs on the wee items that need to be done, most of which wouldn’t appear on the radar of a proper project.

Because the PM wasn’t really interested in tracking it ‘properly’ (because it was a proper project, had no budgetary implications, no vendor managements, or contracts to negotiate) he put as little time and effort into as possible, just checking up on the progress the devs and infrastructure were making on their areas. And it was just two or three people, agreeing on a set of tasks to be done whenever they got done.

But after a while, I noticed that all he was doing was getting agreement on: what needed to be done, who was going to do it and when it should be done by; he was an independent (and uninterested arbiter).

All the tasks were simple and achievable, but having an agreed list where each part needed to be ticked off at regular brief meetings was key. I already appreciated the need for actively tracking tasks (I tried using a now-defunct tool called todoyu) but trying to get the team to manage their own work like this just doesn’t work; that external guide was the key.

And it delivered. Not everything, of course, but enough to make a difference; the stuff that didn’t get done that way turned out to be much more complex and needed to be a project in its own right, but this becomes obvious.

To me, there are two real benefits of an approach like this,

  • stuff gets done,
  • there is a record of stuff getting done

When a team is working toward a strategic objective there are many small items that get in the way or get forgotten about in the flood of important matters, but in the end it all counts.