My guiding principle in web-development is (still): Always make things work without (client side) JavaScript first.
Aside from offering a graceful degradation of the experience by progressively enhancing it leads to better code. Three reasons why:
it forces you as a developer to think about logical endpoints for your form submits, your data requests etc. Typically this leads to fewer cases of overloading a resource with all kinds of unrelated functionality (yep, I'm a big REST-first advocate).
your application will probably be more web-native, and hence more future proof, more easily cache-able, etc.
the front-end JavaScript to enrich the experience will typically also be less complex and can be generalized more easily.
Yes, I do shiver when I hear things like CSS in JS, KISS!
Photo by [Dmitry Baranovskiy](https://www.flickr.com/photos/dmitry-baranovsk…
But there is another reason why we might not even ask all the questions. Ask the wrong questions and you may alienate your user.
It can be relatively minor things like picking your favourite colour, where the form just lets you pick one colour, while many have multiple. But it may also be more personal (or one could argue, more political): not everyone defines oneself as male or female, so why only present just these options (and do know that it isn’t particularly nice being referred to as ‘the other’ all of the time).
These issues are well discussed in this [talk by Ca…