Code Reviews Are Not Made of Rubber

As a software engineering manager I believe that my main goal is to ship code. Shipped code falls into 2 categories: features and improvements.

When talking to The Business™ it’s easy to believe that they only care about the first type. And in a sense it is the most important type, how else will they be able to attract more leads, close those sales.

The faster you get to shipping, the better.

Often this pressure is not active, nor apparent. More like a cloud hanging on top of your development team’s operations, gently nudging you to finish what was started quickly before it develops into a storm[1].

You’ll be tempted and encouraged to cut some corners. One of those corners being code reviews.

Code reviews at their core, are the process of letting a peer look at the changes you made to the code. Usually with the intention of making sure that it does what it’s supposed to do. Under that light, the review aims to be a sort of quality assurance work.

So why not let the QA team just test the feature instead?

First of all it’s of course more than just a test of the work from the functional point of view. In a code review the reviewer will make sure the the implementation is sane but it also enables so much more: builds shared knowledge and ownership of the codebase, it establishes trust within the team, and reinforces habits that produce high quality code.

Shared knowledge

When a feature requires implementing new technologies or techniques, it’s often impossible to get the entire teams to be part of building the solution. Code review is a way to ensure other team members are aware of these changes, this avoids knowledge silos.

Another type of knowledge that’s transferred in an code review is when a senior developer reviews a junior’s work. In this case the junior developer can learn how to write better code and often will be made seated of edge cases and scenarios they didn’t think of.

This builds your team into a more resilient group that can afford to have members take vacations without completely grinding to a halt.

Establishes Trust Within the Team

Code reviews sound like nitpicking your team mate’s work, but by having well established rules on politeness and disagreement resolution heuristics the team will begin to better know each other’s strengths and weaknesses. Refocusing the reviews as a way to build on the strengths and reinforcing the weaknesses the team starts to develop an internal trust that’s really important.

Reinforces Habits That Produce High Quality Code

Nobody likes to be nagged. When a team starts doing code reviews it is highly likely that each team member will start getting the same comments about their code on each review. That’s because their weaknesses are being pointed out, but that repetition with time helps the developer to make the necessary adjustments to stop getting those types of comments.

In the real world, where legacy code and tech debt exist, code quality can feel a bit like polishing a turd. But the alternative of a complete rewrite is often impossible. So slow and methodical progress towards a shinier future is the best compromise.

Establishing the values that define high quality code within the team is the first step, focus on readability, architecture/structure, logic, performance, and security. Using code reviews to reinforce these values will slowly but surely make the software easier to understand and maintain, which means development will become more efficient and will reduce rework.


So if you are to adopt code reviews, don’t do it halfheartedly.

Establish a process that’s easy to follow, focus the team on the values that you care about the most. Avoid any focusing on persnickety things like l tabs vs spaces, letter casing, preferred syntax style, etc. Offload those to automated tools.

Adopting code reviews but treating them like a rubber stamp is the worst option. You assume the delays and distractions that come from context switching without any of the benefits.

Hopefully your The Business™ understands why it’s important.[2]

Here’s a funny image of code being rubber stamped because why not?


  1. Not the best metaphor I know. In my mind I have this hike we did once, 15 km (8.5mile) total with 525m (1,722 ft) elevation gain, not too bad on paper until you find out that the first 4km are mostly flat so you do that elevation in 3.5km and your thighs are burning. All that to be rewarded with one of the ugliest lakes ever. And then on the way back a storm forms and you worry of lightning while hiking down on a very steep, scree-filled, muddy downhill path… But I digress…

  2. Yes, this is that cloud I spoke of. This is where the task of convincing the business that the code quality improvements, and more resilient team are valuable investments that compound over time, just like technical debt that is allowed in by not adopting code review them would. Maybe I’ll write about this another time.


The Uninvited Guest #5: Clockwise #539

Clockwise #539

The Uninvited Guest is my way of participating on the Clockwise podcast.

Previous one can be found here And here are my answers to Clockwise


Dan’s question

Apple’s EU Changes: Meaningful Changes or Poison Pill?

When I covered Jon Gruber’s analysis of the DMA

it does show that Apple is going about this in a way that allows them to maintain as much control over their platforms as they think they can

Days after, it seems clear that the way the new terms are worded are designed to discourage the big players from starting these alternative app stores, and the smaller developers won’t see enough value to justify all the work they need to do to take on one of the new options.


Allison‘s question

