Earlier quoted context omitted.
> Instead, it reduces that number to c' * N with c' That is unproven conjecture. It feels right, but just because it is written as a formula doesn't automatically mean it is correct.
It is an axiom. If your testing is such that this isn't true then you are doing testing wrong, in a self-evident sort of way.
Sensible Software Engineering
51–60 of 77 posts
Re: Sensible Software Engineering
#52>So here’s the punchline: if you want to be a good programmer then learn a technology and language agnostic formalism. Logic, statistics, and game theory are probably good bets. I think in an abstract sense control theory is a reasonably good bet. https://en.wikipedia.org/wiki/Control_theory I can't say I know it deeply, but a lot of the ideas resonate when I think about software engineering. If you think of everythi…
We all think our pet subjects are the right lens to view the world with.
Re: Sensible Software Engineering
#53Earlier quoted context omitted.
The other fault in that reasoning is that usually test code is much much simpler than product code. It's a lot harder to write bugs when the structure of the code is just 1. call single function with some input data 2. verify that output data/side effects meet expectations 3. repeat for more sets of inputs.
One of the mistake I see a lot around this is when people start to write intelligent mocks. Usually this is where test bugs reside.
Then you just get blank stares when you try to explain why what they've just done is completely pointless.
Re: Sensible Software Engineering
#54Earlier quoted context omitted.
It is an axiom. If your testing is such that this isn't true then you are doing testing wrong, in a self-evident sort of way.
That's about as useful as observing that if your code is such that it doesn't produce the correct result then you've written the code wrong, in a self-evident sort of way.
Hmm. Sounds like you are doing some sort of testing.
Re: Sensible Software Engineering
#55Re: Sensible Software Engineering
#56Earlier quoted context omitted.
Arguing from the point of logic and formalisms the author is talking about, this would seem to be true.
> Instead, it reduces that number to c' * N with c' That is unproven conjecture. It feels right, but just because it is written as a formula doesn't automatically mean it is correct.
How do you define the meaning of it, and could you illustrate how it could, on average over a code base, increase the number of bugs in the product code under test?
Re: Sensible Software Engineering
#57>So here’s the punchline: if you want to be a good programmer then learn a technology and language agnostic formalism. Logic, statistics, and game theory are probably good bets. I think in an abstract sense control theory is a reasonably good bet. https://en.wikipedia.org/wiki/Control_theory I can't say I know it deeply, but a lot of the ideas resonate when I think about software engineering. If you think of everythi…
Spotted the control theorist. We all think our pet subjects are the right lens to view the world with.
Re: Sensible Software Engineering
#58> Bugs are correlated with lines of code and TDD forces writing more code so how can it reduce bug counts? If the test code has no bugs then just write the rest of the code in the same style Nobody has pointed out the fault in this reasoning yet, so I will. The linear relationship lines-of-code vs. total-bug-count is based on independence of bug introduction in different parts of the code. That is, introducing a bug…
Re: Sensible Software Engineering
#59I agree with the part that says Agile (and Scrum in particular) is drinking the koolaid. Managers who don't themselves write any code, but micromanage their workers with their version of Scrum, are the worst.
XP is better simply because it's based on engineering practices first.
The trouble with any approach is that it's a template and some teams / people rest on those templates in place of actual thought.
Re: Sensible Software Engineering
#60 So here’s the punchline: if you want to be
a good programmer then learn a technology
and language agnostic formalism.
No.If you want to be "a good programmer", then learn how to define the problem for which you are tasked to solve. The technology is irrelevant. The "language agnostic formalism" is irrelevant.
Unless a person/team knows what must be done, then the rest really doesn't matter. Techniques which help to elicit repeatable delivery certainly are worthy to learn, even to advocate for. But without understanding what is needed, what use are they?