As a creator of community content (no, I’m not likening the level of what I do to anything close to what Jeff and Joel have accomplished with StackOverflow), I’m willing to give the community content produced by others the benefit of the doubt. So I’ve been a long-time listener (from the beginning) of the StackOverflow podast.
When they waxed philosophical about the absurdity of unit testing your code, willfully ignoring concrete evidence to the contrary that clearly demonstrates the long-term value of coherent unit tests in ensuring your codebase doesn’t ossify and crack into a billion pieces over time, still I listened (even as I cringed and died a little inside when hearing such a declaration).
When they spoke from a well-defined position of near-complete ignorance about the lack of concrete value in the SOLID principles (considering them an interesting intellectual exercise for academics but without practical application in the ‘real world’), I kept listening despite evidence that their value system for what constitutes ‘good code’ clearly diverges from my own in significant ways (and again, I died a little inside as these two supposed ‘names’ in software engineering willfully ignored decades of experience of others in OO software engineering).
But after a year-plus of episodes, I’ve deduced that they are (nearly) all the same podcast and they all seem to follow about the same formula.
Witness the formula
Each podcast, there’s almost certainly an exchange that goes something like this…
Jeff: “We have some new StackOverflow news.”
Joel: “Great — what is it?”
Jeff: “We just implemented a new feature that….” (Jeff then continues for about 10 minutes explaining the complexities of the feature they have just built, the challenges of the problem they solved, how much research into the background of the programming challenge was needed, etc.)
Joel: “You didn’t need to do all that; all you had to do was…” (Joel continues for about 2 minutes explaining that all you had to do was flip this bit or that bit and the ‘massively-complex programming challenge Jeff is so proud of the team having solved’ would have been addressed with one line of code)
Jeff: “Its not that simple, you don’t entirely understand the details of the <insert problem here>.”
Joel: “You’re just wrong.”
…and my other favorite repeated exchange…
Jeff: “Those guys going on and on about unit testing everything aren’t living in the real world.”
Joel: “I complete agree, they’re clearly crazy.”
Jeff: “So in other StackOverflow news, we just solved this really nasty bug that we didn’t have any damned clue was going on in the system…”
After review, I’ve simply concluded that I have better things to do with that hour of my life every week and I’ll be listening to other podcasts that aren’t quite so repetitive and formulaic.
For the record, it’s not just you.
I’m a long time listener as well and this rings true for me too.
Well, that’s one more blog post I won’t have to write. 😉
Although I hesitate to comment on other peoples podcasts.
For further interesting insights into StackOverflow listen to Hanselminutes podcast 134 (http://www.hanselman.com/blog/HanselminutesPodcast134StackOverflowUsesASPNETMVCJeffAtwoodAndHisTechnicalTeam.aspx).
But then again, they managed to get StackOverflow up and running, and it is “working”.
@Pieter:
Yeah, I’m a regular Hanselminutes listener and so I did indeed also hear that one, but I’m not a very big fan of the only metric of success being “we got it up and working”. While that’s important (and arguably the most important, without which none of the rest matters much), I fear its a dangerous fallacy to think that “working software” is the only metric worth inspecting when measuring one’s success in one’s efforts.
As I think anyone who has tried to maintain anything someone built with much of the VisualStudio System.Tools.Draggy-Droppy stuff would have to agree, most of the cost of software isn’t in its writing or its first success but is in its maintenance, extensibility, and long-term lifecycle over the whole of its existence. Focusing exclusively on initial “it works” as proof of success can be pretty dangerous in my experience.
You know Stephen, this is something I’ve been thinking about lately and it seems like there’s two schools of guidance.
“Use your experience and judgement”
or
“Use your experience and judgement but here are the rules of thumb and theories that people with more experience and better judgement use”
I am not experienced, at all, I’ve been making an effort to program properly for less than 2 years. When I first made the decision to pursue proper design the TDD/DDD/ALT.NET camps were the ONLY ones offering guidance other than “use what you know works”.
Jeff and Joel might deem their own experience to be enough to (partially) ignore the TDD/DDD camps but the way they talk implies that everyone should and thats where I have a problem. I still make a ton of mistakes, but I make a heck of a lot less than if I just leaned on some sort of inexistent judgement that I’m supposed to pull out of thin air.
@George Mauer Jeff and Joel might deem their own experience to be enough to (partially) ignore
the TDD/DDD camps but the way they talk implies that everyone should and that’s where I have a problem
Interesting point. (Playing devil’s advocate here) Doesn’t the ALT.NET movement claim the same ? E.g if you’re not using the S.O.L.I.D principles, you’re doing it wrong. (and yes, I’m exaggerating here)
I haven’t listened to a lot of Stack Overflow podcasts, except for the ones about/with Uncle Bob and a few random others. (didn’t find them too interesting)
When Jeff said that quality doesn’t matter, I had to laugh. But it got me thinking.
@ Steve , but I’m not a very big fan of the only metric of success being “we got it up and working”.
I’m not a big fan of that as well, but I fear that it is true in the real world.
What makes a successful application ? As the answer to a lot a lot of questions, I think it depends. For Moe it might mean ‘the requirements changed and I was able to implement those changes in 3 hours without touching the existing classes’. For Curly it might mean, ‘I switched from Windsor to Ninject in 10 minutes’ and for Larry it might mean ‘I hacked this code together on a Saturday night and sold it for 15 million.
I sometimes get the feeling that using the ‘correct’ software methodology has become a goal in itself instead of just being a mean to achieve the end goal. (Sure, using ‘good practices’ increases the change of achieving that)
Does quality matter ? Of course it does ! But then again, explain Britney Spears’ success to me 🙂
One
@Ogre:
I fear I may have somehow been misinterpreted in my post above. I thought I was being pretty clear that *despite* my difference in value system for software with both Jeff and Joel, I continued to listen to their podcast; its the repetitive nature of the content that has eventually dissuaded me from spending that hour of my life each week on StackOverflow.
I probably erred in my initial post where I closed with the paraphrasing of an actual exchange that demonstrated their confused behavior where they don’t have time to test but DO have time to stare into the debugger hunting bugs as it probably skewed the reader’s thoughts about my motivations.
FWIW, I *do* enjoy witty banter in a tech podcast to lighten the mood and sometimes even make me laugh out loud (one of the reasons I listen to Herding Code regularly, for example) but my tech podcasts are first and foremost for me to learn something useful and only a (distant) second to provide me entertainment.
If StackOverflow was a sitcom on HULU that periodically provided me a nugget of technolgoy info, I’d probably have a different opinion b/c my expectations would be inverted from what they are now 😉
@One:
One of Agile’s basic tenets has always been (from my perspective) ‘guidance without context is useless as guidance’. Imagine if a book on patterns lacked the ‘problem definition’ part of the pattern; one could hardly use it to make an informed decision about where to apply the pattern.
If ‘done as fast as you can and who cares what it costs to maintain’ suits the business need (e.g., let’s assume time-to-market is the only value that matters for your business), then I’m all for that. But this needs to be an *informed* choice the business makes.
All too often in my experience, the business implicitly makes this decision without actually understanding that they made a choice; developers shield the business from understanding the consequences of their poorly-informed choices and over time this leads to difficult to maintain, etc. software. This in turn leads to developers being seen by the business as ‘roadblocks’ to progress…even simple things take longer and longer to accomplish, reducing business’ faith in developers’ ability to execute effectively (and this spiral continues ever-downward).
Jeff is dead-wrong when he says that quality doesn’t matter (taken literally); what he really means is “quality is not always the most important factor in what you do” and I would have to (generally) agree with him on that.
And Brittney Spear’s success is based on packaging, not quality 😉
I dont know about you, but i listen to the content within the formula, not the formula itself.
@Aaron Seet:
Well, like the title of the post says “Why *I* don’t listen to Stack Overflow anymore” and not “Why *you* shouldn’t”; I’m reporting my own opinion based on my own impressions rather than suggesting guidance 🙂
I don’t find enough content within the formula to keep my interest any longer so I’m (personally) moving on. If you continue to find value in it, then I’d most certainly recommend you continue to consume it, of course.
@sbohlen. I fully agree with the sentiment that “up and running” is not a valid metric. What I was trying (and failed) to indicate with the statement, was the excuse people use not to use TDD/SOLID when developing software. Extremely shortsighted and with the kind of clout the StackOverflow team seem to have, extremely irresponsible. A sad indication of the state of IT in general.
I am a strong believer in Unit Testing, SOLID principles etc however from what I am aware – we are still in a huge minority. There are many reasons for not embracing SOLID principles etc e.g.
1. I am used of writing software the old way – I dont want to change
2. I am working with legacy code and for many reasons cannot change
3. I simply do not have the interest/know-how
In my area (Ireland), I put the feelers out on this and found only 1 in 10 (estimate) of my fellow s/w dev graduate friends are using “pragmatic” software methods/techniques like SOLID etc – Is this an accurate reflection of s/w practices globally?
Now to the point I am really trying to make here: Are Joel and Jeff trying to reach out to the majority 90%?
@Pieter:
That’s what I *love* so much about the ‘medium’ of blogs, discussion groups,comment postings and the like — its SO damned easy to completely misread someone’s intent in a text message 😉 Seems we are on the same page together and yet I didn’t read it that way at all (oops!).
It seems we’re in ‘violent agreement’ on this point 🙂
@Billy Stack:
I think (sadly) that your estimation (generally) is aligned with my own anecdotal experiences in re: the percentage of people that are actively adopting such practices.
But here’s the flip-side of that metric…
I have also experienced that the non-adopters aren’t (gnerally) non-adopters out of choice but are instead non-adopters largely out of ignorance and inexperience — they just don’t know what they don’t know (e.g., they simply aren’t aware that there is a set of principles, practices, etc. out there that they aren’t using).
My own pedegogical experience has been that most developers who are any good at all can grasp the SOLID concepts just fine and in the abstract are in agreement that “principle so-and-so seems on its face to be reasonable”.
It all falls down for them when they try to put some of these practices into place and run into roadblocks (like some of those you list in your comment). Without easy access to people with adequate experience to offer guidance about how to circumvent the roadblocks, most will simply give up and return to their own ways.
The truly DRIVEN development profesional will do further research/googling/blog-reading/whatever and discover the patterns that enable them to surmount their present roadblock, but that’s (in my experience) not even close to the 10% metric you anecdotally report (disappointingly).
I see the development community as being made up of the following groups…
1) the ‘nine-to-five’, this-is-just-a-job-not-a-profession types who aren’t interested in self-improvement; there’s not a damned thing I can suggest to help these people — I cannot MAKE someone want to better themselves, that’s gotta come from within
2) those genuinely interested in self-improvement but lacking the wherewithall to do significant reading, research, investigation, etc. on their own; I can reach out to these people to try to make information more approachable, better explained, etc. than they might get from a random google search on a topic/practice term; these people just don’t know how to get started and those with experience have a professional obligation (yes, obligation) to the practice of software development to do what we can to help them
3) those actively implementing a particular practice/principle but running into actual adoption roadblocks; these people have the drive but not the experience to succeed and they need guidance/assistance from people with greater experience (who have that same obligation to our profession to provide assistance, coaching, etc. where possible)
4) those trailblazers who have no need of much assistance and take to some of these practices like a fish takes to water; these people hopefully *I* can learn something from and they don’t need the help of someone like me for them to succeed 🙂
Is should be noted for the record that there isn’t anything all that new in what I’m suggesting as its really just a re-hash of the technology-adoption-lifecycle in Moore’s still-sadly-relevant work, Crossing the Chasm http://en.wikipedia.org/wiki/Crossing_the_Chasm
I *do* think that Jeff and Joel are indeed preaching to the silent majority (the 90% — to use your metric — that are still doing their work largely ignorant of other practices and principles) but in doing so, they are (IMO) abdicating the unofficial professional responsibility that comes with having a pulpit from which to preach.
Rather than using that pulpit as a lever to improve their profession, they are largely using it as a platform from which to hand out candy treats (tastes great, not very filling) to listeners all too willing to agree with their statements of ‘fact’ because they align with their own sadly-narrow world-view of their profession.
In short, I think that they *are* reaching the 90% majority, but the message they are offering them once they reach them is without useful content and is just parroting what their audience already ‘knows’ and want to hear. This is a disappointing missed opportunity in my mind, but in complete fairness, its theirs to choose to squander.
I listened to the first few podcasts and then I quit listening because of feeling I had.
And reading this proves that I was right about not going on and listening to their podcast.
I hope the DevDays will be more than self-glorification of Joel or I’ll ask the 85£ + 100€ of flight to London back.
Right or wrong, good or bad, Joel and Jeff are immensely more successful than myself and whatever it is they’re doing, some of it is right.
That being said, I love the podcast solely for its entertainment value.
I wonder why it took you so long to realize.
I stopped after episode 9 or so.
I began a complete personal boycott of Jeff Atwood’s blog “Coding Horror” a long time ago. I concluded that it was a complete waste of my time. He writes click-bait headlines for articles that if not blatantly wrong are completely useless. I decided that I was not willing to support him by giving him any more impressions. Glad to see another awakening. Welcome to the movement.
@Brad Dunbar:
I’d have to agree that they do indeed appear successful, but success / failure isn’t a boolean, its a spectrum along which there are many possible data points. The question you should always be asking is “are they as successful as they *could* be?” rather than “are they successful?”.
The world is full of people who succeed due to all kinds of factors including dumb-luck, perseverance, blood-sweat-tears, and even working smartly. Its a logical fallacy to inspect any outcome and conclude “they got there the best way possible”; the only valid conclusion in my mind is “they got there in ONE of the possible ways”.
IMO its up to all of us to take the proper lessons from both the successes and failures of others we encounter 😉
I didn’t know they had a Podcast.
I’ve listened to every one of their podcasts, and find them hysterical. Every one brings has brought a smile to my face. I don’t think you should necessarily listen to it for it’s accurate technical content. Both Joel and Jeff are very opinionated and very smart – which makes for interesting discussions. If you want dry technical stuff then listen to Software Engineering Radio.
You guys have time to listen to podcasts?!?
@Ken Knopfli:
Only ones that I find to be consistently valuable (but I had to LOL when I read your comment — its perfect~!).
[…] Steve Bohlen seems to have sworn off Stack Overflow’s podcast as a result of the SOLID scuffle […]
[…] Steve Bohlen seems to have sworn off Stack Overflow’s podcast as a result of the SOLID scuffle […]
I used to download and listen to Jim McKeeth’s podcasts.
Then I just downloaded them.
Then I stopped doing even that.
With text blogs, a quick glance tells me if it contains anything of interest. And I can copy/paste for future reference.
Podcasts must be accessed to serially and in real time to find the useful bits.
[…] here to see the original: Unhandled Exceptions » Blog Archive » Why I Don't Listen to the … Share and […]