Why do default R Markdown/Quarto templates use second-level headings instead of first-level ones?

I found that many of my students use second-level headers instead of first-level ones. Then I found out that even RStudio templates and several online courses teach that. I try to understand this phenomenon.

  1. What are the reasons to use second-level headings ## instead of first-level ones # in the default R Markdown/Quarto templates? What is the logic behind it?
  2. Is this a deliberate decision related to the structure of the document or just a habit to use ## (e.g., some people say that ## is more beautiful/readable than #? Is it the case here?)?
  3. Isn't it a way to teach bad habits to new users? As the first should go before the second. When one uses numbered sections, starting with ## gives really unnatural result. If ## is needed to make the font smaller, doesn't this indicate, that the defaults are not optimal? Isn't it better to teach, e.g., some CSS for HTML output?

So I'd like some opinions here. Especially from the developers.

It is a design choice reflecting several possible considerations

  1. The original design of the HTML header elements i(h1 .. h6) in ancient times reflecting hardware and aesthetic environments that have become obsolete and/or gone out of fashion
  2. Search engine optimization using metadata, for example, made headers less important
  3. The ## default is easy enough to change manually for short uses, globally using CSS or by a custom template

The questions you raise pose a good teaching opportunity for new users around examining defaults and making deliberate decisions whether to accept them or give alternative treatments.

The New Project | Quarto Book creates some pages with H1 headings and some with a Title. I thought the suggestion of H2 for template code was leaving the largest font for either the Title or an H1 heading in place of a title.