Beth Kjos

Earth-shattering project ideas. Resumes. Things in between.

🦆 How to Make a Duck 🦆

If it looks, walks, and quacks like a duck, then either a great deal of thought and care went into determining and replicating the observable properties of ducks, or else it’s a duck. Unfortunately ducks do not grow on source trees by chance (despite the prevalence of duck-typed programming systems) so we programmers are stuck with the former option: exercising thought and care when we’d like to make something act a certain way.

How much more thought and care must go into the design of a new kind of duck? Agile development philosophy tells us to do the simplest thing that could possibly work when faced with a challenging design task, but this leaves several questions open:

  1. What does it mean to work?
  2. What sort of things could possibly work?
  3. Among all conceivable solutions, which is simplest?
  4. What does “simplest” even mean?

Of course real ducks were not designed: they are the product of countless generations of sexual reproduction and millions of years of environmental selection pressures. I don’t have quite so much time, so instead I read, think, and write.