The Artima Developer Community
Sponsored Link

Weblogs Forum
Joel vs Bob and Kent. Different strokes for different folks.

44 replies on 3 pages. Most recent reply: Mar 8, 2009 11:38 PM by Jeff Ratcliff

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 44 replies on 3 pages [ « | 1 2 3 ]
Bill Pyne

Posts: 165
Nickname: billpyne
Registered: Jan, 2007

Re: Joel vs Bob and Kent. Different strokes for different folks. Posted: Feb 25, 2009 4:46 PM
Reply to this message Reply
Advertisement
IMO

At the outset of a new development project, there needs to be some sense of what you are coding. For example, if the software tracks (monetary) collections, probably an AR module is involved. Purchase orders? Probably an AP module. Etc. (As an analogy, how does a writer write a book if he/she has no story in mind?)

Requirements should be written down to the extent that they're known. An inherent assumption should be that they will change or need to be clarified over the course of the project. Any process for change management must be lightweight or it threatens to kill the feedback necessary in getting the software right.

Mocked up screen captures of what the UI will look like is to me a waste of time. Any effort put into the mock up is better used in creating actual screens - even if the data is smoke and mirrors - for the user to review.

Feedback loops with the user should be tight. Daily is probably going to be too much of a distraction to the user; monthly allows too much development to occur before the user can give the Yea or Nay.

Code reviews are good but pair programming would be a huge distraction to me. I'd rather have a senior developer who is tasked with spot checking code and giving comments. When I was in the position of leading a 4 person team I knew one guy was weak so I checked his code every few days. The other people I'd check now and then but they had a gold stamp for the most part.

The methodology must be flexible. When I coded for a hospital's patient chart system there were only 2 developers and I worked directly with the clinicians daily. I understood their needs and didn't need to write a lot down. Feedback came daily without affecting the clinicians. By contrast, when I coded for a custom loan tracking system at a finance company I was put on a 20 person team not having worked with the user community at all. We needed more formality if for no other reason than communication. (We failed in that we had so much formality that the users gave up trying to get the software they wanted and stopped giving feedback.)

Getting people's vision of what they want into a product is not easy. The development methodology should be chosen based on the situation.

Taylor Cowan

Posts: 5
Nickname: taylorg
Registered: Nov, 2007

Re: Joel vs Bob and Kent. Different strokes for different folks. Posted: Feb 27, 2009 3:18 PM
Reply to this message Reply
"and there are these prophets walking around who you can't question."

That really is the crux of the issue. The title of the post is "different strokes for different folks" but agile and XP in particular introduce certain orthodoxy. Early on in the discussion Venners claims that it's unfortunate that the attacks became personal, however, that is another symptom of the the underlying problem...namely, the methodology rests in the hands of public persona's who went forth with quite a bit of public fanfare (signing a "manifesto" for example) to establish their prophetic voice. I can criticize OOP, and no one individual will get their feathers ruffled...there's no reason to mention particular people. But just as criticism of communism requires one to mention names (Marx, Lennon, Mao), it's perfectly understandable why Joel would mention a few names while discussing Agile. Consider that if you were to visit China, you'll encounter Mao's face, not Marx...because the ideology is so entwined with the cult of personality. If you were to criticize the status quo, well, they'd do more that write an "open letter" to you...but with the same intent...to shut you down, and fast.

Kay Schluehr

Posts: 302
Nickname: schluehk
Registered: Jan, 2005

Re: Joel vs Bob and Kent. Different strokes for different folks. Posted: Feb 28, 2009 1:27 AM
Reply to this message Reply
> But just as criticism of communism
> requires one to mention names (Marx, Lennon, Mao), it's
> perfectly understandable why Joel would mention a few
> names while discussing Agile.

Lennon was a flower power guy at some time of his life and not too engaged in spreading the glorious victory of communism ;)

I slightly disagree with the point you make. Actually Joel didn't drop a name and the main reference for Agile is certainly XP which is more precisely defined than OOP is. Nevertheless his attack became personal by claiming that the Agile methodologists don't touch the ground and he can't imagine Agile promotors are doing real programming.

Taylor Cowan

Posts: 5
Nickname: taylorg
Registered: Nov, 2007

Re: Joel vs Bob and Kent. Different strokes for different folks. Posted: Feb 28, 2009 10:05 AM
Reply to this message Reply
yes, of course I ~meant~ to say "criticism of communism and the Beatles"...