Portable Monitor Craze: What do You Think of Them?

I haven’t been mobile for years so I wasn’t even aware these were a thing. John’s idea of plugging it into a home server sounds great but I have some spare crappy monitors already so I probably just use those.


Mikah’s question

What Browser are You Using?

I’m a fan of Firefox and I think you should use it as well.

For web development I still like the chromium developer tools though so I tend to use chromium based browsers, Brave until I found myself strongly disagreeing with its CEO’s ideas. I use Edge these days.


John‘s Question

How are You Managing Links These Days?

I use a mix of things: starts in NetNewsWire, tabs and tab groups on the browser, bookmarks in mastodon and a list of links in Obsidian.

A total mess, but it’s my mess.


Bonus Question

If You Were Stuck in a Time Loop: What Would be the First Skill or Task You’d Devote Yourself to Learning?

I’m learning German at the moment, so that!


Tracy Chapman - Fast Car (Wembley 1988)

Tonight during the Grammys, Tracy Chapman sang her song “Fast Car” along with Luke Combs (who covered the song last year), really beautiful.

As part of that renewed wave of attention I learned the story of the time she played the song to a full Wembley Station:

Nelson Mandela’s 70th Birtday / Wembley THE STORY BEHIND THIS PERFORMANCE

Stevie Wonder landed in England on the Saturday morning of the concert and went straight to Wembley Stadium, where a room was prepared for him and his band to warm up. He was to appear in the evening after UB40. His appearance had not been announced. UB40 were finishing their set on the main stage, and Wonder’s equipment was set up, plugged in and ready to be rolled on after a 10-minute act on a side stage. He was about to walk up the ramp to the stage when it was discovered that the hard disc of his synclavier, carrying all 25 minutes of synthesised music for his act, was missing. He said he could not play without it, turned round, walked down the ramp crying, with his band and other members of his entourage following him, and out of the stadium. There was an urgent need to fill the gap he had left and Tracy Chapman, who had already performed her act, agreed to appear again. The two appearances shot her to stardom, with two songs from her recently-released first album, “Fast Car” and “Talkin’ 'Bout a Revolution”. Before the concert, she had sold about 250,000 albums. In the following two weeks, she was said to have sold two million.



Spiral Galaxies as Seen by the James Webb Space Telescope

NASA’s Webb Depicts Staggering Structure in 19 Nearby Spiral Galaxies

NASA has released new photos of multiple spiral galaxies as “seen” by the James Webb Telescope, on the linked article you can see them all and download them in very high resolution.

The article also shows the same galaxies as seen by the Hubble telescope. Hubble was designed to mostly observe ultraviolet and visible light, the comparison with the JWT’s capacity to observe the infrared spectrum is a marked contrast.

Hubble’s showcase visible light. Dust absorbs ultraviolet and visible light, and then re-emits it in the infrared. In Webb’s images, we see dust glowing in infrared light. In Hubble’s images, dark regions are where starlight is absorbed by dust.

Almost like a negative, each observing the same part of space but seeing different aspects of it.

The contrast is really something when composited:


The Uninvited Guest #4: Clockwise 538

Clockwise #538

The Uninvited Guest is my way of participating on the Clockwise podcast.

Previous one can be found here.

And here are my answers to Clockwise #538


Mikah’s question

Smartphone widgets: do you use them and which ones?

My main screen has two main widgets: a stack of widgets that contains: photos, calendar, world clock, overcast, and music. The other widget is my activity rings.

Screenshot of my Home Screen, shows the described widgets and some of my main apps

Swiping to the left I have my home smart thermostat, battery levels, and weather.

My secondary screens have a home widget that lets me turn on and off lights. And after Simone’s answer I added both Libby and Duolingo to my reading focus screen!


Simone‘s question

Palworld: Pokémon Rip-off or Clever Satire?

I haven’t played the game and I’ve followed the news from very far. I’ve watched the comparisons and there are real similarities with some of the Pokémon designs which is where they could be sued. I don’t think the gameplay is close enough to make it a rip-off.

I’m actually surprised Nintendo hasn’t done so though, they love sending cease and desist to people. Maybe Palworld is not small enough to bully.


Dan’s question

iOS Stolen Device Protection Features: will you enable it?

Yes I have enabled it. I’m still unsure how the device determines which locations are “trusted locations”, the guide they link to doesn’t say either: how the feature works.


Christina‘s Question

