Anti-agile hatemail
Today I received through the contact form on this blog a hate-mail from a guy who called himself 'Ryan'. Ryan used a fake, non-existing email address so the only way to respond to him is via my blog, hence this post. Let's look at the email first:
From: ryan@notanoob.org
Subject: (Frans Bouma's blog) : anti-agile
Your post on Jeffrey Palmero's blog is laughable. He is a smart and successful person and is involved in practices that you do not understand. Your post makes you look like a moron. You obviously have a lot to learn about agile development.
The ONLY thing that works on large .net projects is the platform independent knowledge that the java / C++ / small talk community has learned over the past 20 years. I know because I work on a 3 million LOC, 200+assembly .net product every day. MS built the best development platform, but what MS teaches is crap. In the end, the culture of the development shop is what makes or breaks it. Agile practices focus on that culture. Tools and processes are secondary.
One day when you work on a real app that is more than 100K lines of code maybe you'll understand. You should not venture outside of the realm of your fan base, which is newbie developers that have a background in ASP.
I would love to see your product choke on several of our 100+GB databases.
Thanks.
My post about stored procedures back in 2003 generated the
fair share of hate-mail in which angry DBAs and other stored
procedure supporters wished me all kind of bad things and
told me I had no clue whatsoever. I think it's related to
speaking up in public and some people apparently can't deal
with another person's opinion very well.
This particular email illustrates something I can't
understand: why does someone get so angry about a random
reply I've written to someone's weblog that that person goes
to this particular blog, and types in the text above? What's
the goal? To tell me how the world really works? It's never
a pleasure receiving this kind of email, and it surprises me
every time why a person thinks 10 minutes of his/her
precious time is better spend on writing a hate mail than
writing a mail which could open up a mature discussion so
ideas/thoughts/arguments can be exchanged and
both parties participating in the discussion can
learn from eachother.
Let's address the various topics which are mentioned in the email. To start, I have no idea who this 'Ryan' person is, and I definitely don't know which post on Jeffrey's blog he's referring to. I don't doubt Jeffrey is smart and succesful, and I have no problem whatsoever with Jeffrey at all. Too bad Ryan didn't include a link so I could have elaborated what I wrote.
Ryan then goes into show-off mode and claims he works on a
200+ assembly, 3 million lines of code project every
day. I'm sure he wrote that all by himself, but let's not
focus on his work. The gem is in the line 'MS built the best
development platform'. I'm sorry to bring it to you, Ryan,
but VS.NET and the .NET framework are build with hard-core
waterfall practises: cleanroom-design, hard-core specs are
written out to the letter with every tiny detail explained,
then the development of code is done, and after that the
long process of testing and weeding out bugs starts, and
after that: shipping.
Not to propagate waterfall, as for the gazillionth time:
I don't like waterfall, but it's simply true. Because
Microsoft uses this practise (and most other big corporates
do who ship large products), it's very hard to get things
changed once the hard-core spec phase is over. Most MVP's
who have ever tried to give feedback to a product team, even
more than a year before shipment know this the hard way:
feedback is never accepted once the specs are finalized.
What Ryan apparently doesn't understand, is that I'm not
anti Agile, why would I be 'anti'?. The 'Agile' movement,
which first was meant to be called 'Adaptive', is actually
simply a movement which propagates
'being adaptive to change'. As a software engineer I
can't understand how someone can be against that:
being adaptive to change is what's it all about. However, if
I state that I think (thus which is a personal opinion)
something is an oversight, e.g. that with just a bunch of
unittests you create a false sense of correctness, does that
make me anti-agile? If so, I would be anti-'adaptive to
change', which isn't the case.
If I look at how I wrote LLBLGen Pro, which spans more than
350,000 lines of C# code btw, I always tried to focus on
that: be adaptive to change: make it modular, make it
flexible. We're a small company. I didn't have time to write
out the full design document. So I didn't: everything is
build with vertical slices, designed per feature, not BDUF.
You have to, if you have to design an entity object model to
store mapping data, entity definition data, database design
data, the full designer to manipulate all that, for every
database a driver to obtain meta data, an engine to merge
changes into object graphs, the task-based engine who can
execute tasks for you to generate code, create folders etc.,
the DSL to write the templates in, the LL(1) parser for the
DSL, the code generator engines (there are more than 1), the
runtime libraries and of course the templates. Ryan, do you
really think I designed that all up-front to the fine
details and then started coding? Think again.
Ryan then explains that once I'll work on a large 100K+
project, I'll understand. Sure, I did that many years ago
already and till today, I'm glad I did so. So I'm not
entirely sure Ryan really means 'Agile', I think he meant
'TDD' and that one (in this case: me) shouldn't speak about
the fact that having solely unittests is not always a
good idea if you want to have correct code.
He then goes on to bash the readers of this blog and the
fans of our work, and with that, I again wonder...: why?
What's the point, do you, Ryan, really think the world gets
better with writing these below-the-belt-flames to someone?
Aren't we all software engineers working on software, doing
the best we can? If so, then why the hatred?
The last thing I want to address is why he apparently would,
like to see LLBLGen Pro choke on databases with a lot
of data? It's not hard to make any system choke on
large volumes of data, as fetching large volumes of data
takes time. Fortunately some large companies use our work on
very large databases (1000-2500+ tables) and it does fine.
Would that be because it's written with 'being adaptive to
change' in mind? Not sure. But as you, Ryan, seem to think I
have a lot to learn about software engineering, it must be
luck, right?
Come on, Ryan, whoever you are. Why not have a good
discussion with arguments instead of flames? The world knows
already enough hate and anger, we don't need to create
more.
. The 'agile' movement sometimes get negative press of
being full of hate. I don't think Agile, the agile movement,
TDD are about hate nor do I think the persons participating
in that movement are full of hate. I think they're
passionate about the movement they're in, like other people
are also passionate about the movement they're in. So, Ryan,
do yourself and the movement you're passionate about a
favor: next time, please start the discussion like an adult:
with proper arguments so we can have a proper debate between
two professionals, OK?