When I did mostly c++ I though it was critical to know assembly and wrote some non trial asm code just so that I could truly understand what was going on. I now do mostly .net and while I have some understanding of IL I am by no means proficient.
Is IL a skill that one should have a knowledge of or will learning IL more completely go on to inform how I use and write .net code?
Learning IL completely is like learning assembly, in many ways.
Having an understanding of IL can help you understand what happens when you’re actually compiling your .NET code. This can be very helpful, especially if you ever run into performance critical profiling situations (where you’ve found a real problem, and need to optimize it).
However, for most “day to day” programming tasks, I don’t think it’s really necessary to understand the IL, just like most C++ programmers don’t really need to know how to write assembly.
That being said, if you understand assembly code with a C++ background, getting a general idea of IL will be very, very easy…