I&#x27;ve written a lot of code in both Ruby and C#. Like a parent, I love both of them for completely different reasons.<p>From a pure language standpoint, Java and C# are _really_ well-designed tools. I call them &quot;Cathedral Languages&quot; after esr&#x27;s &quot;Cathedral and the Bazaar&quot; -- both were designed by highly-qualified teams of experts who had the privilege of spending years designing them, after already spending collectively many lifetimes doing language design. For examples of what I&#x27;m talking about, look at C#&#x27;s implementation of generics. Look at the quality of .NET or Java&#x27;s multi-generational mark-and-sweep garage collector implementations. Ruby has a lot of warts. It&#x27;s slow. MRI&#x2F;REE are children&#x27;s toys compared to the CLR or JVM. Ruby&#x27;s implementation of coroutines (blocks vs. procs vs. lambdas) is a huge mess, its concurrency story is terrible, it has nothing like .NET&#x27;s async&#x2F;await...I could go on, but I feel the point is made.<p>However...<p>It&#x27;s easy, when using .NET and Java, since they&#x27;re such &quot;batteries-included&quot; languages, to get into the mindset that &quot;I&#x27;ll never need another tool&quot;, which is _manifestly_ untrue. I am a committed polyglot programmer and I am appalled how frequently I encounter &quot;cultural ignorance&quot; within the big enterprise language communities. So I think the issue is more cultural (O&#x27;Church writes about this), one of trying to avoid &quot;Java Shop Politics&quot;, with the associated ManagerFactorySingletonImpls, needing to write about 100 lines to get a single thing done, etc. The problem is the cultural baggage that many enterprise developers bring with them, not the language itself.<p>In my current project, I&#x27;m doing small-program development in .NET for a Windows LOB project. It&#x27;s pretty refreshing. I get all the benefits of UNIX-style systems design, i.e.. small composable program elements, services, Git (TFS? are you kidding me?), proper CI&#x2F;CD, and command-line automation, alongside the maturity of not having to deal with breaking changes on point releases of OSS libs, a thoroughly-documented, consistent BCL (.NET Framework 4.5), high-quality runtime, and generally less &quot;hipster&quot; culture. I&#x27;d highly recommend it.