Joel did mention individuals, at least in the transcript format linked on this topic. His best point was in reference to SOLID principles...

"It's object-oriented design, and they're calling it agile design, which it really, really isn't. It's principles for how to design your classes, and how they should work."

He's absolutely correct, which brings us back to how precisely agile is defined, which is not at all in most cases. Someone here even once said it's essentially a synonym for "good"...."Good Software Development". But perhaps the most memorable aspect of this exchange was the threat to legal action. That's when I'm reminded it's just software, and perhaps it's time to go play the piano or shoot some basketball...you know...get away from the world of software and back into the real one, the one where you can talk some smack and not hurt you buddy's "wittle feewings".

Sebastian Kübeck

Posts: 44
Nickname: sebastiank
Registered: Sep, 2005

Re: Joel vs Bob and Kent. Different strokes for different folks. Posted: Feb 28, 2009 11:56 AM
Reply to this message Reply
> I have experienced exactly the kind of things you mention
> above. In one case I suggest a minor design improvement
> to deal with things that we knew with were going to
> happen. I was attacked by the 'agile consultant' as
> trying to 'design a theoretically pure system' and
> 'predict the future'. What it really came down to was a
> fragile ego.

That kind of 'consultant' you mention is probably the most dangerous threat to Agile. Those are the copycats that jump onto a hype, turn the whole thing upside down and have no idea what harm they are doing to their client and to the community. In an Agile project you do exactly what you mention. You refactor the code towards change and then you do the change. Even if an idea is too much at a given point in time it is worth to remember it and have it around when you need it. You can even have a "creativity backlog" around to collect good ideas:
http://www.jroller.com/sebastianKuebeck/entry/the_creativity_backlog

>
> YAGNI is, IMO, an extremely misused term. It doesn't mean
> 'don't be prepared'. It really means that you shouldn't
> write code that you don't need today. What a lot of
> people take it to mean is: it's OK to paint yourself into
> a corner.

You are perfectly right. However, the people you mention would do the same thing to every term they don't understand, do they?

>
> I've done some reading on these concepts and from what I
> can tell, they were never intended to mean what they mean
> to a lot of people. I'm sure you've worked with a system
> that was over-architected to accommodate all kinds of
> possibilities while not really working well (or at all)
> for it's actual purpose. These ideas are really about
> avoiding that but as you say they've been taken to their
> (extreme) illogical conclusion.

Agile methods are solutions to particular problems in software development. Not the only ones but they work well for the time being. Not more and not less. There is no such thing as "You must do". It's rather "Do this (e.g. TDD) to solve this problem (numerous failing tests at once etc.). Do that (short iterations) to solve the other (get the software done [done, done] on time)".
See http://www.infoq.com/presentations/Agile-Management-Google-Jeff-Sutherland.

Kay Schluehr

Posts: 302
Nickname: schluehk
Registered: Jan, 2005

Re: Joel vs Bob and Kent. Different strokes for different folks. Posted: Mar 1, 2009 7:22 AM
Reply to this message Reply
> "It's object-oriented design, and they're calling it agile
> design, which it really, really isn't. It's principles for
> how to design your classes, and how they should work."
>
> He's absolutely correct, which brings us back to how
> precisely agile is defined, which is not at all in most
> cases.

I'd like to embed those definitions into the historical constellation from which Agile emerged. Agile was some kind of compromise between methodology as some sort of bureaucratic protocol and pragmatism that does whatever needs to be done without questioning whether this fits into a set of rules guarding a process. It promoted itself as
in-between the "waterfall model" ( bureaucracy ) and "cowboy coding" ( pragmatism ). In particular Robert Martin insisted and re-insisted in the rigour of Agile.

But as with any compromise and the concrete solution that is offered the ground isn't stable and the constellation drifts. Software developers reject the notion of design-by-test even if they aren't forced to write paperware by QMs. Just look how an OSS project like the Python interpreter or how Java evolves. Lot's of specification documents and not just heaps of user stories. Guido develops code inspection tools. Distributed version control systems change again the scenery challenging even the notion of "integration" and "product" in some sense because there are always many branches that exist in parallel. The contribution of git to the history of software development has been the idea that spawning and merging branches shall be convenient, not a painful exception ( just like UTs became convenient with JUnit and clones ).

At the other end of a spectrum Haskell fans embrace the notion of types as proofs. They want more reliable programs than being possible with just applying a set of tests on them and stronger re-usability than being enabled by OOP by basically avoiding side-effects or at least controlling them inside of monads. How does "design by types" and Quickcheck fit into the big picture?

