I always wondered why the C# team chose to compile directly into assemblies. One main (accidental?) advantage of Java&#x27;s way is that each .java file is compiled into its own .class file, which takes mere milliseconds.<p>The C# compiler is fast, but not millisecond-fast. You can code Java as if it&#x27;s interpreted code but with better editor support and great error messages. Change the code, run the test or the program, bam, immediate feedback. With C# it&#x27;s always been change the code, wait a little, ok well just a little longer, yay feedback. Those 5 seconds there really make a difference.<p>I assume there&#x27;s a performance (or VM simplicity?) reason behind preferring assemblies - after all, you can statically link method calls without needing the JIT to do it for you. But it really hurts developer productivity. I wish they had done both - .class files in debug mode and entire optimized assemblies in release mode. Or something like that.