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:

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.


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?


  • Hi,

    Unfortunately, being a public person ( or ventilating in public... ;) ) comes with some downsides, like this one. Some people tend to look at things negatively. I try to look at things more like you do in this post: how can we learn and maybe improve ourselves or our ideas based on a certain situation.

    I'm curious if Ryan will reply. I have a feeling he won't, but let's not rule out the possibility. I'll be happy to join the discussion.

    Oh and by the way Ryan, I've been developing in 'the real world' for the past 9 years, and I have NEVER written classic ASP. ;)

    Kind regards

  • Yeah, Frans, I agree. His email was totally uncalled for, not to mention idiotic in its content.

    I imagine that his passion is the same as that of a fan of a particular football team or of a particular type of lager.

  • Although i disagree with you on some topics, i can't understand people like Ryan. If you don't agree with someone's opinion, you don't have to behave like an idiot. Also, stating that there is 'one true way' to develop software tells me that this is a person without much experience on different types of products. Working 20 years on same stuff doesn't really give you 20 years of experience.

    Personally, i work on project consisting of more than 900 executables, and although i am big fan of agile practices, this project could never be done without more strict development process. Not to mention that trying to convince customers like GM to use agile methodologies on such a big project is not an easy task.

  • I'm glad Ryan made me come to my senses and realize that I'm a newbie.

    It's even worse, I don't know ASP.

    Thank you Ryan for this enlightening insight.

  • I think this is quite a bit different than the stored procedure vs parametric query issue. My recollection is that that was a technical issue where a "Name" didn't seem to understand how parametric queries perform.

    The Alt.Net stuff is more of a culture issue and you will get the same kind of range of reactions that you would from any culture clash. The difference between Palermo's response in the comments and the email you got is huge.

  • Andrew: I think I agree with your point about the procs issue.

    I too agree with the fact that, what I recall from memory as I haven't tracked down the particular post yet, Jeffrey always has been polite and the discussions I had there have been too.

    I'm not sure if it's related to per se, though indeed more related to a clash of 'my way of doing/living/thinking is better than yours and I don't like that'. I don't/won't/didn't want to make this into a 'look, agile is full of evil' kind of crap, because that's not the intention. I just thought that ignoring this would not be the signal I wanted to give out.

  • So a little yapping chihuahua tried to get tough with a pitbull. I love all the cheesy insults and of course he has room to talk in each area b/c, uh, he says so. One thing though that I might be able to explain - you ask why he would want to see LLBLGenPro crash. It's b/c he can't handle you having different opinions than him. The success of your product validates your philosophies. You have a successfuly blog and an extremely successfully product - he may also but I tend to doubt it. If your product sucked he'd be pointing out all of its flaws and attributing them to things in your philosophy that he disagrees with. But he can't do that. Accordingly, he's utterly impotent to make any valid point that he's reduced to junior high school insults and name calling.

    BTW, I'm starting an informal poll here - who here is a newbie dev with a background in ASP?
    -Not a noob - no background in ASP
    (My guess is very few noobs compared to more senior devs and a relatively small amount of ASP devs)

  • I think ryan is really showing off how much he knows about by saying that he is working on that 3 million lines code.

  • As a proponent of Agile I can say that I think some people confuse XP with Agile. You can be Agile without being full blown XP. It's not the only game in town. And that's coming from a big TDD proponent (me).

    All in all, Ryan is a pretty easy person to read. I'd be willing to bet money that his first Agile project was his first project which paid rigourous attention to high-level and detailed design (probably by way of XP practices such as TDD). Thus, in his mind, those practices equate to success.

    He hasn't gone far enough down the path to realize that it's not an SDLC that allows you to handle large volumes of data, it's a well-fitting architecture (aka high-level design) with a solid implementation (detailed design and code). The SDLC is simply the context-sensative journy (sensative to the project, team, stakeholders, etc) which results in the architecture and implementation artifacts we call an application.

    While his email is totally uncalled for, it's not really surprising to me. I see Ryan's message as a symptom of professional puberty. It's about as shocking as a 13 year old telling fart jokes or arguing with his parents about doing chores. After he matures a bit more, he'll get over it and become a more productive member of society.

  • I thought that this species of developers with large ego and who can only communicate on aggresive mode diseappered.

    Apparently it is just me that organize my life to not see them anymore.

    Good luck Frans :o) but make sure not to spend too much energy on this guy!

  • Frans, touche to a good and measured response.

  • Frans - I call them Agilist developers.

  • heh, by 'working on...' he actually means 'sweep the floors around the servers that run...'

    yah, sorry, nothing constructive to add, but look how easy flaming is ;)

  • Quote:
    > The ONLY thing that works on large .net projects[...]

    This is classic Golden Hammer-stuff! I figure the whole point of being agile is accepting that "one size fits all" does not exist in software engineering. So this statement is an extremely weird kind of paradox.

  • Just a thought - by spending time answering an obvious troll you lost time making other people smarter. Why at all answer stuff like this? Doesn't it make us collectively dumber as we loose time getting better? :)

  • Apparently all those developers working for NASA don't know how to create bug-free code. How did they ever get the Space Shuttle off the ground using a classic waterfall approach? Must've been pure luck - either that or it must be a really small and trivial application.

  • A lot of programmers go through some phase in their life/career, thinking there's only one (THE) way to do something (I did, anyway). I think being able to recover from that rather naive view is what makes you an architect in the end, instead of a frustrated geek...

    People like 'Ryan' don't bother me at all any more. They just exist, and I'm happy leaving them in their quest for the perfect piece of software. I think engaging them in discussion is pretty useless. But hey, never hurts to try.

    By the way, Frans, do you remember me from a certain Dutch IRC channel? Hi ;-)

  • its good to answer the questions asked by others.

  • miies... #Dutch? Or nl-coders? 'miies' doesn't ring a bell... sorry (but it's been more than 10 years or so.. :))

  • #nlcoders, and my nick wasn't always miies.. probably [me]shell or something lame like that ;-) Anyway, it's a long time ago.

  • I think part of the vitriol of the "only-Agile" crown might be psychological. Consider that anyone who has moved to Agile and TDD has moved, therefore they were doing things (in their own opinion) "wrong" beforehand.
    This means that any attack on "only-Agile" is attack on their own perception of truth and I doubt they want to feel like they're wrong again.

    I just wish that people took the best of both worlds, Agile has got a lot of really awesome ideas and techniques going for it but old skool styles like BDUF are still great techniques in certain scenarios, especially in terms of a spec between your company and a client's (managing expectations, justifying additional cost: "it's not in the spec").

  • Frans

    I agree with you. This is a purely ignorant response. BTW, I love the analogy that because you work on a 3 million line code base, that makes you a better developer.

  • Robby: ah, so asking questions about for example why post-its are used in 2008 to base a software project on (what if a postit falls off the wall during the night, do you have a backup ?) is immature and makes me look like a fool? :)

    If mr. Ryan had a reply to my post, he should either
    1) write a blog about how wrong I am with arguments
    2) post a reply in that thread and explaining why I'm wrong.

    Nevertheless, where in that post am I discussing things without backing it up with an argument?

    What I wanted to illustrate with this blogpost is that being critical about agile practises or better: the FUD that's spread by some agile advocates that it's a silver bullet, is apparently not allowed and one should first grow up and after that one MIGHT be entitled to speak up.

    That annoys me to no end. If I'm wrong, just illustrate that with arguments, and if I'm wrong in something, illustrating that shouldn't be too hard. But apparently people think it's easier to ignore mature practises and go the low-level route.

    And you know, Robby, I'm really sick and tired of all of it. I love my profession but I am close to the point where I'll simply give up on talking about software engineering principles in public except when it's directly related to my own work. I mean: why bother?

  • It would be a loss to all of us if you just quit talking about software engineering principles in public - But I would fully understand a such desicion. The psychological equivalent of "having a leak into strong headwind" isn't pleasurable, better to spend those hours on something more useful - or?

    Immature religious software engineers, or DBAs for that matter, will always be around. Most of them will get over it, some of them won't.

    I've long since finished my period of religious databaserelated convictions =) and enjoy your posts a lot!


  • Frans, the comments you made in the link I referenced above are reasonable and well-supported. They are *not* immature and do not make you look foolish.

    However, knowing what you wrote originally *does* matter. Is the link above the one to which you believe "Ryan" was referring? Perhaps the rest of the commenters above know, but I was surprised that apparently everyone agreed with your assessment without knowing what you said in the first place. Can you please confirm if you believe I identified the correct link? Thanks.

    Frans, what you said first does matter. I do not have a complete list of all of your public statements. If the link I identified was in fact the one to which "Ryan" was referring, than yes, his email is

  • Robby: Thanks for the explanation, I misinterpreted your previous post. Yes, I fully agree that it does matter what I posted which triggered 'ryan' to mail, it's important to have the full picture.

    I hardly reply to posts on jeffrey's blogposts, so it could be that post indeed.

    Thanks all for the replies and support :).

  • Frans, I agree with Ryan.

    Just kidding. It was probably just a crackpot or someone joking. Don't waste your time ;)

  • Once again, nice work. As you recall, I used to vehemently fight you as well on various topics. In fact, I was one of the people who fought hard against your stored procedure theories! Now... bring on LLBLGen Pro! It was just a matter of not understanding your position on things.

    Keep up the good work on defending sanity!

Comments have been disabled for this content.