Joel Spolsky is wrong about my work

In a recent podcast, Joel Spolsky makes comments that make clear his lack of knowledge of what I do and what I say. His work has not afforded him the opportunity to evaluate the quantity or quality of my work as a programmer. The second edition of Extreme Programming Explained, Implementation Patterns and my recent work on Responsive Design are not checklists.

It is ironic that he tried to use a phrase I coined, “You aren’t going to need it,” to dismiss my approach to software development. If he needs a target for a rant, perhaps he should re-consider his own need to rant. It does nothing to advance the state of our practice.

I would rather not respond, but if I don’t then public perception becomes what he says by default. He has worked hard to become famous, but he hasn’t figured out that along with notoriety comes responsibility. He is a bright, experienced guy and certainly capable of more accurate, thoughtful, and constructive conversation.

59 Comments

Timmy JoseFebruary 3rd, 2009 at 11:06 pm

This appears to me to be more visceral than intellectual. Could you please come back with real logical counter-arguments? That would not only be useful but also a better way of responding to such a scathing attack, which, unfortunately is only increasing in today’s software world.

Kent FenwickFebruary 3rd, 2009 at 11:33 pm

Hi Kent,

I heard this podcast and was saddened by the hostility too.

I have a great deal of respect for you, (The most famous Kent :) ) and my respect for you has only increased by how you handled it.

It is amazing how after one podcast, the buzz can shift and something essential like TDD can be seen as unneeded… it’s really scary.

Thanks for responding so politely.

Take care,

Kent

KevinFebruary 3rd, 2009 at 11:33 pm

Could you say more specifically what’s wrong with Joel’s comments? To me they seem pretty standard for someone who opposes 100% test coverage.

Greg SidelnikovFebruary 3rd, 2009 at 11:54 pm

Let me also add that it is meaningless to read a book about a certain thing, if the reader has no experience with it — because without experience we cannot comprehend the context.

Kragen Javier SitakerFebruary 4th, 2009 at 12:01 am

What did he say that was wrong, and what is the truth? If you don’t directly contradict him, it won’t help people who listen to the podcast later on, and he can’t rebut you if you’ve e.g. misunderstood what he said or made a mistake yourself.

There are some comments about this on Reddit at http://www.reddit.com/r/programming/comments/7uq8o/kent_beck_joel_spolsky_is_wrong_about_my_work/ but nobody has been able to figure out what, exactly, you’re arguing with.

Giulio PiancastelliFebruary 4th, 2009 at 12:19 am

Please consider editing the post to add a link to the specific Spolsky’s podcast. “In a recent podcast”, OK, but what if I want to dig it out? Which podcast, exactly?

abcFebruary 4th, 2009 at 12:32 am

Who cares?

Tane PiperFebruary 4th, 2009 at 12:45 am

I’ve always taken him with a very large dose of salt. He seems like the type that likes to talk about his beliefs to anyone who will listen, and try denounce anyone he doesn’t agree with – he’s like the developers church of scientology. I’m glad to see you’ve stuck up for yourself

Jason GormanFebruary 4th, 2009 at 12:49 am

I’m not sure whether Joel, who’s no stranger to publicity, is just stirring things up to get a reaction from people like yourself and Bob Martin. But, amongst the developers I know – and I know a few – this ill-judged attack from him has painted him in a less-than-flattering light.

if there was any doubt before, there certainly isn’t now: the guy is not a reliable source of advice on programming. I’ve been saying it for years, but I guess he had to say something really stooopid for a lot of others to see what I see – which is a nice enough guy who just got lucky.

YHVHFebruary 4th, 2009 at 1:14 am

Like, whatever dude.
He said, “don’t blindly follow x”
She said, “don’t blindly follow Joel”
STFU

Tony MorrisFebruary 4th, 2009 at 1:24 am

You would rather not respond… and you didn’t.

Tara SimpsonFebruary 4th, 2009 at 1:37 am

A balanced, constructive, eloquent and above all, mature, response. Well put.

JH ChristopherFebruary 4th, 2009 at 2:08 am

Responsibility? For what? That really is a bizarre statement considering that you have helped engender a cult movement costing millions of man hours every year for virtually zero benefit. You too have worked very hard to become famous, make of that what you will.

JoeFebruary 4th, 2009 at 3:45 am

You know, I haven’t even read what Joel said, until you brought it up. Now I’m going to look out for it, and read it up, but by the amount of douchebaggery you display already here, I’m pretty convinced he’s right.

web developmentFebruary 4th, 2009 at 3:46 am

Lets forgive Joel
To err is human :-)

JoeFebruary 4th, 2009 at 3:55 am

