[teampractices] Healthy discussion: A couple of articles against scrum

Kevin Smith ksmith at wikimedia.org
Wed Oct 5 20:46:52 UTC 2016


Again, thanks Joaquin for sharing these.


This (insanely long) email is in response to article:

https://michaelochurch.wordpress.com/2015/06/06/why-agile-and-especially-scrum-are-terrible/


Here's my tl;dr of the article: He associates agile with aggressive
management, hyper-focus on individual productivity, stifling developer
creativity, poor code quality, and a lack of professional development.

Here's my tl;dr of my response: Agile encourages humane management,
de-emphasizes individual performance, enhances developer creativity,
can/should improve code quality, and is neutral to positive regarding
professional development.

And with that, I invite you to marvel at my massive wall o' text....


Disclaimer/context: I was a professional programmer for a decade before
agile was invented. I have been a strong advocate for agile software
development since 2001, but I remain agnostic about the specific
implementation called Scrum.

I disagree with much of what is in this article. I can see that the author
has been in some highly dysfunctional environments, and he has my sympathy
for that. He pins the blame on agile and scrum, where I see other causes.
I’m afraid that much of my response is the dreaded “that’s not agile!”[1].
But  I will try to focus on my own experiences, and will try to comment on
his statements which seem more refutable.

Speaking as a developer, switching to “stories” and “iterations” greatly
improved my sense of accomplishment, rather than stripping it away. Stories
are written loosely enough that I would have to work closely with the
customer (or proxy) to figure out what was really needed (and technically
possible). Iterations allowed me to celebrate every couple weeks that we
had made tangible progress. The typical pre-agile alternative was to futz
around aimlessly for a few months, and then have a few months of all-out
death march, before releasing something that was both late and unfinished
at the same time.

I tend to agree about the pitfalls of open-plan offices. But I was
complaining about those in the 80’s, so I don’t see those as an agile
problem. And if I have experienced “humiliating visibility” into my work,
it was in non-agile environments.

In agile, programmers should never be “jerked around or punished when
things take longer than they ‘seem’ they should take.” If that’s happening,
it’s not agile. Period.

The distinction between business-driven and engineering-driven is a real
thing, although there are some subtleties that I think the author
overlooks. I have seen a lot of engineering-driven organizations make
really bad choices: They can produce things nobody wanted; they can
overproduce things to the point of bankruptcy; they can bounce from cool
idea to cool idea without finishing anything. Basically, either approach
can be done well or poorly. At least in theory, I believe that the business
people (or more accurately the “product” people) can and should understand
the customer, and from that they should be able to guide the team to
satisfy those needs. If the business people ignore technical concerns
raised by developers (including tech debt), then they’re not doing it
right. This idea that code quality suffers under agile/scrum seems to be a
recurring theme.

The author claims that “Architecture and R&D and product development aren’t
part of the programmer’s job, because those things don’t fit into atomized
‘user stories’ or two-week sprints.” Wow, I disagree so strongly with that.
Especially with Test-Driven Development (of which I’m a huge fan),
architecture is *always* a part of the programmer’s job. Architecture and
code design are ongoing, and require constant attention. The developer is
always expected to find (research?) the optimal design. And I’m not sure
how “product development” could not be a part of software development.

I agree that estimates are often misused/abused. But I disagree that they
are useless or harmful. I wrote a lengthy email in an earlier thread on
that topic.

The author feels that agile methods put programmers in the role of
children. Personally, I have experienced two kinds of non-agile
environments: Those that are more structured (waterfall-ish), and those
that are less structured (chaos/cowboy-ish). In the former, I have felt
like a powerless child. In the latter, I have felt like an out-of-control
teen. In agile environments, I have felt like a responsible adult.

This might be a good place to mention that I strongly believe that
programming is a craft. The output has to be functional, so it’s not an
art. We’re generally not inventing entire new paradigms and ideas, so it’s
not science. We’re usually not applying universal laws and heuristics, so
it’s not engineering. As a craft, those who have the skills and knowledge
should be respected, appreciated, and rewarded.

I dispute the claim that “Agile is designed for and by consulting firms
that are marginal”. Some of the biggest early proponents of agile were
developing in-house systems for Chrysler. My friend and I had independently
discovered several agile practices before the term “agile” was being used,
while working for a company that built an operating system. The practices
which just made sense to us included: Iterative development, automated
testing, refactoring, and pair programming. I should also point out that
Linux was developed agilely.

The author claims “Under Agile, technical debt piles up”, and again, I’ll
say that there is no reason that should happen in agile any more than in
any other approach. Waterfall tends to lock designs in early, creating
brittle code, and then rushing the product out the door with bugs.
Chaotic/cowboy coding tends to result in vast piles of spaghetti code.
Those problems aren’t inevitable in any process, but tech debt is *always*
a risk.

