A few days ago I read this article:<p><a href="http://martinfowler.com/articles/lmax.html" rel="nofollow">http://martinfowler.com/articles/lmax.html</a><p>"10: An interesting side-note. While the LMAX team shares much of the current interest in functional programming, they believe that the OO approach provides a better approach for this kind of problem. They've noticed that as they work to write faster code, they move away from a functional style towards OO style. Partly this because of the copying of data that functional styles require to maintain immutability. But it's also because objects provide a better model of a complex domain with a richer choice of data structures"<p>The world of software is so large and varied that I no longer can just believe the word of experts can be applied to other domains that they probably are not expert or have experience in before. PG with his LISP/Scheme world. Joel Spolsky with his Microsoft background. Martin Fowler with his OOP, Modeling ecosystem. Joshua Bloch with software correctness. Linus Torvalds with his embedded/OS island.<p>Are the things they wrote and spoke, within their domain, correct/make-sense? Perhaps.<p>Can we apply their opinions to other domains? Probably not.<p>I also feel that it's weird when a person always say "use the right tools for the job" but always push for his/her favourite programming language as if the language is always the best tools for anything that pops up in HackerNews. It feels like someone trying to put a square peg in a round hole.<p>Then there's the "let's burn the Agile Consultants" movement around here while promoting alpha-geeks that always change their programming language or web framework or their app-server of choice once every 2 years.<p>Some people don't care with the next programming language probably because they're busy learning Data Mining (Math & Stats), SOA, REST, HTTP protocols, SEO, CSS/HTML, administering Linux server, designing a database model, automating their testing effort, writing i18n-compatible apps, building robust code (in the programming language of their choice). Pretty much getting better in the situations that don't necessarily involve learning a new programming language.<p>Maybe programmers prefer to learn new programming languages as opposed to other things because learning a programming language is easier as opposed to learning Data Mining. Most programming languages are similar in a way they have a subset of common features: functions, type systems, object/classes in some, pointers/reference, iteration/loop, array. It's probably because we're human: we prefer things to be instant.<p>I don't think Ruby is more productive than Java in almost all situations. I'll give Rails the credit for being more productive for a simple CRUD apps if you compare it to most Java frameworks (the newer ones like Play, Spring MVC, Spring Roo, and a slew others are on par).<p>Maybe we shouldn't judge people based on their knowledge of more programming languages.