btw. you should always reference what you do not agree with http://www.joelonsoftware.com/items/2009/01/31.html

John JonesFebruary 4th, 2009 at 4:57 am

Yeah, he sounded a bit off in his comments!

RT
http://www.real-privacy.us.tc

Brock LesnarFebruary 4th, 2009 at 5:20 am

Joel is a good guy. Like all young turks his ego occasionally gets the better of him and he says something stupid. We’ve all done it.

But he’s a good guy… :)

AprilFebruary 4th, 2009 at 5:40 am

He, also, doesn’t understand that there is an old soul encapsulated in your young body. Your goals in life have always been based on progress and helping others. I believe in your work as do so many others.
Your response to him was mature and needed.
I

ShawnFebruary 4th, 2009 at 6:23 am

I am not sure Joel’s popularity had much to do with the content of his message- only its reach. Saying that you can’t defend your arguments because he is too popular seems a little weak- why not use some examples? Have their been any studies involving your techniques and productivity?

JeremyFebruary 4th, 2009 at 6:43 am

Whose this Joel guy?

black bellamyFebruary 4th, 2009 at 6:46 am

neither of u r famouse

Stephen WaitsFebruary 4th, 2009 at 7:14 am

You are being too kind Kent. Joel is a complete moron. Yet, for some reason there’s a herd of folks who listen to him, maybe because he yells the loudest.. who knows.

Alistair CockburnFebruary 4th, 2009 at 7:51 am

Hi, Kent,

For the little it may be worth, you’ve long had my admiration for the way you absorb unwarranted attacks. Agile development wouldn’t be where it is if you hadn’t taken on the world single-handed with XP in the late 90s.

Everyone has a snapping point or a brittle day, which will then be misinterpreted along with all the tidier things that preceded it.

Keep going with where you’re going.

All the best – Alistair

Ben in BostonFebruary 4th, 2009 at 8:04 am

I actually listened to the podcast, and he may have been out of line to say that people that think in a particular way don’t write a lot of code. However, I didn’t hear that as a personal attack on you, I mean, he just barely mentioned you in passing.

In short, get over yourself. Not everybody thinks of you as much as you do.

SKFebruary 4th, 2009 at 8:31 am

From your third paragraph (“I would rather not respond, but if I don’t then public perception becomes what he says by default”) it sounds like you’re going to write a response to Joel’s claims.

I look forward to reading it.

AlexFebruary 4th, 2009 at 8:58 am

I haven’t had real exposure to extreme programming, but I’d be curious (and appreciative) of you to point out specifics of where he’s wrong. Admittedly, I read the transcript of that podcast and thought, “He’s right. That’s an awful idea.”- especially around the “employeesalary object” paragraph. I subconsciously took it on faith that he knew the subject well enough to have some degree of authority on railing on it. And hey, my bad. But I’d like to know what he was wrong about in the points he made, without picking up a book and learning the whole methodology first.

This is coming from a developer who likes Windows, so take it with a grain of salt, but I think a lot of developers have learned to be mistrustful of anything with an evangelizing userbase. Extreme Programming has a lot of people who evangelize it, and I suspect Joel probably got his understanding of it from one of the evangelizers who tends to see guidelines as doctrine, to the point of following it even in fringe cases where it gets in the way of the big goal (ie, that EmployeeSalary thing- Correct me if I’m wrong, but that screamed “bad idea”). So he thought, “They’re all a bunch of architecture astronauts, who don’t actually ship software, just over-engineer it.” and ranted accordingly.

MikeFebruary 4th, 2009 at 9:53 am

If it makes you feel any better, I tend to assume anything said in public by anyone on the subject of software is likely to be crackpot, at least until there’s significant evidence to suggest otherwise.

joranFebruary 4th, 2009 at 10:09 am

it says much that your response is unspecific and personal. with the lack of formal studies judging the quality of what you’ve done, we’ll never know whether your life’s work really had the positive impact people believe it did.

what we do know, from what joel said, is that he values test driven development, but he values quality software more.

that is to say, he sees worth in dogma and best practices, but he sees much greater worth in situational awareness and freedom from the hubris of software development

and again, it says much that your own fixation on your beliefs are so fragile as to be insulted by joel’s value statements

Duncan McGregorFebruary 4th, 2009 at 10:35 am

I was saddened by Joel’s comments, because some of the Smalltalk /XP ways did seem to be rubbing off on the .net guys recently, and Joel is right often enough to be influential. This criticism though does seem to have come from ignorance rather than reason – it’s clear that Joel has no particular malice, is telling it as he sees it, but that he doesn’t see it particularly well. I hope that the result of his comments is that someone (I’ve offered ;-) is able to explain SOLID and TDD on his show.