Through automated testing, heavy refactoring, pair programming and/or code
review, and iterative development, agile provides the tools to reduce
problems with tech debt. I worked on a Java application from 2001 through
2015, and despite all those years of purely agile development, the code
remained relatively clean and maintainable. In 2014, we completely rewrote
the UI to use a different framework, and it only took a few months. They
are still adding significant new features to it, with relative ease.

I find this statement curious: “Agile is just one mindless, near-sighted
‘sprint’ after another: no progress, no improvement, just ticket after
ticket after ticket.” I agree that it is one sprint after another, and one
ticket after another. However, for me it is the opposite of “no progress,
no improvement”. It is visible progress with almost every ticket (because
tickets, or stories, are user-centric). It is visible progress with every
iteration, as opposed to other approaches where you can go 6 months between
releases.

I’m not sure about the career development concern. The claim that “I was on
a scrum team” shouldn’t be equal to “kick me”, and I doubt it is for most
hiring managers. When you apply for a job, hopefully you can point out
specific innovations you came up with, specific features you developed or
improved, areas where your code reviews were vital, examples of mentoring,
etc. Being a grunt on a waterfall team is certainly no better (and I would
argue is worse because you couldn’t have been involved with design,
requirements, etc.)

The next claim by the author is ridiculous: “Scrum is sold as a process for
‘removing impediments’, which is a nice way of saying ‘spotting slackers’.”
Speaking as one whose job it is to remove impediments, that is completely
wrong. If that’s how your organization works, it is definitely not doing
Scrum, nor agile. The author then goes on about “constant surveillance”,
which makes me feel bad for how he has been treated. Again, if that’s
happening, it’s neither scrum nor agile. Daily checkins are an opportunity
to reach out for help; an opportunity to describe the cool thing you just
finished; an opportunity to figure out what you should work on next.

I agree with parts of the “whiskey goggles” effect, including that one goal
of agile is to raise the performance of average developers. I think that
generally in the industry, high-performing programmers are underpaid (and
under-appreciated), and low-performing programmers are overpaid. But I also
think that prima donna programmers are overpaid. Programming is a team
sport, and anyone who doesn’t realize that is likely to cause problems for
the team. I would rather have a bunch of 8’s on my team than a bunch of
4’s. But I’ll always take a 4 with a good attitude over a primadonna 8 who
might refuse to teach the 4’s anything, or refuse to do some QA when the
team is in a bind, or who refuses to believe that they might have anything
left to learn.

The author refers to scrummasters as “aspiring demagogues”, which I have
trouble even understanding. Then he says that “Agile and Scrum glorify
emergency”, which if anything is the opposite of my experiences. He tries
to align agile with “scientific management”, when the truth is that agile
is much closer to being a rebellion against scientific management.

The author’s closing paragraph begins with “It’s time for this culture of
terminal juniority, low autonomy, and aggressive management to die.” To
which I say AMEN! Yes! And then I immediately claim that agile is, in fact,
a remedy for terminal juniority, a complete cure for low autonomy, and is
incompatible with aggressive management.


[1] https://en.wikipedia.org/wiki/No_true_Scotsman




Kevin Smith
Agile Coach, Wikimedia Foundation


On Wed, Oct 5, 2016 at 11:36 AM, Joaquin Oltra Hernandez <
jhernandez at wikimedia.org> wrote:

> Hi!
>
> Some time ago I found a couple of articles from engineers discussing their
> opinion on scrum. At the time I found that many of their arguments
> resonated with things I was feeling in our work.
>
> Max saw the links and suggested chatting about them, so I've thought I'd
> post them to tpg to try and spur some discussion.
>
> As scrum masters and fans, it is going to be easy to feel attacked by
> these articles, so if you know you're going to be affected, it is better to
> not read them.
>
> I am genuinely interested to learn when Scrum is not a good choice. As we
> know in engineering, there is no silver bullet, and it is very important to
> learn about the trade-offs and the adequacy of solutions to different
> situations.
>
>
> Without further ado:
>
> Why “Agile” and especially Scrum are terrible – Michael O. Church
> https://michaelochurch.wordpress.com/2015/06/06/why-agile-
> and-especially-scrum-are-terrible/
>
> Why I'm not a big fan of Scrum
> http://okigiveup.net/not-big-fan-of-scrum/
>
> _______________________________________________
> teampractices mailing list
> teampractices at lists.wikimedia.org
> https://lists.wikimedia.org/mailman/listinfo/teampractices
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.wikimedia.org/pipermail/teampractices/attachments/20161005/ff34862d/attachment-0001.html>


More information about the teampractices mailing list