> So: bad choice for a second exercise (I don't think so, but who knows)? Has anyone had similar feedback--where an exercise convinced someone that TDD sucked? Is this a closed-minded individual (or am I not hearing him well--I don't like to assume I'm dealing with someone who's already made up their mind)?
You can't tell much from one experience. All you know is that this exercise didn't fit for this person at this time. At another time... who knows?
So make a note, and notice over time whether or not it becomes a pattern.
Dale
--
Dale Emery
Consultant to software teams and leaders
http://dhemery.com
The pattern I've noticed over time is that a lot of students dismiss
tiny programs, particularly algorithmic ones, as something to "just type
in" rather than develop.
- George
--
----------------------------------------------------------------------
* George Dinwiddie * http://blog.gdinwiddie.com
Software Development http://www.idiacomputing.com
Consultant and Coach http://www.agilemaryland.org
----------------------------------------------------------------------
I am thinking about what, if anything, to say to the class tomorrow.
Or to the individual. Many thoughts come to mind, and many thoughts
about not saying too much also come to mind.
What would you say/do? Thanks in advance for any thoughts.
> I am thinking about what, if anything, to say to the class tomorrow.
> Or to the individual. Many thoughts come to mind, and many thoughts
> about not saying too much also come to mind.
>
> What would you say/do? Thanks in advance for any thoughts.
When this happens to me, I tell people the story of why I started
doing test-first programming. I emphasise that I first decided to try
it out of curiousity and interest, then jumped in with both feet when
I had to rebuild something I'd been working on for 3 months, from
scratch, in 3 weeks. I did it 9 days. Since then, I've seen and felt
the benefits of first test-first programming, then TDD.
Two key points to the story: (1) at first I found the idea of TFP
intriguing, and not everyone does; (2) I used TFP in anger and it
saved my ass, and not everyone experiences that.
"Who knows how I would have turned out differently if neither (1) nor
(2) happened? I might never have taken TDD seriously. That's OK. It's
OK if you don't, either.
"My goal in 3 days (or however long) is to expose you to what helps
me, give you the chance to try it and ask tough questions, give you
no-bullshit answers, then let you decide what you want to do next. I'm
not here to convert anyone, and I don't mind if you decide after 3
days that I'm full of shit and you're not going to do TDD. When you
want to do TDD, I'll help."
I noticed that when I stopped worrying about whether my students
actually did what I showed them after I left, then I felt less
tension, less resistance, and might even have got through to more
people.
--
J. B. (Joe) Rainsberger :: http://www.jbrains.ca ::
http://blog.thecodewhisperer.com
Author, JUnit Recipes
Free Your Mind to Do Great Work :: http://www.freeyourmind-dogreatwork.com
Find out what others have to say about me at http://nta.gs/jbrains
Hi Ron, I like this - I'm gonna share with students in code kata today, if you don't mind. :)
jon
blog: http://technicaldebt.com
twitter: http://twitter.com/JonKernPA
John Goodsen said the following on 2/22/12 2:32 AM:
when you wrap up the kata session, do you attempt to get the group to
explain what just happened? how they feel about TDD, what sorts of
benefits they might see, etc.? In other words, this sort of group
feedback thing -- versus you espousing the virtues of TDD -- might be
the sort of thing to prod the individual to see things differently.
depending on how much they value their peers' opinions and observations.
jon
blog: http://technicaldebt.com
twitter: http://twitter.com/JonKernPA
Jeff L. said the following on 2/21/12 10:51 PM:
Rationally, it sounds like a long loving talk about econcomics of clean teasted code, code smells, etc. I try to take on the tone Ron does. If I really care, I'll try to schedule some non-class time so it isn't all public and in front of the class.
"Jeff L." <jjl...@gmail.com> wrote:
> ...
So my answer to this issue is that ALL well factored code has that "toy problem" quality to it, and indeed that is what should be aspired to. If you only aim to TDD (or test after the fact) the complex stuff, then I can pretty much guarantee that you will get a lot of complex stuff, most of which won't work. And the anecdotal evidence we have for this is overwhelming (in the financial sector in which I tend to work).
So TDD is a technique that makes all your work look so easy that it doesn't
seem you needed to do it in the first place!
Charlie
So TDD is a technique that makes all your work look so easy that it doesn't
seem you needed to do it in the first place!
Feel free.
"Roman numeral exercise proved to me that TDD is not for me. I
would've done it more quickly and painlessly if I did it using a top-
down algorithm approach."
> So my answer to this issue is that ALL well factored code has that "toy
> problem" quality to it, and indeed that is what should be aspired to.
+1
I tell people that there are no large, well-factored systems.
Well-factored systems are loosely-coupled, highly-cohesive networks of
small things. Forward UK seems to provide an example of this, at least
in legend.
> we've actually joked about release some known defects sometimes just to
> create an emergency and let them experience some pain to remind them of our
> value -- how sick is that?
Sick, but in the awesome sense of the word.
when you wrap up the kata session, do you attempt to get the group to explain what just happened? how they feel about TDD, what sorts of benefits they might see, etc.? In other words, this sort of group feedback thing -- versus you espousing the virtues of TDD -- might be the sort of thing to prod the individual to see things differently. depending on how much they value their peers' opinions and observations.
I have been struggling with something over the past few years after doing TDD or it's predecessors since about 1999.
I'm finding that because TDD pushes you towards small things, and because of some very good mentoring in the late 1990's, everything I write is tiny and looks like a toy problem. Many times, I've had those who don't understand TDD say things like "Why did you bother to write tests for all this? It's all too simple to bother.", which has some resonance with "Test Everything That Could Possibly Break", where there is errr� nothing that could possibly break, because it's all so simple (take that last bit with some humour please).
Ron Jeffries
� -- Kelly Easterley
the average PHB (or end user, or your Mom, or most any developer) has no
clue if the code is of the right level of quality and design for the
purpose at hand. assuming long-term/critical business apps, the average
manager wouldn't know if it was a pile of monolithic, tightly-coupled
crap; a phd-worthy, abstract wonder of unrecognizable-to-the-business
crap; or a well-designed, elegant solution that meets the current needs,
and is very easily adaptable to grow as the business grows thing of beauty.
who's to say... in the engineering world, you *can* over design systems.
and indeed, so it is in the software world. the average coder is likely
not going to be able to make the kinds of judgment calls that a seasoned
developer/designer/architect can make about design decisions that
dictate over- or under-design.
i tend to feel that a design that is as true to the business domain as
makes sense, coupled with a technical architecture and design that
follows sound design/coding principles, coupled with a suite of
surrounding tests; meets the vast majority of business apps. naturally,
there are apps on the fringes that need less care (throw-away prototypes
or short-lived demos), and some that need a lot more care (human-rated,
things that can kill/maim).
so keep reminding them that much like in their "real world" where smooth
operations and ease don't happen by magic, the same goes for our less
visible world. maybe you can also keep a growing chart of some
heuristics... new user signups, webapp usage stats, business features
implemented, LOCs, bugs found, bugs squashed... some giant radiators
that you can change up every so often to spur conversation about how
amazing your team is :-)
jon
blog: http://technicaldebt.com
twitter: http://twitter.com/JonKernPA
John Goodsen said the following on 2/22/12 5:07 PM:
sometimes i explore something new without TDD. on "good jon" days i throw away that "prototype" code and do it again using TDD. (on "bad jon" days i write tests after the fact :-o)
jon blog: http://technicaldebt.com twitter: http://twitter.com/JonKernPA
Lance Walton said the following on 2/22/12 12:21 PM:
I have been struggling with something over the past few years after doing TDD or it's predecessors since about 1999.
I'm finding that because TDD pushes you towards small things, and because of some very good mentoring in the late 1990's, everything I write is tiny and looks like a toy problem. Many times, I've had those who don't understand TDD say things like "Why did you bother to write tests for all this? It's all too simple to bother.", which has some resonance with "Test Everything That Could Possibly Break", where there is errr… nothing that could possibly break, because it's all so simple (take that last bit with some humour please).
On 24 Feb 2012, at 02:29, Jon Kern wrote:
sometimes i explore something new without TDD. on "good jon" days i throw away that "prototype" code and do it again using TDD. (on "bad jon" days i write tests after the fact :-o)
The first rule of the Not Test First Club is "There is no Not Test First Club"
jon blog: http://technicaldebt.com twitter: http://twitter.com/JonKernPA
Lance Walton said the following on 2/22/12 12:21 PM:
I have been struggling with something over the past few years after doing TDD or it's predecessors since about 1999.
I'm finding that because TDD pushes you towards small things, and because of some very good mentoring in the late 1990's, everything I write is tiny and looks like a toy problem. Many times, I've had those who don't understand TDD say things like "Why did you bother to write tests for all this? It's all too simple to bother.", which has some resonance with "Test Everything That Could Possibly Break", where there is errr� nothing that could possibly break, because it's all so simple (take that last bit with some humour please).
yea, it's hard to be perfect
I had the same experience at NW. From that I learned that an important
aspect of successful Agile teams in Enterprise situations is good PR.
- George
On Wednesday, 22 February 2012 21:29:49 UTC, D.André Dhondt wrote:[snip]
We used to do "cowboy coding contests" every couple of weeks where all coding styles were welcome--the only thing that counts is getting working code first. We found that for simple algorithms, it was easier to do without TDD; for anything non-trivial, TDD was the clear winner. Why get involved in a person's internal battles? Just give the person more experience to learn for him/her self.
That reminded me of an exercise I tried once.[snip]