I still consider XP the only starting point for a software team. TDD made me the programmer I am today, and I’ve passed it on to enough people to know that it works for others as well. Your books, and those of Uncle Bob, are the ones that I go back to when I need cheering up. I’m sure you’re not perfect, but you’re the best we’ve got.

Duncan Mc^Gregor
“The name rings a bell”

Jeffrey FredrickFebruary 4th, 2009 at 1:36 pm

There’s nothing new about Joel spouting off about stuff he doesn’t understand because he’s never tried it. Several of the XP practices have been the targets of rants over the years.

I think Joel has great insights where he has first hand experience but his speculation is as mixed as anyone else.

Justin GrantFebruary 4th, 2009 at 2:23 pm

Kent : How has Joel dismissed your approach to software development ?
In the podcast all he does is say that the compulsory use of 100% unit test coverage is not practical or helpful. This is only part of your approach to software development, hardly all of it.

Anyone that’s been through a successful start up will attest to this being true where time and money are much scarcer. Somehow they still manage to make lots of money and write incredible software without touching test driven development.
There are aspects of XP used(they are called common sense and experience in these circles) and tests usually are of the integration type but are not automated. There are very good reasons for doing this manually.

For contractors with clients that have deep pockets, uninhabitable code bases lying around and where innovation is not the name of the game but keeping legacy systems barely running often is. I’m sorry for you, but there are no silver bullets for that kind of situation. Managers however will push anything to keep the high hourly rates on those time cards.

AnonymousFebruary 4th, 2009 at 3:00 pm

I view your work as a blunt instrument used to subjugate programmers around the world. It’s good to hear an industry leader start to tear down the demagoguery you’ve constructed.

Steven A. LoweFebruary 4th, 2009 at 3:37 pm

Joel’s statement about TDD being ‘all about 100% code coverage’ is dead wrong and should be retracted. It is, unfortunately, a common misunderstanding of the method by those that can’t be bothered to actually read a book or an article ;-)

Seriously, it would be best to quote what joel said and respond to it rather than allude to it and chastise joel in general – he (and others) are unlikely to learn anything from that.

Steve ConoverFebruary 4th, 2009 at 5:40 pm

I think you should engage with him. He makes some interesting points, and while possibly not entirely fair, it might be interesting to hear some back and forth on substance between the two of you.

In any case, the fact that you seem to have taken this so personally (even not linking) is telling, and your silence on the issues just serves to lend a little more credibility to what he says.

-Steve

AnonFebruary 4th, 2009 at 7:46 pm

> a phrase I coined, “You aren’t going to need it,”

Trivial patents anyone?

John BenderFebruary 4th, 2009 at 7:52 pm

So YOU’RE the guy who came up with, “You aren’t going to need it”.

To wikipedia!

Alvin LuiFebruary 4th, 2009 at 8:25 pm

Kent Beck, I have to say that you can easily ignore the comments made by Joel.

1) It’s clear that he doesn’t have a strong grasp of the concepts relating to TDD, unit-testing and SOLID. Simple example, he misunderstand the principle of separating concerns from a class with his Employee salary example. That was the idea of cohesion, OOP 101.

2) Nothing said by Joel can have even a minute affect on all the positive work and “energy” that you have brought into the software industry. Look at his accomplishments vs yours. Enough said.

Sam LiuFebruary 4th, 2009 at 8:28 pm

36 responses and no follow up by kent…

JimFebruary 5th, 2009 at 5:49 am

Joel writes well. Really well. That means he gets away with saying some boneheaded things from time to time. Unfortunately because whatever he’s said (written) in such an engaging way many of his readers believe it.

I read the transcript from the link above but didn’t listen to the podcast. Clearly, he shows how uninformed he is on his discussion of both testing and SOLID, likely even OO in general. Regarding testing, he really should have read the dissertation at whendoitest.com before opening his mouth like this.

Kent, don’t let it bug you. Stay above it. Most people who have a clue realize he’s talking out of his rear-end about something he’s clueless on. I bet if he had sat down to write a blog post about it and done some research he never would have said those things. Or maybe he would have, but at least hopefully have checked his facts and not mislead his audience.

For what its worth I’ve been a fan of your work for a long time. What I’ve learned from Smalltalk Best Practice Patterns and the XP books have had a major impact on my career and I still highly recommend them to fellow developers all the time. I thank you for that.

If you do post some kind of rebuttal, please don’t stoop to his shock-jock of the software world level but keep it factual, informative, educational, and engaging as you usually do.

