Pluralsight 20patterns Ebook
Pluralsight 20patterns Ebook
©2019 Pluralsight
Ed 2019_Q4
Table of contents
PART 1
Domain Champion 2
Hoarding the Code 5
Unusually High Churn 8
Bullseye Commits 11
Heroing 13
Over Helping 15
Clean As You Go 18
In the Zone 20
Bit Twiddling 22
The Busy Body 24
PART 2
Scope Creep 27
Flaky Product Ownership 29
Expanding Refactor 31
Just One More Thing 33
Rubber Stamping 35
Knowledge Silos 37
Self-Merging PRs 40
Long-Running PRs 42
A High Bus Factor 44
Sprint Retrospectives 46
Introduction
Domain Champion
1. Domain champion
In truth, they probably wrote most of others can provide in the review process.
it, and in some cases rewrote the same As a result, Domain Champions will
sections of code multiple times. typically show low Receptiveness in
incorporating feedback from reviews.
The Domain Champion isn’t just “the
engineer who knows credit card Domain Champions will seldom, if ever,
processing”; it’s all they ever work on. appear blocked. Short-term, it’s a highly
It’s their whole day, every day. productive pattern. But it’s often not
sustainable and can lead to stagnation,
Some degree of job specialization is which of course can lead to attrition.
essential and often motivating. But
even within specialized roles there can
be ‘too much of one thing.’ Managers
Primary Focus
must balance enabling a team member
to unilaterally own the expertise, and
encouraging breadth of experience.
How to recognize it
Domain Champions will always work
in the same area of code. They’ll
also rewrite their code over and over,
and you’ll see it in churn and legacy
refactoring metrics as they perfect it. What to do
Assign tickets that focus on other areas
Domain Champions are deeply familiar of the codebase.
with one particular domain. As a result,
they’ll typically submit their work in Of course, some engineers would prefer
small, frequent commits and will show a to stay where they are. It can be very
sustained above average Impact. enjoyable to do a task you’re good at.
And, it can be uncomfortable to take on
Because no one else knows more than work that requires information or skills
the Domain Champion, there’s usually you have less practice with. But effective
very little actionable feedback that managers will strive to challenge
their team.
It’s not uncommon for programmers to When you see large and infrequent
wait until their work is done to share commits, first consider the pattern’s
it. In creative and research-intensive duration (have we seen this pattern
fields, it can be a natural tendency to for years, or has it only recently been
avoid sharing work when it’s only just visible?). This information can help
started. There are plenty of reasons why determine whether this is the engineer’s
this might be: a fear of having others preferred way of working, or if this is
judge the work in progress, a fear of caused by something outside the normal
others taking ideas, or a desire to make development process.
the whole process seem effortless, to
name a few. CODE COMMITS
THIS WEEK
Bullseye Commits
4. Bullseye Commits
Heroing
5. Heroing
Granted, a good save is usually better review process (see the Review and
than no save. But regular Heroing leads Collaboration metrics).
to the creation of unhealthy dynamics
within the team or otherwise encourages Helping Others
undisciplined programming. Some team
members even learn to expect them to
TEAMWORK
jump in on every release.
Over Helping
6. Over Helping
Engineer One submits. Engineer Two In the Review and Collaboration and
cleans it up, over and over again. This Operational reports, you’ll notice these
behavior can be normal on small two consistently review each other’s
project-based teams. But when that 1-2- work. One engineer will have a high
1-2 pattern doesn’t taper off, it’s a signal Help Others, but it’s not reciprocated.
that should draw your attention. The “load-bearing” engineer will also
show high levels of Influence and Review
The problem is threefold: (1) always Coverage. The other engineer will not.
cleaning someone else’s work takes One engineer will have a high Impact;
away from one’s own assignments, (2) the other won’t.
it impairs the original author’s efforts
toward true independent mastery, (3) it This behavior can be perfectly healthy
can overburden the helper and leave the and expected when in a mentorship-
original author in a continuous unnatural type situation. But beyond a certain
waiting state. point, rotation is in order.
How to recognize it
Disproportionate Help
You’ll notice this pattern in the same
and Code Review
way you’d realize “Heroing” (Pattern Eng 1 Eng 2
#5) in Pluralsight Flow’s Review and
Collaboration reports and the Help
Others metric. Look for reoccurring, last-
minute corrections between the same
two people.
Clean As You Go
7. Clean As You Go
In the Zone
8. In the Zone
How to recognize it
An engineer in the zone organizes their
M Tu W Th F
day to eliminate distraction and focus on
delivering business value. Their Active
Days are consistently above average.
Their Impact is high and consistent. Their If increasing overall team velocity is
PRs are timely, evenly paced, and nicely important to you, helping everyone
sized. They consistently participate in on your team find their zone is a
reviews, so their Involvement is high and foundational place to start.
consistent. Their churn is usually lower
than average. An essay from Paul Graham, titled
“Maker’s Schedule, Manager’s Schedule”
offers context and strategies for
What to do blocking meetings and creating space to
Similar to engineers who exhibit the get in the zone.
“Clean As You Go” pattern, it helps
to acknowledge this pattern either Small changes in scheduling and
publicly, privately, or both. Emphasize reduction of interruptions can amount
their consistency and how great code to significant increase in capacity.
is built not in a single sprint or pulling Furthermore, consistently getting in
all-nighters. The Work Log and Review the zone allows your team to ship at a
Bit Twiddling
9. Bit Twiddling
How to recognize it
Look for high rates of churn in the What to do
same area of the code. The key is to Look for ways to reenergize the engineer
couple repetition and refactoring with with a new project. Find a ticket, even
ambivalence or indifference in code a small one, that will lead into new and
review over an extended period. interesting areas of the code — even if
it comes at the expense of the team’s
For example, watch for a standard productivity in the short-term.
library call, or otherwise stable code,
get refactored into customized code for Creative workers thrive when tackling
some difficult to articulate optimization. new and challenging problems, even
Or, watch for code that gets refined if they at first balk at working outside
and refactored multiple times with their area of expertise. New experience
disinterest — light code review and PRs typically leads to learning something
with generic submitter comments like new, a process most engineers enjoy.
“refactoring,” “reorganizing,” or “touch
up,” followed by “LGTM”.
A R E A S O F S P E C I A L I Z AT I O N
shies away from heavier problems. This
behavior can be perfectly normal over
short periods or in isolated instances.
And, in fact, some shifting around
is healthy.
The
But the Busy Body is problematic over Busy Body
a long period because these engineers
end up without a strong sense of
ownership. There’s nothing for them to DOMAIN KNOWLEDGE
Scope Creep
11. Scope Creep
TICKET JITTER
fall under this category: Mid-Stream
Changes
0
n A Product Owner submits
incomplete requirements, -
leading to extra engineering
time spent toward filling What to do
in the gaps or resulting in
Ambiguous or changing requirements
‘miscommunications’ later on. from a Product Owner can often be
n A Product Owner changes their a sign that that person is stretched
requests after implementation thin. They have too much to work on,
so nothing gets their full attention.
began, leading to missed
It’s helpful, for that reason, to have a
deadlines. discussion with their manager. Bringing
data to the discussion can eliminate
skepticism around what’s happening and
How to recognize it help cut straight to the discussion about
This pattern tends to reveal itself in how to resolve the situation.
recurring scope creep driven by the
same product owner. You may notice a The handling of the situation should
significant expansion of code that wasn’t generally be left to the Product Owner’s
driven by code review in the back of manager. If it’s an issue of too much
the sprint. work, it can help to eliminate the
individual’s work in progress. Otherwise,
it may simply require coaching around
any areas they tend to overlook when
creating specs.
Expanding Refactor
13. Expanding Refactor
WORK FOCUS %
How to recognize it
New Work
A small amount of legacy refactoring
is healthy. It’s when you notice a whole
TIME
slew of changes in areas that are
unrelated to the feature at hand.
What to do
Look at the Work Log for outsized
code commits in sets of files that seem Open the topic up for discussion with
completely unrelated to the feature at the team. Ask team members to make
hand. Talk to the engineer, expanding a case for and against the refactor,
refactors are rarely driven by the and then come to a conclusion about
product teams. whether it’s best to move forward with
the project, drop it, or tackle it with a
different approach.
or improved.
Rubber Stamping
15. Rubber Stamping
Often, the Submitter will have some The Team Collaboration metrics will also
level of seniority in the team, and the provide insight into the time and energy
Reviewer trusts that the work is good that team members are allocating
enough. In other situations, someone toward the review process over any
doesn’t value code review, or everyone given time period. These reports will
just ran out of time and felt the need to help watch and manage the trends in
push the PR through. the long-term.
Knowledge Silos
16. Knowledge Silos
Self-Merging PRs
17. Self-Merging PRs
Long-Running PRs
18. Long-Running PRs
Bus factor (noun): The number of team Furthermore, it helps to start with the
members that need to get hit by a bus Index to get a high-level understanding
before your project is doomed to fail. and then drill down into specific team
dynamics. If the Index is trending
Having a low bus factor is risky. A High downward, check to see if team
Bus Factor means that there is a greater members are getting into a cycle of only
distribution of knowledge and know- reviewing each other’s work.
how about the code across the team.
When more than one engineer knows 100%
KNOWLEDGE SHARING
about each area of the team’s code,
there’s more optionality for managers to
assign tasks and more people that can 50%
provide substantial reviews, reducing the
possibility of bottlenecks to a release.
Sprint Retrospectives
20. Sprint Retrospectives
Learn Measure
03. Get deep visibility into 04. Turn workflow data into
your development process. operational improvement.
Flow instruments the tools in your Flow gives software leaders a fact-based
development workflow—from commit view of effectiveness and performance—
data, pull requests, tickets, and more—to with prescriptive metrics to drive process
provide actionable insight into individual improvement. The end result is improved
and team workflows. quality, more time spent coding, healthier
distribution of knowledge, and faster time
to market.
About Pluralsight
Pluralsight gives you confidence you have the skills and insights you need to execute
your technology strategy. You can upskill your teams into modern tech roles, improve
workflow efficiency and build reliable, secure products. We are the technology skills
platform.
By leveraging our Skills product, which includes expert courses, skill assessments and
one-of-a-kind skills and role analytics, you can keep up with the pace of change, put the
right people on the right projects and boost productivity. With our Flow product, you can
debug your development processes with objective data, identify bottlenecks and keep a
pulse on the health of your software teams.
Used together, they empower you to develop, measure and deploy critical skills at scale
and improve engineering effectiveness.