In conventional programming you have to explicitly specify "all the details" that form your application. The IDE and compiler are unaware of your "requirements" or "semantics" of what you want to achieve. So they can't help you much beyond simple intellisense.
The philosophy of M# is to program around common sense and semantics. Unlike traditional languages, with M# you start by specifying your intention as opposed to jumping into the "details". It will then fill in the details using its native understanding of:
- Your project's domain model
- Best practices for object-oriented programming
- Domain-driven-design principals
- Modern web UI standards, Html(5), Css, jQuery, etc
- Common sense and usability conventions
For 90% of the details, you completely rely on the assumptions of M#. For the remaining 10%, you will simply lead M# by providing just enough "details" to make the final code a 100% match for your exact requirements with no workarounds or rework.