Kind regards,

-Jim

Curtis CooleyFebruary 6th, 2009 at 12:25 pm

Joel has found a way to build software that works for him, and just like XP, Scrum, Agile, RUP, Waterfall, and any other development methodology you can think of, won’t work for everyone. That I understand. What I don’t understand is why he continues to attack anything not his way instead of just better explaining his way. How it works and why it works.

When I started programming and wanted to learn to do it better, I found books and articles by Kent Beck, Martin Fowler, Robert Martin, Steve McConnell, Alistair Cockburn, and yes, even Joel Spolsky, among others. I gave up on Joel first. Kent’s TDD book, next to Refactoring, is hands down the most influential book I’ve ever read.

Thanks, Kent!

BenFebruary 6th, 2009 at 2:44 pm

Did Joel actually say “suck it” or was that some impersonator?

KentBeckFebruary 6th, 2009 at 3:39 pm

Thanks for checking. I was naive, but the comment looked legitimate (real email address and icon) so I approved it. The IP address is owned by Princeton University. I should have checked with Joel first. I’ll do that now and delete it if it isn’t genuine.

KentBeckFebruary 6th, 2009 at 5:01 pm

I owe Joel Spolsky an apology for allowing a crude comment to be posted in his name by an imposter.

[...] ignorant rant about Test Driven Design (TDD) resulted in some good after all. Kent Beck posted a brief response to Joel, which was pointed out in a mailing list discussion about the issue. But that’s not what I [...]

dauchandeFebruary 11th, 2009 at 6:33 pm

I hope this doesn’t reflect badly on those of us who are .net developers, some of us have the maturity to realize that there’s still a lot we can learn about the process of developing software.

Here’s one developer that is glad for the instruction received by you, Uncle Bob, Ron, And and Martin, please keep it coming, at least some in the .net crowd still want to be better developers.

Thx for all you do Kent.

Bjorn ReppenFebruary 12th, 2009 at 2:21 am

Could you please explain where and why you think Joel is wrong?

KentBeckFebruary 12th, 2009 at 10:02 am

Bjorn,

The reason I don’t reply in detail is that Joel’s original statement was that it was a toss off comment, not a reasoned, detailed critique of the design style I advocate. If people want to know what I think about design, this site, my books, and my public presentations already provide a clear picture.

Mark CorkeryFebruary 12th, 2009 at 3:08 pm

Joel certainly seems like he hasn’t given much thought to the impact of his comments.

I think his point is summed up with his statement towards the end fo the clip that “The way real software works is that you create these very imperfect things, and they work great. They really do. And then you have a little problem, and you go and you fix the little problem, because it’s code, and you have an editor, and you edit it.” I think this is fine when you are working on small projects and maybe have plenty of time to fix these problems in between gearing up for the next release. Without a certain level of quality, how can you predict the level of support needed for your code?

I certainly also think he underplays the power that a comprehensive Junit test suite gives you “the ability to change things in their code with the confidence that they don’t break anything”, this is certainly not some throw away thing.

Stephen RylanderFebruary 12th, 2009 at 8:19 pm

Thank you for making such a controlled reply Kent. I almost fell out of my chair when Joel named not only Robert C. Marting but you! I honestly couldn’t believe my eyes – I put a lot of water in your style and the research you do. Yourself and Martin have these practices and techniques because the real world has shown they work and has a need for them. The StackOverflow podcasters want to do things the way they want and then simply back them up by “this is how I feel”. It completely ignores the body of knowledge that supports softwre engineering today.
I don’t mean this to be decisive, but when I was a younger programmer I read Joel’s site; but as I’ve matured I read Beck, Martin and Fowler.

Kent – you are truly awesome.

JaxFebruary 16th, 2009 at 2:10 pm

T’is just fanboyism. I respect the methodology of Agile development and I have read a fair bit on the subject including one of yours and Mr Cockburn’s books (both of which were really cool to read btw).
However this information doesn’t stop me from disliking some that take the word as gospel, fanboys that apply the content without the theory and largely ignoring the caveats.

One might sit there staring at an array of ExpectedException(typeof(ArgumentNullException)] tests and think…. is this really necessary? Does this confer a benefit greater than that of writing such a test?
Its this type of diminishing return that signals that some people don’t know where to stop. I speak after just removing some interfaces from a design that required transactionality across a number of objects. Their creation was misguided and done blithely. Internal classes were all that were required at this stage.

These people who implement the rules blithely encounter people like Joel which makes Joel comment like this. But he is mistaking their words for yours and this is probably where the misunderstanding lies.

