views:

175

answers:

8

My entire team works from a different geographical location and I am the only programmer working remotely. I often find it quite difficult to have my code reviewed, as people take very long time to give their comments (usually they are genuinely busy with high priority work and I work mostly only on low priority projects/task ) .The company's policy dictates that it's not possible for me to checkin the code before the reviewer approves it. I usually start my projects with great interest but end up stuck in this situation quite often and it's very frustrating.

Also since I am not that assertive, I don't reach out to people and hold them responsible to review in fear of offending them. People do provide quality comments at times, but it completely depends on the person's bandwidth. What should I do in this situation to make team members accountable ? Should I talk to my boss about this problem? Do you think it would backfire ?

A: 

Just email them on a regular basis asking for an update on the review you asked them for. I find once a week reminders of this sort are generally often enough to make people get the work done without annoying them.

tloach
A: 

Ask your boss if someone takes times for the period files are waiting to be reviewed. Once this parameter will be monitored, people will treat it more seriously....

It is not your job to make the reviewer do his job. that's your team leader job (or his boss if he is the reviewer).

Just make sure you have enough at your hand to keep working while waiting for reviews so it won't reflect as much on your performance.

Dani
+5  A: 

Should I talk to my boss about this problem?

Yes - it's his job to make sure you're able to do your job. That's what managers do.

While an occasional gentle notification to others to do the reviews is a normal part of everyday interaction, if it's a chronic problem because of their task priorities it's not your job to be their task manager. The manager needs to be aware of this situation so he/she can make sure the priorities among the tasks are correct.

Michael Burr
I would disagree - if I'm having a problem with a team member it's generally my responsibility to speak to them about it first before I go to my manager, and only go to my manager if I can't quickly resolve it myself.
tloach
I agree if it's an occasional thing - however, this sounds like a chronic problem.
Michael Burr
Note also that I'm **not** saying the problem is that the others on the team aren't doing their jobs (or even the manager). But if you're tasked with doing something, and there are things outside of your control hampering that task the manager needs to be made aware. Your priorities might be changed, other priorities might be changed, other tools or resource might be brought on board. There are a number of potential solutions, but having someone working remotely have to badger people for each review probably isn't the best one.
Michael Burr
Exactly. And don't approach it as "a problem with someone else hampering my work". Approach it as "a problem with not being able to be productive because of external factors" :) So long as it is not perceived as blame shifting in the first place, it usually works out fine.
Pavel Minaev
@Pavel - Absolutely.
Michael Burr
A: 

I would have your team set up a shared calendar and have appointments for when you plan to conduct code reviews. I would suggest doing this as an entire team, not just for your sake. That way, if your appointments keep being denied or overlooked, then the upper management has visibility to it.

It's all about making your issue visible and if management cares then something will be done about it. If they don't know that there's a problem, there's nothing they can do to fix it.

Joseph
+7  A: 

I am in exact same situation: the sole developer on my team working remotely from a different location, and similar policy for obligatory code reviews before check-ins.

First of all, consider if remoteness is even a factor in this. If your work is truly low-priority compared to other stuff, then maybe what you see is quite normal. I'm not sure what you mean by "very long time" - hours? days? - so it's hard to be more specific.

Also keep in mind that no-one stops you from working on other issues while one is being peer reviewed (unless they are so closely dependent). If you use a source control system with "shelveset" functionality or similar, use that to switch back and forth between various things quickly. If you don't have that luxury, just have several copies of code checked out into different directories, and use them to work in parallel.

If your work is clearly hampered by lack of reviews (i.e. you find you're spending a lot of time doing literally nothing waiting for a CR), then you should talk to your manager about the problem in general (i.e. no finger pointing) first. Most likely, if the issue is objective, they'll relay your concerns to the rest of the team in such a way that no-one feels singled out.

Pavel Minaev
Pavel, some time it takes weeks to get the approval and I have the local copies of files growing (typically 100's of them). I usually take multiple backups , but it's turns out that you need to put lot of efforts in maintaining the copies. May be I need to have my own Versioned controlled software to keep the house in order.
rajachan
What version control system are you using? E.g. in TFS you have shelvesets, and those are stored on the server. In any case, weeks is way too long regardless of priority. This is definitely something you need to talk with your manager about.
Pavel Minaev
We use clearcase for version control
rajachan
A: 

Can you set up a separate code branch just for your work? Then you can check it in on your branch and merge the code to the main branch after it has been reviewed. This also creates a handy paper trail so you can point out (or even generate automatic alerts) when some code has been sitting in somebody's "in" box for a few days.

mobrule
That's a good idea. But again, I need to check whether my company allows this. But do you feel that it would make the reviewer less accountable in future ,since the person would believes that things are going to get done even anyway? Also ,since Iam a entry level programmer, I would miss out on valuable feedbacks and learning experience.
rajachan
I'm not suggesting a separate branch as a way to get around code review. I'm suggesting it as a convenient way to make the remote code available at the home office. I'd still expect you to be the one to merge code to the main branch after it was reviewed.
mobrule
+5  A: 

It's perfectly acceptable to bring these sorts of problems to your boss. Let your boss know that you need some guidance.

You should handle this task like you should any other task on a project. You should establish a time line with specific milestones and hold yourself (and your coworkers) to them.

When you establish your project plan and milestone time line, Send the person who is reviewing your code an overview of your milestones with dates that you'll be ready for review, and ask them when they think they can have the review done. Once they give you a date, you now have the power to follow up with them later.

"Hey Joe, thanks for taking the time to review my code, you said last Monday that you would have the code review done tomorrow, how's it going? Is there anything I can do to help?"

If Joe doesn't come through with the dates he sets for himself, you can record that in your project plan and have nice documentation for your boss to review. Since you have some extra time to fill waiting for code review, use it to better plan your project.

Greg
+1  A: 

G'day,

Get your boss to fit time into the schedule of the team for code reviews. Maybe have code reviews one part of people's objectives, i.e. so many reviews per week or month?

To assist this maybe put together reasons for why the reviews make good business sense. You're lucky in that if the company has mandated reviews, then they understand the benefits already to a certain extent. That is if they are actually performing the reviews! But does your boss understand the benefits of actually performing code reviews? Or is it something the company says they do so that they can get a "tick in the box" to achieve a certain level in the CMM?

You might like to head over to the SmartBear site. They have some great resources there regarding code reviews.

BTW Is there a reciprocal in that do you review the changes of other team members as well? Timely responses on your part will help when you're trying to convince others of your need for review. Actually, do they actually perform reviews? Or do they just do a quick click to confirm that they've reviewed it and then check it in? Whether it's reviews of your changes versus reviews of their own changes they're going to need time to do them no matter what!

Working in a reactive rather than responsive team is very frustrating but surely they can't all be reacting to the latest crisis all the time. Although, there are plenty of of people who thrive on crises, many of them there own making! Have a read of the excellent RandsInRepose article "The Crisis and the Creative" which covers this "crisis" topic. (-:

HTH

cheers,

Rob Wells