Tag Archives: team

Recognizing Good Code Review

While the benefits of code review are proven, documented, numerous and awesome, it doesn’t change the fact that most people, in general, don’t like doing it.

I guess code review just isn’t really all that fun.

So a few months ago, I broadcast the idea of turning code review into a game. It was my way of trying to mix things up – “let’s add points, and have reviewers/developers competing to be the best participant in the code review process”.

Well, if there’s one thing that my supervisor Greg has taught me, it’s how I shouldn’t rush headlong into something before all of the facts are in.  So before I decide to do something like game-ifize code review, I should take a look at some prior work in the area…

Enter this guy:  Sebastian Deterding.

In particular, check out the following slide-show.  Flip through it if you have the time.  If you don’t have the time, scroll down, where I get to the salient point with respect to game-ificating code review.

Here’s the slide-show. Be sure to read the narrative at the bottom.

The Salient Point

Sebastian seems to be saying that adding points to apps and trying to incite competition does not make something a game.  If it did, then this should be countless hours of fun.

Without play, there is no game. Points do not equal a game.  It’s not nearly that simple.

Free Pizza and Pop

I’m going to divert for a second here.

Last week, a company set themselves up a couple of booths in the lobby of the Bahen Center where I work.  They were there to recruit university students to work for their company – either as interns, or full-timers.

They were also handing out free pizza and pop.

Needless to say, I wanted a few slices – but I figured it would be polite if I engaged them in conversation before waltzing off with some of the free food and drink they’d brought.

So I sparked up a conversation with one of the recruiters, and he told me about the company.  I’m going to call this recruiter Vlad.

I ended up gently steering the conversation towards code review, and I asked my inevitable question:

“So, do you guys do code review?”

I felt like a dentist asking a patient if he’s been flossing.  Vlad waffled a bit, but the general impression was:

“Not as much as we should.  We don’t have a prescribed workflow. It’d be hard to persuade all of the teams to do it.”

And then we started talking about code review in general.  It turns out that Vlad had worked in a few companies where they’d done code review, and he always felt a little short changed.  He said something along the lines of:

“I never felt compelled to do reviews.  They just sort of happened…and I did it, and it felt like…unrecognized effort.  I mean, what’s the incentive?  Do you know what I mean?  There’s incentive for the software, but I’m talking incentive for me.  And some people did really lousy reviews…but my reviews were treated the same as theirs.  I didn’t get recognized, and didn’t get rewarded if I did a good review.  So it was hard for me to do them.  I want to be recognized for my good reviews, for my good contributions.”

I wish I’d had a tape-recorder running so I could have gotten Vlad’s exact words.  But that’s what I remember him saying.

Feedback and Recognition

Maybe instead of trying to game-ulize code review, I can instead hear what Vlad is saying and work off of that.

With the code review that Vlad participated in, all of the feedback went to the code author, and none went to the reviewers.  And the reviewers are the ones who are doing all of the heavy lifting!  As a reviewer, Vlad also wants feedback, and recognition for code review done well.

There’s a company in Toronto that specializes in feedback like this.  They’re one of the major players in the Toronto start-up scene, and have built a pretty sweet suite of tools to facilitate quick and easy feedback/recognition.

The company is called Rypple.  And maybe that’s the name of the application, too.  (checks website) Yeah, it’s both.

So Rypple has this feature called Kudos that let’s people publicly acknowledge the good work of their team.

Normally, I don’t pimp companies.  And it upsets me when people comment on my blog, and their sub-text is to try to sell their product or service.  However, I think this video is relevant, so I’m posting their demo video so you can see how Kudos work:

Click here if you can’t see the video.

The Idea

So Rypple’s idea is to have a feed that the team subscribes to, and publicly display things like Kudos.  The badges for the Kudos are also limited in how many you can give per week, so they’re a valuable commodity that can’t just be handed out all over the place.  Cool idea.

So there’s one approach – use a service like Rypple to give your reviewers better feedback and recognition.

Or maybe we could build an extension for Review Board that does something similar, and more oriented around code review.

It’s not oriented like a game, like I had originally envisioned.  But somehow, I think this idea has more meaning and traction than just “adding points”.

More on this idea in a few days.  But please, comment if you have any thoughts or ideas to add.

From GSS to UofT Drama (UCDP) – Part 4

Let’s talk about workload, and managing time.

Doubling in Computer Science and Drama is no picnic.  Both departments demand a lot from me, and I’ve had to get used to quickly shifting mind-sets from one to the other.  There have been days where I would get up, run to the Playhouse, go to a Nia warm-up class, take a shower, then run to the Bahan Centre to take an algorithms class, then run back to the Playhouse for a Yoga workshop in Movement class, and then run back to the Bahan Centre to take my Java class.

This might sound overwhelming, but I discovered something very interesting: these two opposites seem to fuel one another.

That Nia class in the morning would get oxygen flowing through my body, and would really wake me up.  On the days I had Nia and went to Algorithms, my mind was noticeably sharper, and I was in a better mood.

It’s funny how a better mood can help propel you through work.  It’s a bit like warming a knife before it goes through frozen butter.

Anyhow, the reason I’m writing this, is because someone asked me if it’s a good idea to take DRM100/DRM200/DRM201 while also trying to take Calculus and Bio, and a bunch of other courses.

Really, it’s a judgment call.  It’s not going to be a cakewalk by any means, but if you’re willing to put in the hours, it’ll pay off.  You’ll walk out of a school year and go, “Did I really just do all of that?!  Awesome!”.

But for a more practical standpoint, here’s how I look at it:

A full course load is 5 courses per semester.  6 courses per semester is called “overloading”, and while it’s possible (I’ve done it), I don’t really recommend it.  The only reason I did it was because I felt I needed to play catch-up, since first year ended up being mostly an exercise in futility.

So, DRM100, DRM200, and DRM201 are all full year courses.  And DRM201 has the added feature of secretly being 2 courses, even though it looks like 1.  So, with 3 slots taken up per semester, that leaves room for 2 more full year courses, or 4 half courses, or 1 full year and 2 half courses.  You get it.

So that’s one way of looking at it – can you make it all add up to 5 credits?

Another note – while it’s certainly possible to drop courses if you’re overwhelmed, I do not recommend dropping any of your drama performance classes unless you’re really in trouble.  In the performance classes, you’re almost always working in a group, and pulling out without warning can really damage a group.  So don’t.

If any people auditioning for the UCDP have any more questions, post some comments, email me, or contact me on Facebook.  You can find my contact info here.