Much of this also implies that tools/languages are as important as people. Not really Agile, isn't it? What if the notion of "process" as some sort of program we follow step-by-step just parallels our intuition schooled at imperative programming? Not sure where all of this is going to lead us or whether this "us" is even coherent ( "different strokes for different folks" )? More questions than answers. As with philosophy it is the elaboration of the question that is thrilling. The answers are mostly lame.

Kay

James Watson

Posts: 2024
Nickname: watson
Registered: Sep, 2005

Re: Joel vs Bob and Kent. Different strokes for different folks. Posted: Mar 1, 2009 11:54 PM
Reply to this message Reply
>> YAGNI is, IMO, an extremely misused term. It doesn't mean
>> 'don't be prepared'. It really means that you shouldn't
>> write code that you don't need today. What a lot of
>> people take it to mean is: it's OK to paint yourself into
>> a corner.
>
> You are perfectly right. However, the people you mention
> would do the same thing to every term they don't
> understand, do they?

Your phrasing suggests to me that your meaning was not translated to text perfectly but it's interesting that you should point to this.

In a different conversation recently, it occurred to me that phrases like this where there's a general English meaning are more likely to be misused. It's much easier to think you know what it means when you don't. It's also easier to convince others it means something that it doesn't.

YAGNI has some subtleties to its meaning that are not conveyed by the raw English of the phrase.

> Agile methods are solutions to particular problems in
> software development. Not the only ones but they work well
> for the time being. Not more and not less. There is no
> such thing as "You must do". It's rather "Do this (e.g.
> TDD) to solve this problem (numerous failing tests at once
> etc.). Do that (short iterations) to solve the other (get
> the software done [done, done] on time)".
> See
> http://www.infoq.com/presentations/Agile-Management-Google-
> Jeff-Sutherland.

I've never had a chance to do Agile but a lot of what I've read about makes sense to me. And when I read the people who really seem to know what they are talking about, it's never about dogma. My biggest concern with Agile is the "copycats that jump onto a hype". It's sad but so many good ideas in software / IT get soiled by this kind of thing before they can reach their full potential.

Sebastian Kübeck

Posts: 44
Nickname: sebastiank
Registered: Sep, 2005

Re: Joel vs Bob and Kent. Different strokes for different folks. Posted: Mar 2, 2009 5:02 AM
Reply to this message Reply
> Your phrasing suggests to me that your meaning was not
> translated to text perfectly but it's interesting that you
> should point to this.

You are probably right. Sorry.

> YAGNI has some subtleties to its meaning that are not
> conveyed by the raw English of the phrase.

I think it's the context that is important here. YAGNI was originally used to prevent people from doing work up front that turns out to be obsolete later. Instead, they should focus on things they know they need now and refactor the code later if they need more - for example - flexibility in a particular module. Joel took YAGNI out of this context and applied it arbitrarily to bash something (the SOLID principles) he didn't understand. That's what made Kent Beck angry and caused him to join the dispute.

See: http://www.jroller.com/sebastianKuebeck/entr/uncle_bob_vs_jeff_and

> My biggest concern with Agile is the
> "copycats that jump onto a hype". It's sad but so many
> good ideas in software / IT get soiled by this kind of
> thing before they can reach their full potential.

You are right. Copycats seem to be a inevitable byproduct of success. I think the best weapon against them is common sense. "If they guy cannot tell me what this is good for, he has probably very little idea of what he is talking about". This is usually the strongest weapon against those copycats.

James Watson

Posts: 2024
Nickname: watson
Registered: Sep, 2005

Re: Joel vs Bob and Kent. Different strokes for different folks. Posted: Mar 2, 2009 12:22 PM
Reply to this message Reply
> > Your phrasing suggests to me that your meaning was not
> > translated to text perfectly but it's interesting that
> you
> > should point to this.
>
> You are probably right. Sorry.

No need to apologize. It just looked like you left out a 'not' in your sentence but I wasn't sure. Miscommunications tend to snowball on forums so I punted.

> You are right. Copycats seem to be a inevitable byproduct
> of success. I think the best weapon against them is common
> sense. "If they guy cannot tell me what this is good for,
> he has probably very little idea of what he is talking
> about". This is usually the strongest weapon against those
> copycats.

