The art and science of software code reviews:
The practice of reviewing software code written by
colleagues in an organization is called software code reviews. Code is one of
the most important digital assets for any software company and the bearer for
all innovations and value offerings that reach the end customer. As software
projects vary widely in size and complexity from organization to organization,
the practice of reviewing code also varies. Some teams can be lenient with this
practice while others are more exacting. This article provides a peek into the
world of software professionals as they realize their contributions.
A code review is done just before submitting the code to a
pipeline that delivers the improvements to the end users via a series of staged
progression through quality gates and environments. It provides an opportunity
for colleagues to inspect each-other’s work for potential concerns that can be
cheaply and effectively addressed before putting into a pipeline. If bad code
gets checked in, software development managers will find their quality
measuring dashboards tank which effectively brings a freeze to simultaneous
contributions from many teams. A code freeze impedes organizational
productivity and increases costs due to lost time and increased overhead among
engineers. In addition, backing out a bad code change requires detection and
remediation investigations and reports that might be more involved than
reverting a single commit which is the unit of code changes made to the master
version of the source code in the repository.
It is typical to see dozens of commits a day from an
organization that contributes to a source code which exceeds several hundred
thousand lines of code. Efficiency is increased when the commits are as
independent of one another as possible. For these reasons, managers insist on
‘baking’ the feature completely in a branch and with a feature flag before it
is merged as a single commit into the master. A single commit is easier to
revert as well than a series of commits spread across folders and their
history. The feature flag is an option to disable the feature at runtime in the
production environment so that the code becomes inactive and reduces surface
areas that would otherwise have required investigations, troubleshooting and
workaround education for end-users when potential issues crop up. Often the
operations engineering team works independent of the software development team,
so defects introduced into the code that make their way to the customers is
almost like throwing it over a wall for someone else to take care.
Seasoned engineers in a team that is well-oiled will usually
get a code review done with little change to the initial proposal made by its
author. But most teams usually draw fresh blood to keep their source healthy,
the widely varying practice of code reviews can evoke fear, fatigue from
iterations and even friction for the uninitiated regardless of their experience
and background. When there is a lot of back and forth, it can get overwhelming and
hair raising to anyone. Some manage to not make the same mistake twice while
others try not to contact the same individual for another code review request!
The process of code reviewing is highly structured and
invested heavily by organizations. Most provide one or another productivity
tool for individuals to review the code while also providing a DevOps pipeline
to vet the code via running multiple code analysis tools before even a code
review request is made. Engineers can view the exact changes to each line
before and after an iteration and provide comments during a code review. Experienced
ones will be able to spot defects and improve the code style and organization
that the tools might fail to provide. Some of the traits they look for include
readability, re-usability, testability and refactoring. Unit-tests are a particular favorite for both
bots and humans to call out during a code review. The most skilled reviewers
will often point at writing tests that will discourage incorrect usage of the
proposed code changes in the future in addition to testing the code for both
success and failure. Style is another big contention between engineers and
often code reviews iterations can go from a couple of iterations up to double
digits just for style and conformance.
The savvy author of a code review would have done a lot of
home-work prior to turning it in for review such as informing about the
proposed changes via a design document and getting general acceptance to the
intent behind the form of implementation. Establishing relationships with peers
that can smoothen and expedite the code review process is another popular
technique. Managers tend to take note of the number and quality of code reviews
by their direct reports, so individuals help themselves by working one or two
code reviews at a time.
Finally, the less the better for any code changes and
reviews. Engineers will vouch for this universally.
No comments:
Post a Comment