TL; DR:
dotUltimate License Giveaway!
Continue to grow and evolve your culture
Text-based communication is ineffective!
What’s In This Issue
dotUltimate Giveaway!
I’m doing another giveaway for a JetBrains dotUltimate license! There are plenty of easy ways to earn entries so make sure to check it out!
Exclusive Article: Actionable Code Review Culture Tips
Short And Sweet
We’re *finally* getting some warm weather in Seattle and we’ve been taking advantage of that. You’re hopefully getting awesome weather where you’re at, so I hope you can fly through this with actionable tips so that you have more time outside today.
Seriously.
The code will still be there when you head back in. Let’s get into it.
Why Review Code?
There are many beneficial reasons that we review code on teams. However, it’s worth noting that you don’t necessarily need a formal code review process as the only way to get these benefits.
Code reviews are not a silver bullet solution. They can contribute in positive ways but:
They’re not the only way to accomplish the goal
Sometimes the process can backfire and create more headaches
In my opinion, some of the beneficial aspects of code reviews include:
Sharing knowledge with teammates about incoming changes
Feedback on patterns, practices, overall approach, etc…
Extra set of eyes to look for automated testing coverage
Subject matter experts can identify gaps and opportunities
Multiple team members can identify and acknowledge tech debt
You may have many of your own from reviewing code on teams! But is it all sunshine and rainbows?
Code reviews can slow people down. And sometimes not for a good reason.
Let’s dig deeper into this with the following list of actions I encourage you to think through:
Actions for Code Review Culture
The following list of things I’ve seen work well across many teams. Your mileage will vary, but at least you can consider the following:
Small and modular pull requests. Big reviews make it daunting and challenging for reviewers to understand all of the context effectively.
Early and often can be your friend. You can use draft PRs to get some feedback on an approach you want to take in code before waiting until the entire deliverable is “done” — where inevitably you have to go redo all of it based on comments.
Speaking of comments: If you are having a lot of back and forth, get on a call with someone to discuss. This is usually a sign that text-based communication is not being as effective as it could be.
Have a shared understanding of who needs to be signing off on your pull requests. Sometimes people will add others for visibility, which is great, but the PR owner and the newly added reviewers should understand if it’s just for visibility or for input.
Try to encourage team members to prioritize getting pull requests reviewed and moved along. If they are truly smaller and more modular, you might be able to align doing a review with an existing content switch and you can then minimize the context switching the owner might be doing as they wait for feedback.
Because code reviews can be a big context switch, consider batching time in your schedule to get through reviews.
Don’t just add a buddy that will blindly sign off on every change you make.
Make feedback actionable. Use standards for things like nitpicks (i.e. “nit”) and expectations around when folks should address. “This is the wrong pattern” is not as helpful as “This is the old pattern that we’ve been migrating from recently due to X, but if you check out this file [here], you’ll see the new pattern we’ve introduced”.
Try not to take it personally — and try not to make the feedback you provide personal either.
Try to communicate goals and expectations around when a PR is hoping to get wrapped up so that others can prioritize their reviewing efforts.
Remember that things like this can evolve over time! If you have a retrospective process at work, consider that you can reflect on some of these (or others!) and if it’s a good time to experiment with change.
What’s Next?
There are lots of benefits we can get from reviewing code — so consider where you might be able to drive some positive changes. Remember that every team is different, and even if your team is consistent the team may be growing together in a way that warrants different approaches to reviewing.
Heck, I’ve even had a team where we discussed our code changes so much that doing the review itself seemed silly because we were already very familiar with the code. Maybe double check for a missing test case.
You can help multiply your entire team’s productivity if you help invest in effective code review practices.
Continuing to ignore the effectiveness might lead to a dramatic loss of productivity.
Join me and other software engineers in the private Discord community!
All of my weekly vlogs are now on YouTube which are accessible via membership!
Remember to check out my courses, including this awesome discounted bundle for C# developers:
Weekly Recap
WPF, Plugins, Dependency Injection – Live Coding in C#
This live stream focused on developing some basics with WPF for those who are unfamiliar with the framework. This was a brief background into the YouTube content that was released later in the week!
Love And Hate: A Beginner’s Look At WPF in C#
Even at the time of publishing this video, the majority of my software development career was spent building Windows desktop applications. Now, it’s been a few years since I’ve had to do that but it’s still something I have experience in. Which brings us to my good friend WPF!
WPF is the evolution of WinForms and it has an expressive markup language, XAML, that you can leverage alongside your code.
So what’s my beef with WPF?
Check out this video to see some WPF basics, a couple things I like, and some things that I was always fighting against!
Actionable AI for Software Engineers – Principal Software Engineering Manager AMA
This was an AMA livestream focused on this newsletter article:
https://weekly.devleader.ca/p/ai-dos-and-donts-for-developers
Head to Head: Registration Callbacks With IServiceCollection And Autofac
If you know me you know that I love this ONE thing in C#…
Autofac.
It’s probably my favorite Nuget package that we have access to. But this love for Autofac was started many moons ago when I needed to scratch my itch for dependency injection and there was simply no better option.
Fast forward a bajillion years and we have a contender…
IServiceCollection is the build-in dependency injection framework that we have from Microsoft and it’s come a VERY long way. So let’s compare how we do registration callbacks between these two frameworks.
Becoming The Interview Champion – Interview With Dynamic Singh
I had the pleasure of sitting down with Bhupinder Singh, popularly known as Dynamic Singh, to discuss his journey in turning his interview problems… into one of his greatest strengths!
In our conversation, we discussed that it’s not just about copying some steps and hoping you land the job — truly, you need to become the person that you’re aspiring to be.
And guess what that means?
You have to put in the time, and the effort, and the practice to become someone who is great at interviewing. It’s all a mindset shift!
THIS Might Make Me Drop Autofac – Assembly Scanning With Scrutor
One of Autofac’s superpowers is the ability to load modules from assemblies.
And if that doesn’t get you totally excited, let me explain why this is so powerful when we mix it with assembly scanning!
If we have assembly scanning in our core application, we have the ability to load dependency registrations from outside of our core application. And if we have this kind of capability, we can do some very powerful things when it comes to dependency injection.
But IServiceCollection is making a strong stand against Autofac with this one new cool kid on the block:
Scrutor.
Let’s see how Scrutor can work alongside IServiceCollection in contrast with how Autofac behaves!
As always, thanks so much for your support! I hope you enjoyed this issue, and I’ll see you next week.
Nick “Dev Leader” Cosentino
social@devleader.ca
Socials:
– Blog
– Dev Leader YouTube
– Follow on LinkedIn
– Dev Leader Instagram