My belief is that more skepticism is needed. More skepticism about a lot of things, even things people have accepted for decades as fact. When I express this, I get the distinct feeling that I'm considered a buzz-kill, a downer, just ruining the party. For example, you should have seen the indignation towards me for suggesting on a forum that latency is a downside of cloud computing. This is purely fact based, it's not an opinion. But by the responses, you'd think I'd personally attacked people.

So enough of my whining. I don't know. I don't know how to fix this problem.

Merriodoc Brandybuck

Posts: 225
Nickname: brandybuck
Registered: Mar, 2003

Re: Joel vs Bob and Kent. Different strokes for different folks. Posted: Mar 2, 2009 12:54 PM
Reply to this message Reply
>
> My belief is that more skepticism is needed. More
> skepticism about a lot of things, even things people have
> accepted for decades as fact. When I express this, I get
> the distinct feeling that I'm considered a buzz-kill, a
> downer, just ruining the party. For example, you should
> have seen the indignation towards me for suggesting on a
> forum that latency is a downside of cloud computing. This
> is purely fact based, it's not an opinion. But by the
> responses, you'd think I'd personally attacked people.
>
> So enough of my whining. I don't know. I don't know how
> to fix this problem.

You can't fix stupid. Currently I'm going to take comfort in the fact that I appear to be in reasonably good company, judging by my own feelings and most of the responses in this thread.

James Watson

Posts: 2024
Nickname: watson
Registered: Sep, 2005

Re: Joel vs Bob and Kent. Different strokes for different folks. Posted: Mar 2, 2009 1:14 PM
Reply to this message Reply
> You can't fix stupid. Currently I'm going to take comfort
> in the fact that I appear to be in reasonably good
> company, judging by my own feelings and most of the
> responses in this thread.

You could be right. Maybe it is stupidity. You'd think that after all that had happened in the last decade people would start listening to the buzz-kills. But they didn't / don't. Just look at the financial crisis. There were lots of people saying that real-estate couldn't go up at that rate forever. I know people were saying because I listened to them and made choices based on that advice (which, so far has payed off in spades.) And I can't even try explain how the economy works. How can little ole' me know this and the 'masters of the universe' be so blissfully ignorant. Don't these financial wizards go to school for this stuff? I can't get my head around it.

I guess what I am saying is that it almost seems like you have to be an idiot to get ahead in this world. Those with the kind of unbounded optimism that allows you to run right off of a cliff are listened to.

James Watson

Posts: 2024
Nickname: watson
Registered: Sep, 2005

Re: Joel vs Bob and Kent. Different strokes for different folks. Posted: Mar 2, 2009 3:34 PM
Reply to this message Reply
> See:
> http://www.jroller.com/sebastianKuebeck/entr/uncle_bob_vs_j
> eff_and

I get a 404 on that page, BTW.

Sebastian Kübeck

Posts: 44
Nickname: sebastiank
Registered: Sep, 2005

Re: Joel vs Bob and Kent. Different strokes for different folks. Posted: Mar 4, 2009 11:50 AM
Reply to this message Reply
There is a "y" missing in "entry":

http://www.jroller.com/sebastianKuebeck/entry/uncle_bob_vs_jeff_and

Nilanjan Raychaudhuri

Posts: 1
Nickname: nraychaudh
Registered: Feb, 2003

Re: Joel vs Bob and Kent. Different strokes for different folks. Posted: Mar 6, 2009 10:24 PM
Reply to this message Reply
Test driven development is about driving your design through tests, its a designing approach. If I could do it all over I will remove the test from the definition because that causes more confusion than good. Anyways the test suite you get at the end is a second order benefit. Now if someone argues that we don't need a good design then...

Jeff Ratcliff

Posts: 242
Nickname: jr1
Registered: Feb, 2006

Re: Joel vs Bob and Kent. Different strokes for different folks. Posted: Mar 8, 2009 11:38 PM
Reply to this message Reply
> Test driven development is about driving your design
> through tests, its a designing approach. If I could do it
> all over I will remove the test from the definition
> because that causes more confusion than good. Anyways the
> test suite you get at the end is a second order benefit.
> Now if someone argues that we don't need a good design
> then...

I think the issue is whether TDD really is a design approach. It seems to be more like test driven coding than design.

Flat View: This topic has 44 replies on 3 pages [ « | 1  2  3 ]
Topic: The Adventures of a Pythonista in Schemeland/18 Previous Topic   Next Topic Topic: The Adventures of a Pythonista in Schemeland/17


Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2014 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use - Advertise with Us