In practice I find that quite a number of developers create unit tests that are redundant, expose internals horribly or just don’t test things properly. Its output like this combined with the selling of books and hype that create skepticism that turns into such criticism.
The huge wave of Agile in the early to mid 2000s were the precursor of a backlash of some sort in the very same way the US swings between Demopublicans and Republicrats.

I would trust that if the people in question were to meet personally the disagreements would not occur. They occur due to the mis-appropriation of the knowledge by fanboys, people assuming that the fanboys are carrying the message of the original author when they may have made their own modifications, abbreviations or lost some in translation.

[...] recent kerfuffle gave me a chance to observe today’s web in action. Here’s what I [...]

Slava ImeshevFebruary 19th, 2009 at 8:38 pm

Hi Kent,

Don’t bother, really. Joel is a good writer, not a programmer. He just not worth it.

Regards,

Slava Imeshev

Nick TulettApril 24th, 2009 at 6:20 am

Having read the transcript (not listened to the podcast), Joel seems to accept that change happens, so the requirements change, so the code changes – oh, but *then* it’s too much effort to update the unit tests?

WTF?

[...] JUnit Max: “In a recent podcast, Joel Spolsky makes comments that make clear his lack of knowledge of what I do and what I say. His work has not afforded him the opportunity to evaluate the quantity or quality of my work as a programmer. The second edition of Extreme Programming Explained, Implementation Patterns and my recent work on Responsive Design are not checklists. …I would rather not respond, but if I don’t then public perception becomes what he says by default. He has worked hard to become famous, but he hasn’t figured out that along with notoriety comes responsibility. He is a bright, experienced guy and certainly capable of more accurate, thoughtful, and constructive conversation.” [...]

Stephen SounessSeptember 24th, 2009 at 2:56 pm

I see that this blog post is quite dated, but I came across it a few days ago after some mention or other on Twitter.

Now I see that Joel is having another dig at unit testing on his blog entitled, “The Duct Tape Programmer”.

Uncle Bob Martin’s response:
http://blog.objectmentor.com/articles/2009/09/24/the-duct-tape-programmer
was followed up by a comment that I found most interesting:
“never take software advice from a bug tracking system salesman”

TDD isn’t about testing, it’s about the way it makes you think about how you design your system and reduction in maintenance cost that stems from that.

[...] (to name but a few) I came up with some very well known writers on these subjects: Martin Fowler, Kent Beck and my own personal God Jeremy [...]

Nuno LopesJuly 27th, 2010 at 2:59 pm

Having a bit more then 20 years of experience writing software it just led me to conclude that I know very little about the subject. I’ve read hundreds and did hundreds and failed some.

Having said this, indeed, most of the people that actually shipped features faster then any other don’t know who Joel his, who Ken Beck his, Martin Fowler etc etc. Know little about TDD etc etc. So this just might be telling us something about it, they are just smart and skillful.

Usually software development advances start with a great idea gathered from the experience of one or two people. An idea that worked for these people in particular circumstances. Then depending on ones garble ability it may gather some followers. Usually we hear about successes, rarely failures. Followers try to justify failures due to malpractice. After awhile ideas are sold has packages of concepts. “If you do this you will be great”. This sells conferences, books, training etc.

If week keep our focus at the core of ones idea, if it is any good will help us to create our own ideas to handle our own situations. It is easy to keep focus, just switch off the soft dev radio and do some work.

As an IT consultant working for fortune companies never had the opportunity to use TDD. The reason why I never got excited is because proving that a software works in code requires has much effort and thought has coding the software itself.

The problem is that quite often I’m not payed to write the software and its inverted version. User tests are usually just enough.

a = b
assert.equals(a,b)

Sometimes this is necessary, sometimes it is not.

On another note I think it is only natural that writing tests helps write better software. It is like someone writing the same book twice … then again the second book may not come has good has the first one. Should this come as a surprise?

In the world I live usually we can only write a peace of code once. Rarely we have the opportunity to write it twice. Three times, no way.

Here is a tip: Exercise designing and writing code once and bug free. That is the ultimate time saver. That is the skill speed deamon’s have. Like any skill it can be learned.

Cheers,

Nuno
PS: By the way. I am a programmer and I would love to do TDD with 40% coverage. If you have a project where customers have pockets deep enough or software is critical so that I can use and learn it fully send me an email. Then again I might not be experienced or smart enough to be of help.

I wonder how TDD sees the eventually consistent ideas. Should I test for inconsistencies, consistencies or both?

φωτοβολταικαApril 18th, 2011 at 5:29 am

I think his point is summed up with his statement towards the end fo the clip that “The way real software works is that you create these very imperfect things, and they work great.