Tips for a successful collaborative code review

Photo: Clément Hélardot/Unsplash

I’ve reviewed thousands of pull requests over my career. Here are my tips for building an inclusive learning environment while delivering value.

For the Author and Reviewer

Keep it small and iterative. By focusing on the intent, it gives the ability for the reviewer to provide a timely, high bandwidth review. It’s hard, but resist batching work.

Signal intentions with labels. Whether it’s with prefixes in the subject line or if the tool supports tagging, use these liberally to signal when work is in progress, the size of the review, or is associated with a milestone.

Provide a clear context. Define the problem and solution…

My personal account of building “Cold Ice”, an underground Half-Life mod

When we purchased a home computer in 1998, I was consumed by PC video games. Particularly first-person shooters Quake II, SiN, and Unreal Tournament. Out of all of them, my favorite was Half-Life. The gameplay felt solid. The ambiance of the environment was immersive. The weapons felt heavy and responsive. The cast was engaging — Marc Laidlaw’s plausible scenario where theoretical scientists open a portal to an alien universe.

Understanding my Purposeful Discipline for Knowledge

Recently I had a conversation about my reading habits. Speaking through it, I realized the process I follow is purposeful. To better understand my motivations, I drew a diagram, similar to how I blog. In this write, I will step through and highlight the essential parts. By sharing my thinking with others, it will memorialize my important goal.

My Inspiration for Reading Books Comes From Others

When I choose books to read, commitment sparks from a conversation with another individual, mentor, or leader combined with a motivation factor. This recommendation aligns with a challenge I am experiencing or a skillset to improve. …

Starting a new software engineering role can be an overwhelming experience. The first months are a dizzying mix of meetings, development, and people. There are many ways to become successful. Here are my top tips.

Build Trust With People

My philosophy starts with people. As a software engineer, good technical fundamentals support the day to day work. Software, at its core, is fundamentally about people working as a team. Focus on getting to know your teammates well.

Reach out to people and get to know them. For those that work and partner with your team, reach out, and introduce yourself and what you do…

Mapping the Process After Years of Learning

I’ve recently reflected on my experiences as an interviewee in software engineering. As I trace through each interview, I have learned and improved. I’d like to share these learnings with a diagram I’d built from my last search and highlight the significant bits.

Interview process map from personal experience. It will continue to improve over time.

Practice Role-Playing

My most impactful learning is the value of practicing weekly with a friend. What I learned is that interviewing is a muscle. Finding a study buddy helped simulate real interview situations. This practice had a tangible improvement in offers. …

An Anecdote on How Names are Pronounced

Cleveland, the site of PyCon 2019.

Last year, we celebrated the arrival of our child. One exciting aspect of having children is how others pronounce the new name.

Interestingly, the name was misconstrued unexpectedly. While traditional mangling includes mispronunciation or spelling errors, ours includes erroneous postfixes such as “Anne,” and “Anna,” where the root name would be sufficient and complete. I believe this resides on generational confusion where the short name was once popular, waned, and then resurged with popular conjunctive postfixes.

Frustratingly, this led to repeatedly clarifying the original name. …

A short story on how humans in software transmit direction

Photo: Stephen Dawson/Unsplash

Over my software career, I’ve built software apps and systems. More recently, as an engineering manager, I’ve had led teams that do the same. While activities were ongoing, I’ve noticed a pattern — a phenomenon. Teams get their work done guided by philosophies. This write identifies this behavior, questions its origin, and how it’s a powerful force through repetition. Let me highlight an example next.

A Short Story About a Dashboard

Recently, one of my teams had a featured product heading to production. It was evident they needed to monitor the system before deployment. However, the goal was unclear. What are they optimizing?

Some weeks into…

Mapping the Process After Three Years of Learning

I’ve learned a lot about my motivations while blogging over the past three years. Everything from self-reflection to clarifying intentions. I’ve also learned a lot about the process itself. While I could write a long-winded post about this meta, let me share what I’ve learned in a visual. Since the majority of the population are visual learners, this should suffice.

My blogging process after a few years. It will continue to improve.

Like all creative systems, blogging contains learning feedback loops. What is most interesting is the catharsis of publishing. Sharing these writings with others has growth side effects. It is impactful, rewarding, and gratifying to share the topic in one link…


Analogs of human facilities to engineering practices

TL;DR: Human senses have an analog to software engineering practices. An important sixth sense of orientation in the environment is inexplicably linked to engineering velocity. This read is designed to invoke the thought of the connections.

Software engineering is a craft intractable to describe. And in a previous post, I tackled the generic construction metaphor of what it is not. This interest in describing what made me think about how. Are there facilities that constitute software engineering? So, I reflected on my past experiences. …

A Short on the Reasons Why

TL;DR: Construction is a poor metaphor for software development due to its non-linear nature, difficulty maintaining insight, disagreement in measuring, and its conveyor belt of opinionated approaches. There may be better analogs.

Our family recently completed a straightforward home construction project. We took down walls and extended our kitchen into an open floor concept.

The project process and progress was clear. We initially worked with an architect by drawing up plans. We then worked with a government agency to critique and approve those plans. Finally, we worked with the implementers in three phases—first, demolition and preparation. Second, structural, plumbing, and…

Doug Arcuri

Engineering Manager // New York // Writings that aim to be timeless, explore the meta on software, and invoke though. // Also see

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store