Log in

No account? Create an account
entries friends calendar profile Scribbles in the Dark Previous Previous Next Next
Scientific Method(ology) - Please Visit http://glyph.twistedmatrix.com/ - This Blog Is Closed.
Sorry about the ads, I can't turn them off.
Scientific Method(ology)
I'm an empiricist at heart.  It's hard to integrate the principles of scientific discovery into one's daily life; while it makes for a good ontological basis for existence, it has the unfortunate side-effect of being damned expensive to apply consistently.  Still, I try when I can.

Recently it occurred to me that UQDS (Divmod's development methodology) has a striking similarity to the scientific process.  I can't find something that neatly lays it out like I remember learning it in school, but wikipedia has a very nice treatment of the whole process.

As I understand the process of scientific knowledge acquisition, there are four phases:
  • A hypothesis is developed, which is an idea that might possibly be true.
  • An experiment is designed, and performed, to test the hypothesis.  if the experiment fails, a new hypothesis is designed.
  • The experiment is documented in a paper and published, and the publication is subjected to peer review by other scientists; the experiment is repeated.  if the experiment can't be repeated, the experiment must be re-designed to eliminate errors or an alternative hypothesis designed to take errors into account.
  • The hypothesis is accepted as a fact, which may be later be used to develop a model, theory, or even a law.
I know a few of my scientist friends out there might read this, so I want to be clear that I'm not proposing that this is what scientists do: scientists do a lot of things. this is the merest subset of the process required for things to be accepted as "scientific fact", and only in the abstract sense.  Different scientific communities have different official standards.  Still, any new scientific discipline would probably have to start with these rules first to be considered "science", and then probably develop additional ones later.

UQDS corresponds rather directly, as if a code repository were its own particular branch of science.
  • hypothesis: a ticket is created, which is a feature which may be possible to implement correctly.
  • experiment: a branch is developed, which includes test cases.  here, as the test cases fail, the branch is refined and the ticket adjusted, much as the hypothesis must be adjusted.
  • peer review: well, uh... peer review.  Another developer reviews the branch, and verifies that the tests test the hypothesis, runs the tests (replicates the experiment) to verify that they pass for them as well, possibly in a different environment, and reports their findings as well.  If the tests fail, the branch must be adjusted more.
  • fact: the changes are then accepted for merging, where they are incorporated into the codebase, which corresponds to the scientific body of knowledge.
5 comments or Leave a comment
From: ex_esiminch388 Date: August 26th, 2006 03:17 pm (UTC) (Link)


I'd rather suggest that the ticket is not really comparable to a hypothesis, though the processes in whole share similarities, or I'd say the uqds method gains a lot on being similar to a scientific method.

glyf From: glyf Date: August 26th, 2006 08:50 pm (UTC) (Link)

Re: hypothesis

I'm confused by your grammar, but I think I catch your drift. Why isn't a ticket comparable to a hypothesis? Sometimes, a ticket is filed but it turns out it is completely mistaken, or the feature that it describes is impossible or self-contradictory.
From: ex_esiminch388 Date: August 27th, 2006 09:12 am (UTC) (Link)

Re: hypothesis

I think the difference is, that a ticket is about something that 'may work', but a hypothesis about something that 'may be'.

You never doubt in a ticket that the subject, the API or the environment are as they are. You know all about them, or at least all about the part relevant for your ticket, and you base your ticket on this knowledge.

A hypothesis on the other hand, _may_ suggest something new about the nature of the subject.

If we talk about an app, and not a chunk of random code that we never examined, then we know everything about it. It may be complex, or we may be not throughly familiar with the code, but its nature is explicitly defined by its code. We may be not sure how it behaves in some cases/environments, but thats because we may lack the same knowledge about the environment (may be it's closed code, or we hadn't the time to examine the code thoroughly).
glyf From: glyf Date: August 27th, 2006 07:50 pm (UTC) (Link)

Re: hypothesis

Ah. Well, clearly they're not the same... I am just saying they're analagous. Tickets are about expanding the functionality of a repository, hypotheses are about expanding the body of knowledge. Different endeavours, to be sure :).
From: ex_esiminch388 Date: August 27th, 2006 11:10 pm (UTC) (Link)

Re: hypothesis

oh, the endeavour is indeed very similar uqds, about keeping a complex code base stable and protected from quick hacks, and scientific method, keeping us from mixing theory and tales.
5 comments or Leave a comment