Code Review as a Service
131–140 of 238 posts
Re: Code Review as a Service
#132I've been a reviewer on PR for a couple of months now and it's been amazing. I've gotten to help dozens, maybe hundreds of developers improved their code, fix security, readability, testing and lots of other issues. Sometimes the PR is short and the review is short but sometimes it's much more involved and I've had the opportunity to really explain things and educate people in a way that no lint checker could. I'm ab…
Re: Code Review as a Service
#133Earlier quoted context omitted.
But almost any good SA can catch all of those issues, a person doesn't need to look through the code for that.
This is very close to saying Halting problem is not, in fact, a problem: https://brilliant.org/wiki/halting-problem/
It's Rice's Theorem which tends to get me in trouble!
Re: Code Review as a Service
#134mostly used it in small companies with 1-2 devs where it helps to get another pair of eyes on it. also, helpful as career development / learning for a junior dev.
happy to answer any questions.
Re: Code Review as a Service
#135Earlier quoted context omitted.
My company has used them before. I thought the same before using them. However I was surprised the level of talent they have. For a super senior dev the context that you need for most projects isn’t as much as you think. It was a net positive for us. Sped up our developer process given its so hard to hire senior devs right now. They also have domain experts. So say you are using some tech your team isn’t as familiar…
I'm one of those reviewers, and I agree with you about the talent. Not speaking about myself, but the people I've gotten to know and also the ones I have referred. Each PR gets two reviewers from pullrequest.com, and we get to see each others' comments. One will catch stuff the other misses, and we usually support each other. It's most fascinating when we disagree on something, which so far has always led to a high-q…
Re: Code Review as a Service
#136Except I don't believe in code reviews. Over the years I have experimented with pair programming and I think it is way better solution. The one catch with pair programming is that some people just prefer to work alone and it is really draining to be talking constantly for couple of hours. I have modified the system to do on/off pair programming (ie. split up a little bit of work, rejoin later in the day, share what w…
I agree with your points, but the pair programming also has downsides, main one being that it doubles the total cost per task, and also it's usually limited to 2 pairs of eyes (again because of the cost), while code reviews can (and should) be done by as many members of the team as possible.
Re: Code Review as a Service
#137Except I don't believe in code reviews. Over the years I have experimented with pair programming and I think it is way better solution. The one catch with pair programming is that some people just prefer to work alone and it is really draining to be talking constantly for couple of hours. I have modified the system to do on/off pair programming (ie. split up a little bit of work, rejoin later in the day, share what w…
I agree with your points, but the pair programming also has downsides, main one being that it doubles the total cost per task, and also it's usually limited to 2 pairs of eyes (again because of the cost), while code reviews can (and should) be done by as many members of the team as possible.
Oh, that is false. I guess it comes from a simplistic understanding of how people work (no, they are not robots). You may have two people engaged in the same task, but:
* People are more focused and work faster -- it is much easier to stop yourself from procrastinating when you have other person on the call.
* You get people exchanging tacit knowledge. With people changing pairs knowledge will tend to spread over entire team eventually very efficiently.
* You get flexibility of having any of the two people being able to continue the task (if one quits, is sick, has to take day off or step out for a meeting) -- the work is much more likely to progress uninterrupted.
* You get much less chance for the project to get stuck. When one person doesn't know how to do something the other person might know.
* You will tend to get better quality results (for example any bug needs to pass through two pairs of eyes, etc.) -- and that means less time wasted on other parts of the pipeline, less technical debt, etc.
* When you get a new dev on the team, the first assignments are much less likely to get screwed up because you have other seasoned dev in the pair.
* You get a natural mechanism to get a new dev onboarded and have knowledge transfer -- they get up to speed many, many times faster than if they are just dropped alone on a task.
* Good code review isn't free either, it would have to take a significant portion of the effort to write the code anyway.
* You get people socialising while doing useful work. Which is extra difficult while working remotely. Having tightly knit team is very valuable.
* People are overall more happy and engaged when the work goes faster. Have you noticed you feel better when you stand in one long queue that progresses fast than if you split it into multiple queues that progress slowly, even if overall wait time is the same?
* Having work done faster (by two people working on it at the same time) makes for faster cycle time and in consequence lower complexity (less things being worked on at the same time). Lowering complexity is very valuable.
* While we are at complexity -- normally doubling people in the project does not cause it to progress twice as fast or cause the throughput to be twice more. Being able to treat two developers as one, uber-developer doing work more efficiently is very valuable because it allows counteracting at least part of that diminishing returns trend (ie. you have have larger team with efficiency of a smaller team).
* As a tech lead this is fantastic way for me to get to know people, their strengths and weaknesses. I can then help them with weaknesses and maybe learn something from their strengths. Getting to know the complete picture of the team is extremely valuable.
And many other reasons.
When you take that into account you will find that, if done correctly, pair programming will be more efficient. Especially long term, because some of the effects take time to kick in.
**
Now, working in pairs isn't free:
* Working in pairs requires people to have high standards when it comes to their behaviour towards their peers. Working in pairs requires absolute adherence to the "no asshole" rule.
* As a manager, you need to react very quickly to people having trouble working together because in pair programming this is going to immediately destroy productivity for two people.
* Costs of disruption is magnified when working in pairs. For example, if you have to wait for approval for something -- now you have two discontent people waiting for the approval. If one person has to join a meeting -- the other person will not be as efficient and they will have additional cost of syncing afterwards.
* You probably want to hire people that are specifically mentally designed to be able to work in pairs. Some people just prefer to isolate themselves and work alone -- these will have trouble functioning in a team that uses pair programming. It doesn't mean these people are worse, they are just worse for that particular team.
Re: Code Review as a Service
#138This entirely misses the point of code review. Say it with me: Code review is a knowledge transfer exercise. Finding bugs, security vulnerabilities, and keeping the code maintainable are merely side effects that we appreciate along the way. The primary purpose of code review is increasing the bus factor of the given piece of code and facilitating organic knowledge transfer. That's it.
In many places, yes.
But: When you have a solo developer working on a component in a language that you aren't familiar with, team full of novices, component delivered by a contractor...
Re: Code Review as a Service
#139Re: Code Review as a Service
#140I wanted to sign up as a reviewer but it seems like one needs a linkedin account to do so. Since I don't have a linkedin account it seems like there is no other chance?