> For the complete documentation index, see [llms.txt](https://teachersmanual.firstdraft.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://teachersmanual.firstdraft.com/chestertons-fence.md).

# Chesterton's Fence

As the course gets close to ten years old, I find myself more and more often forgetting the cost-benefit-analyses that led to changes that we made in the past.

In isolation, certain things we do seem cumbersome and unnecessary. For example, why do we only teach `where`? Why did we stop showing `find_by` and `find`? I vaguely recall this was due to years of e.g. 404 exceptions within association helper methods (due to overuse of `find`) and `undefined method each for nil` (due to overuse of `find_by`). But it gets harder to keep that in mind as time goes on, and newcomers to the teaching team have no idea.

Eventually, I switch things back to the old way, and then we go round and round and round. I need a [Chesterton's fence](https://en.wikipedia.org/wiki/Wikipedia:Chesterton%27s_fence) for myself, basically.

**I propose that we start collecting rationale for our most counterintuitive beginner-friendly practices in one place;** let's start here, in this document.

It will serve as an on-boarding guide for new faculty coaches (what they *shouldn't* show students), as well as "regression tests" for us as we continue to make improvements or revert changes.

* where, find, find\_by
* old hash syntax
* no view helper methods (e.g. link\_to)
*