Streaming Services: Pay for Ad-Free or Not?

I’m not happy with this trend. The one changing for me recently is Amazon Prime Video, but I’m not watching enough shows at the moment to justify changing the subscription proactively. I’m gonna wait and see, the end result may be that I pay for the ad-free tier or I cancel altogether.

The service that’s tempting me a lot is YouTube, I watch enough that having an ad-free experience may become worth it, if only it wasn’t so expensive though.


Bonus Question

What was Your Favourite Cartoon as an Elementary-Aged Child?

At that age I was hooked on any anime that aired on a channel called Televen.

  • Saint Seiya
  • Dragon Ball
  • Captain Tsubasa (was called Super Champions in Venezuela)
  • Slayers
  • Pokémon
  • Rurouni Kenshin
  • Slam Dunk

The Most Complete Analysis of Apple’s Implementation of the DMA Rules

Apple’s Plans for the DMA in the European Union

Apple recently unveiled the changes they are making to comply with the Digital Markets Act, the law identified Apple’s as a “gatekeeper” on iOS, Safari, and the App Store. The obligations to gatekeepers comes into effect on March 6, 2024.

John Gruber did the homework of analyzing the multitude of changes that Apple is implementing to comply.

It’s not a simple solution, but it does show that Apple is going about this in a way that allows them to maintain as much control over their platforms as they think they can, including what they have called the Core Technology Fee (CTF) which charges €0.5 per-install after the first million installs, ensuring thus that even in the worst of cases Apple is still able to get value out of very successful applications.

This new setup would give developers 3 basic options:

  1. Stay within the walls of the App Store as it is today.
  2. Adopt the new DMA compliance rules, but pay the CFT if applicable. This option spawns 2 scenarios which developers can opt into at the same time:
    1. Stay in the App Store but paying lowered commission to Apple.
    2. Sell your applications in a separate app marketplace, with no further fees paid to Apple.

There’s a lot more complexity than this of course, the article lays it all out very clearly but not succinctly (he tried).

We’ll have to see what the EU says, as these changes must be found compliant before they can be implemented:

The delicious irony in Apple’s not knowing if these massive, complicated proposals will be deemed DMA-compliant is that their dealings with the European Commission sound exactly like App Store developers’ dealings with Apple. Do all the work to build it first, and only _then_find out if it passes muster with largely inscrutable rules interpreted by faceless bureaucrats.


What Produces Effective Engineering Teams

addyosmani.com

Addy Osmani shares the lessons learned from “Project Aristotle” at Google, a two-year initiative back in 2016 that studied what made teams successful, what they found is that these 5 key factors have the biggest impact:

Psychological Safety: The team’s comfort with taking risks without fear of negative repercussions.

The article covers multiple recommendations on how to achieve this, the most interesting one to me was this TEDx Talk by professor Amy Edmondson on how to build this psychological safety:

Allowing the team to experiment in the open and not feel shame or repercussions for trying, produces more innovative solutions.

Dependability: Team members’ ability to reliably deliver quality work on schedule.

This is mostly dependant on each team members’s reliable performance. We all have had that sense of defeat when working in teams and one team member is not pulling their weight, situations like these discourages the rest of the team from doing their best work.

When a team has this problem it needs to be addressed as soon as possible before it becomes part of the culture.

Structure and Clarity: Clear understanding of job roles, processes, and performance consequences.

Having a clear strategy that is translated to the team’s different responsibilities is the key part of this factor.

Establishing objectives and key results, and making the team members responsible for achieving them is key.

Meaning: The personal significance found in the work or its outcomes.

Team members must find the work they do meaningful. Not necessarily in terms of the company’s goals, as stability, capacity to support their family, or personal self-expression was shown to be enough to serve this purpose.

When an employee is not finding meaning in their work, and they don’t feel well compensated and recognized the productivity takes a hit.

Impact: The belief that one’s work meaningfully contributes to the organization’s goals.

Closely related to the previous one, but this time directly associated with the success of the company. When people can see the effect of their work having an effect in the bigger success of the company they work at, they feel a sense of impact that drives them to be more successful.


Having led a development team for the past several years, many of these hit close to home. Having not had control over several of these factors I have focused on the ones that I have more control over: providing a safe space to try and make mistakes, learn, and share knowledge.

What I can certainly say from experience is that excelling at one or two of these factors is definitely not enoug. Unhappiness and discouragement crops up and productivity takes a hit.