Comment Re:Polyglots (Score 1) 161
I used to think all programming languages were more or less the same, and this opinion was based on having programmed in a variety of languages, and noted how easy it was to understand the gist of a new language pretty much immediately upon seeing it, and coming to understand any nuances involved without too much further study.
Then I ran up against OCaml. And I was humbled. I didn't really realize that there could ever be a computer language as hard to approach as learning a new spoken language, but OCaml showed me the error of my preconceptions.
My favorite moment was when trying to read and understand some gnarly OCaml code (is there *any* OCaml that isn't gnarly to some degree?) and asking on an IRC channel how I would go about figuring out what the "types" were of variables I was seeing as inputs to procedures and used as local variables within procedures. I was surprised by the answer: you can't. It was recommended that I install an OCaml IDE environment and then have the IDE tell me the types. Why? Because it is more or less impossible to know, from inspection, what the type of anything is. I guess the concept of 'type' is a little to gauche for the OCaml crowd.
I never thought I'd run into a language where, in order to read and understand the code, you literally have to *implement a virtual machine in your head and run the code*, but then I ran across OCaml.
I wonder what the brain of someone reading OCaml code would look like under an MRI
Oh and to your point
When I first came out of college and was young and naive, I thought a great software developer was someone who was really smart, really able to solve complex algorithmic problems. But years in the industry have proven to me that while such talents are important, and people like that are needed, those talents are vastly overshadowed by the more important skill of being able to coordinate with other developers, and to manage detail. The hard part of software development is not on the scale of problems that a single developer faces in daily coding tasks; the hard part is taking 100 developers and figuring out how to produce software that is even 50x as large or complex as that which would normally be written by a single programmer.
A single developer will never be able to compete with an entire software development company in building large or complex software. Competitiveness between large groups of developers is where it's at, and the skills and experience needed for that is an entirely different thing than individual programming genius.