Bad Software
Bad Software
Bad Software
DOI:10.1145/ 2948981
impacted the mobile experience where
Article development led by
queue.acm.org
browsers cant handle as many concur-
rent requests, so the front-end team
made the decision to cache part of the
When people dont work well together data locally.
they make bad decisions. The crux of the issue was the teams
had not communicated well with each
BY KATE MATSUDAIRA other. Neither team had taken the time
to understand the needs of the other
Bad Software
team. The result was a weird caching
bug that affected the end user.
You might be thinking this could
never happen on your team, but the
Architecture
reality is that when many different
people are working on a problem,
each could have a different idea about
the best solution. And when you dont
Is a People
have a team that works well together,
it can hurt your software design, along
with its maintainability, scalability,
and performance.
Problem
Most software systems consist of
parts and pieces that come together
to perform a larger function. Those
parts and pieces can be thought out
and planned, and work together in
a beautiful orchestra. Or they can be
designed by individuals, each one as
unique as the person who created it.
The challenge is if you want your soft-
ware to last, uniformity and predict-
ability are good thingsunique snow-
I T A LL STARTEDwith a bug. flakes are not.
One of the challenges of manag-
Customers were complaining their information ing a software team is balancing the
was out of date on the website. They would make an knowledge levels across your staff. In
update and for some reason their changes were not an ideal world, every employee would
know enough to do his or her job well,
being reflected. Caching seemed like the obvious but the truth is in larger software
problem, but once we started diving into the details, teams there is always someone get-
ting up to speed on something: a new
we realized it was a much bigger issue. technology, a way of building soft-
What we discovered was the back-end team managing ware, or even the way your systems
the APIs and data didnt see eye-to-eye with the front- work. When someone doesnt know
something well enough to do a great
end team consuming the data. The back-end team job, there is a knowledge gap, and this
designed the APIs the way they thought the data should is pretty common.
When building software and moving
be queriedone that was optimized for the way they fast, people dont always have enough
had designed the schema. The challenge was that when time to learn everything they need to
the front-end team wrote the interface, the API seemed bridge their gaps. So each person will
make assumptions or concessions that
clunky to themthere were too many parameters, and can impact the effectiveness of any soft-
they had to make too many calls. This negatively ware that individual works on.
why it isnt working and collaboratively page with those changes. There is noth- Kate Matsudaira (katemats.com) is the founder of
her own company, Popforms. Previously she worked in
figure out the best way to solve the prob- ing worse than relying on something engineering leadership roles at companies like Decide
lem (whether it would be updating the and having it change underneath you. (acquired by eBay), Moz, Microsoft, and Amazon.
API or leveraging a caching strategy). The author may think the changes are
The key here is communication. minor or innocuous, but sometimes 2016 ACM 0001-0782/16/09 $15.00
SE PT E MB E R 2 0 1 6 | VO L. 59 | N O. 9 | C OM M U N IC AT ION S OF T HE ACM 43