Well, same here..I've worked in just about everything under the sun at one time or another...and the thing that I brought away from that is that leaving memory management and garbage collection to the developers is a bugzilla event waiting to happen. And yes, there are some problems with even JIT languages (guess what language the JIT compiler was written in LOL), but to fix those is a swapping of the run time rather than re-writing every application ever distributed. And yes, it is about being "perfect" because no amount of engineering discipline can overcome the propensity to commit typos after 10's of thousands of lines of code. That's human nature...and has zero to do with dedication or discipline. And for the record, the C#/.Net development language and environment was created primarily to address the issues I've mentioned (MS was getting tired of being ridiculed for all the bugs and holes that were being discovered on nearly a daily basis), developer speed/efficiency is just a side benefit.