Hacker News new | ask | show | jobs
Fun ways to split up boring tasks among a dev team
10 points by mastermindxs 4074 days ago
Any body here have any experience with this sort of situation? Our team of 10 devs supports a legacy monolithic Rails app with almost no test coverage. So, in order to be refactor friendly we decided to write feature tests to cover all of our controller actions. That way we could refactor heavily without breaking or rewriting tests much. It sounded boring so I decided to make it a bit more fun by gamifying the whole task. We're writing our controller actions onto Post It notes and putting them up on the board where the devs can grab one and when they're done writing tests to cover those actions they can put it in a column under their name. And then in the end, I don't know, free beers. The challenge with this is that we have lots of controllers. So I wrote this gem to automate the action grouping and print out process. What this gem does is introspect on the app's controllers, grabs all the public actions, counts their lines of code, and then groups them together so that all Post It notes have a roughly equal total lines of code. So I thought that was neat and wanted to share. Here's the code: https://github.com/DiegoSalazar/post_it_note_actions
2 comments

I have a race with the CEO to work -- who ever shows up first the most times per week wins. Winner gets pints at the end of the week. It's simple - I don't stress and we both end up coming to work a little earlier. This works for us but its hard to know what incentivises other people.

You're idea seems a bit like KanBan rather than a game.

Yea it's not much of a game at this point. But I essentially wanted to inspire something of the sorts of what you mentioned.
One way is: Every time one of these tests are complete (I assume a full feature test), buy the team some lunch. Basically anyone can contribute and thus everyone wins. Obviously if 1 test is too little set the number higher, or one full feature is completely tested.

Don't necessarily make team members compete, but rather work towards a common goal. I hate competition among co-workers.