Keyboard Shortcuts
ctrl + shift + ? :
Show all keyboard shortcuts
ctrl + g :
Navigate to a group
ctrl + shift + f :
Find
ctrl + / :
Quick actions
esc to dismiss
Likes
- Testdrivendevelopment
- Messages
Search
Re: Classifying tests: problem? solution? something else?
Wisdom, for me, includes no longer viewing such usage as "improper", but merely something more like "unexpected" or "different". I don't even mean that we stop calling it improper, but that we stop experiencing it as improper. :) Many do the first; fewer do the second. On Sat, Jul 29, 2023 at 10:45?AM David Koontz <david@...> wrote:
-- J. B. (Joe) Rainsberger :: ?:: :: Replies from this account routinely take a few days, which allows me to reply thoughtfully. I reply more quickly to messages that clearly require answers urgently. If you need something from me and are on a deadline, then let me know how soon you need a reply so that I can better help you to get what you need. Thank you for your consideration. --
J. B. (Joe) Rainsberger :: :: :: Teaching evolutionary design and TDD since 2002 |
Re: "The design signals are weak"
On Wed, Jul 26, 2023 at 11:39?AM Vaughn Cato via <vaughn_cato=yahoo.com@groups.io> wrote: ?
I believe I understand you better now. Indeed, I consider the signals "weak" in the same way, but then I change my expectation from "This code needs to tell me when a design change must be corrected" to "This code tells me when to pay closer attention to emerging design risks", and then it becomes more meaningful to me to evaluate signals for strength. What do you think about that? ?
That matches how I work.?
I believe I understand you. I guess you find yourself more sensitive to the design risk signals coming from the tests than coming from the production code itself. That surprises me, because I don't hear it very often, but it doesn't surprise me, because I tend to work similarly. I tend to hear the opposite: the typical programmer seems to pay little attention to the design risk signals coming from tests. That might be because I tend to work with programmers still drowning in defects, so they're usually too distracted to see the tests as a source of feedback about design choices. ?Thanks. -- J. B. (Joe) Rainsberger :: ?:: :: Replies
from this account routinely take a few days, which allows me to reply
thoughtfully. I reply more quickly to messages that clearly require
answers urgently. If you need something from me and are on a deadline,
then let me know how soon you need a reply so that I can better help you
to get what you need. Thank you for your consideration. ?
-- J. B. (Joe) Rainsberger :: :: :: Teaching evolutionary design and TDD since 2002 |
Re: Classifying tests: problem? solution? something else?
David,
toggle quoted message
Show quoted text
I got a few lumps on the noggin learning that. - George On 7/29/23 1:44 PM, David Koontz wrote:
That is some WIZE advice…. Wish I could have heard it 20 yrs ago…. I’d not have banged mine head so much and raged against the improper use of a term!On Jul 29, 2023, at 9:58 AM, George Dinwiddie <lists@...> wrote: --
---------------------------------------------------------------------- * George Dinwiddie * Software Development Consultant and Coach ---------------------------------------------------------------------- |
Re: Classifying tests: problem? solution? something else?
开云体育That is some WIZE advice…. Wish I could have heard it 20 yrs ago…. I’d not have banged mine head so much and raged against the improper use of a term!
|
Re: Classifying tests: problem? solution? something else?
I've often worked with (and in) organizations where the perfect word (from my point of view) for a concept was already in use for something else. I've found that it useless to try to change existing usage, and confusing to ignore existing usage. Choosing another word to use in that context is well worth the trouble, even if that word seems a little clumsy.
toggle quoted message
Show quoted text
- George On 7/28/23 4:44 PM, Steve Gordon wrote:
In the context of software development, a customer test?refers to a specification?of a single thing that the people paying for the software want the software to do in the form of an executable test. --
---------------------------------------------------------------------- * George Dinwiddie * Software Development Consultant and Coach ---------------------------------------------------------------------- |
Re: Classifying tests: problem? solution? something else?
In the context of software development, a customer test?refers to a specification?of a single thing that the people paying for the software want the software to do in the form of an executable test.?? While this sense of customer is not directly related to what customer might mean in the domain model for the software, it can have similar ambiguities and nuances because the people paying for the software usually delegate that level of specification to some combination of line managers, users, business analysts, product marketing, product management, sales, product owners or even the same team that is writing the programmer tests. On Fri, Jul 28, 2023 at 1:06?PM Sleepyfox <sleepyfox@...> wrote:
|
Re: Classifying tests: problem? solution? something else?
I like examples. WRT naming, I worked at an insurance company. There were problems with churn in API code, particularly around certain domain concepts. One of those was 'customer'. To the policy lifecycle team, customer meant 'a person that has bought one of our policies'. To the sales team, customer meant 'someone who is considering buying one of our policies'. To the support team, customer meant 'a person who needs help, who may or may not hold a current or expired policy'. Needless to say, the requirements over what data these teams needed to store about a 'customer' were quite different, although there was (of course) common elements. Once everyone understood that these were different things, we were able to agree on different language in order to differentiate different groups' concerns. Fox --- On Wed, 26 Jul 2023, 15:19 J. B. Rainsberger, <me@...> wrote:
|
Re: Which comes first: design skill or TDD?
"I don't know where people are learning this, apart from generic "life lessons" of perfectionism drilled into them when they were very young." I left university teaching about 15 years ago, but I always had to fight the old guard of every faculty I worked for on that issue for every programming class I ever taught.? Even the ones who did understand?my points said it was too hard for students to learn good software design without having them do a good design for fixed assignment requirements before writing any code (like making students turn in an outline before writing their papers).? Even if we grant that premise (which I do not), waterfall just being an artifact of teaching skills in isolation gets ingrained as to how to develop software. On Wed, Jul 26, 2023 at 9:08?AM George Dinwiddie <lists@...> wrote: On 7/26/23 9:25 AM, J. B. Rainsberger wrote: |
Re: "The design signals are weak"
On 7/26/23 10:12 AM, J. B. Rainsberger wrote:
On Mon, Jul 24, 2023 at 7:25?PM George Dinwiddie <lists@... <mailto:lists@...>> wrote:Yes, the code I just wrote may be using some value that "seems wrong" for the class to own, and I may need to extract it to some place where it better belongs. I might have just introduced that value as a parameter passed by the test, but that should have a longer lifespan than one method call. Or, I might have written code that just assumes the value, though clearly it could be different for different needs. Either way, I think about where I would like this value to live. Perhaps it belongs to some application configuration object or data store. Perhaps it's part of a larger sequence of operations. I might extract it out now just to keep it separate, but eventually I'll also push it to the entity where it seems to belong. - George -- ---------------------------------------------------------------------- * George Dinwiddie * Software Development Consultant and Coach ---------------------------------------------------------------------- |
Re: Which comes first: design skill or TDD?
On 7/26/23 9:25 AM, J. B. Rainsberger wrote:
On Wed, Jul 19, 2023 at 3:55?PM Vaughn Cato via groups.io <> <vaughn_cato@... <mailto:yahoo.com@groups.io>> wrote:A lot of traditional approaches treat any need to change the code as evidence of a defect. Back around the start of the century, someone told me they were following Watts Humphrey's Personal Software Process (PSP) and were counting every time they hit the backspace key as a defect they had corrected. - George -- ---------------------------------------------------------------------- * George Dinwiddie * Software Development Consultant and Coach ---------------------------------------------------------------------- |
Re: "The design signals are weak"
I find the terms weak and strong to be useful in a philosophical context, rather than a judgemental one.? I e. Something is strong if it always results in a specific outcome , and something is weak if it influences but does not guarantee an outcome. Atleast that is how I read the initial comment.? If it doesn't have any influence then the correlation is a non-sequitor. On Wed, Jul 26, 2023, 17:39 Vaughn Cato via <vaughn_cato=yahoo.com@groups.io> wrote:
|
Re: "The design signals are weak"
When I talk about a signal being weak, I mean that it isn't a strong indication that something must be done to correct it. The term "smell", I believe, was created to try to indicate that it's something that might be a concern, and is worth consideration, but if no clear general improvement is possible after some consideration, then no change is necessary. For example, if a function is long, then I'll look to see if I can find a natural way to break it up, but if after some consideration, it doesn't seem like breaking it up is going to make the code any clearer, or causes other issues, then I'll ignore that signal and continue. In this sense, I guess I'm saying that the strength of the signal is an indication of how much work I'm willing to do to remove the signal. For me, the signals such as "I'm having to write a lot of test code to show what I'm trying to achieve" are much stronger, and I'll go to great lengths to avoid it. For example, I may break up a function to make testing easier, even if I wouldn't have broken it up just because it smelled like it was too long. ?- Vaughn
On Wednesday, July 26, 2023 at 09:44:21 AM EDT, J. B. Rainsberger <me@...> wrote:
On Fri, Jul 21, 2023 at 9:56?PM Vaughn Cato via <vaughn_cato=yahoo.com@groups.io> wrote: ?
What makes this "weak" for you? The signals can only say "Pay attention here!" I'm not sure they could ever say anything stronger than that. But then, the signals from test runs can only say "Pay attention here!" as well. What makes them stronger for you than the "code smell"/"design risk" signals? ?
I don't find those signals stronger nor weaker, but merely different. What makes them feel stronger for you? J. B. (Joe) Rainsberger :: ?:: :: Replies from this account routinely take a few days, which allows me to reply thoughtfully. I reply more quickly to messages that clearly require answers urgently. If you need something from me and are on a deadline, then let me know how soon you need a reply so that I can better help you to get what you need. Thank you for your consideration. -- J. B. (Joe) Rainsberger :: :: :: Teaching evolutionary design and TDD since 2002 |
Re: Classifying tests: problem? solution? something else?
On Thu, Jul 6, 2023 at 8:46?PM Ron Jeffries <ronjeffries@...> wrote: ?
That's one usually-quite-important axis. :) It's one of the ones I continue to consider regularly. J. B. (Joe) Rainsberger :: ?:: :: Replies from this account routinely take a few days, which allows me to reply thoughtfully. I reply more quickly to messages that clearly require answers urgently. If you need something from me and are on a deadline, then let me know how soon you need a reply so that I can better help you to get what you need. Thank you for your consideration. -- J. B. (Joe) Rainsberger :: :: :: Teaching evolutionary design and TDD since 2002 |
Re: Classifying tests: problem? solution? something else?
On Thu, Jul 6, 2023 at 2:06?AM Mauricio Aniche <mauricioaniche@...> wrote: ?
It might be wise to have a common vocabulary among such a large project community, but I definitely don't recommend One Corporation-Wide Strategy. :) ?
I love it! "Let's classify based on what actually matters to us" instead of "Let's classify based on some abstract notion of correctness that some person wrote in a book one time". ?
This reminds me of the first project in which I participated with other people practising TDD who actually wanted to do it. We simply posted the top 10 list of slowest tests every day and used that to guide our choices about breaking integrated things apart to make them more individually inspectable. That was enough. J. B. (Joe) Rainsberger :: ?:: :: Replies from this account routinely take a few days, which allows me to reply thoughtfully. I reply more quickly to messages that clearly require answers urgently. If you need something from me and are on a deadline, then let me know how soon you need a reply so that I can better help you to get what you need. Thank you for your consideration. -- J. B. (Joe) Rainsberger :: :: :: Teaching evolutionary design and TDD since 2002 |
Re: Classifying tests: problem? solution? something else?
On Tue, Jul 4, 2023 at 1:19?PM George Dinwiddie <lists@...> wrote: ? I agree that the naming can be confusing because often the same name I'd like to second this loudly: I noticed a huge improvement in my relationships with people when I stopped insisting on my understanding of the terms and instead focused on exploring the differences in our mutual understanding of the terms. J. B. (Joe) Rainsberger :: ?:: :: Replies from this account routinely take a few days, which allows me to reply thoughtfully. I reply more quickly to messages that clearly require answers urgently. If you need something from me and are on a deadline, then let me know how soon you need a reply so that I can better help you to get what you need. Thank you for your consideration. -- J. B. (Joe) Rainsberger :: :: :: Teaching evolutionary design and TDD since 2002 |
Re: "The design signals are weak"
On Mon, Jul 24, 2023 at 7:25?PM George Dinwiddie <lists@...> wrote: ? I found that much of my design pressure came from the REEN "cat" state. I presume you notice the signal to consider refactoring coming from both the production code itself (most likely focused on the code you just added) and from the tests (most likely the tests you most-recently wrote). Is that how you experience it? J. B. (Joe) Rainsberger :: ?:: :: Replies from this account routinely take a few days, which allows me to reply thoughtfully. I reply more quickly to messages that clearly require answers urgently. If you need something from me and are on a deadline, then let me know how soon you need a reply so that I can better help you to get what you need. Thank you for your consideration. -- J. B. (Joe) Rainsberger :: :: :: Teaching evolutionary design and TDD since 2002 |
Re: "The design signals are weak"
On Mon, Jul 24, 2023 at 1:55?PM Steve Gordon <sgordonphd@...> wrote: ?
Interesting! I advocate becoming comfortable refactoring away from patterns, because many programmers still feel subtle cues of guilt or shame related to undoing design decisions, especially "bigger" ones, such as introducing a pattern. I have noticed a trend in phases. Each phase increases options and decreases anxiety, guilt, shame, blame, that kind of thing: 1. Person X gets used to refactoring in general, so that it's no big deal to change "little" design decisions. 2. X gets used to refactoring away from patterns, so that it's no big deal. They make peace with changing their mind, even after making "bigger" decisions, such as refactoring towards a pattern. 3. X notices that, since they can refactor away from a pattern, it's OK to refactor towards a pattern somewhat prematurely. 4. X notices that, since they can refactor towards a pattern, it's OK to wait for stronger signals that the pattern will help, trusting that they'll refactor towards the pattern when that becomes clear. The end results seem the same, except that when someone in phase 1 or phase 2 tries to postpone refactoring to a pattern (for the good reasons you describe), they might never break through phases 3 and 4. I notice a meta-pattern that (many) people who have made it through phase 4 routinely advise people in phase 1 or phase 2 to do things that stop them from progressing through phases 3 and 4. They do it to try to protect the less-experienced, but it often results in robbing them of the experience they need to progress. J. B. (Joe) Rainsberger :: ?:: :: Replies from this account routinely take a few days, which allows me to reply thoughtfully. I reply more quickly to messages that clearly require answers urgently. If you need something from me and are on a deadline, then let me know how soon you need a reply so that I can better help you to get what you need. Thank you for your consideration. -- J. B. (Joe) Rainsberger :: :: :: Teaching evolutionary design and TDD since 2002 |
Re: "The design signals are weak"
On Mon, Jul 24, 2023 at 10:51?AM Olof Bjarnason <olof.bjarnason@...> wrote:
Cute. I love it. ?
This captures very well how I try to teach the technique: as a change in or a difference in values. The people who practise TDD _and stick with it_ tend to either change their values in the process or discover that TDD helps them live more authentically the values they already had. I think I was in the second category.
I think it does more, and this seems to be a somewhat controversial point: it both gives you the opportunity and suggests options and reminds you to consider those options. That is a sense in which TDD leads (on average) to better designs (according to our revised notion of "good" that includes "adaptability" as a "good" property). J. B. (Joe) Rainsberger :: ?:: :: Replies from this account routinely take a few days, which allows me to reply thoughtfully. I reply more quickly to messages that clearly require answers urgently. If you need something from me and are on a deadline, then let me know how soon you need a reply so that I can better help you to get what you need. Thank you for your consideration. -- J. B. (Joe) Rainsberger :: :: :: Teaching evolutionary design and TDD since 2002 |
Re: "The design signals are weak"
On Sat, Jul 22, 2023 at 1:04?PM Steve Gordon <sgordonphd@...> wrote: ?
Indeed. I'm not a fan of the Transformation Priority Premise as it seems to me to have been advertised, even though I imagine I have a similar priority tree of heuristics in my mind when I think about how I might refactor something. I claim that the value in that priority tree of heuristics comes from having built it oneself (almost certainly through practice), rather than from having some universal tree that everyone ought to follow. ?
This is almost equivalent to how I define legacy code: profitable code that we feel afraid to change. (Only the profitability of the current code is not made clear, although one hopes that it's implied by the fact that anyone's working on it at all. :) ) J. B. (Joe) Rainsberger :: ?:: :: Replies from this account routinely take a few days, which allows me to reply thoughtfully. I reply more quickly to messages that clearly require answers urgently. If you need something from me and are on a deadline, then let me know how soon you need a reply so that I can better help you to get what you need. Thank you for your consideration. -- J. B. (Joe) Rainsberger :: :: :: Teaching evolutionary design and TDD since 2002 |
to navigate to use esc to dismiss