"Given the same amount of expertise in 2 languages, if i can write the same feature in much less time in one language, then it is more powerful."
I think the author overstates his argument by not accepting the above. However there is a case to argue that such productivity gains are small compared to the productivity of a "really smart" programmer to that of the average, i.e 10Xs. Also it is valid to raise the issue of maintenance problems if really smart programmers use languages and techniques that average programmers has difficulty understanding.
Actually when i said the above, I should have clarified - for _me_ its more powerful. Your other points are very true. Smart or experienced programmers develop a product using X language, average programmers come to maintain it and cannot understand it. But what is the solution ? Should a good programmer dumb down his program for the sake of average ones to come ?
And yes, a smart programmer is way more productive than the average: could be more intelligent, a faster learner, or reuses what's there rather than reinvent the wheel. Smart programmer _often_ write simpler and clearer code -- I've seen newbies and average types writing convoluted buggy code for what could be done simply.
Smart programmers also sometimes realize that they might have a problem understanding their own code a while later and so use clearer, simpler techniques. So it can work both ways. Often they use more portable calls, or methods that will be backward compatible.
"But what is the solution ? Should a good programmer dumb down his program for the sake of average ones to come ?"
Sadly, I've seen this. I worked for a company where some really smart people wrote a kick-ass fast, lightweight, and powerful Web framework in Java. It was sweet, ran great, and was making money like crazy driving Web apps.
Company ends up getting bought, and the new owners decide that Web apps are now to be built using J2EE (as it was called then) with WAR files, EJBs, and all that shit. Why? Plug-and-play Java coders FTW. Seems the last thing they wanted to have to count on was having smart, motivated developers.
(By coincidence, most of the smart, motivated developers ended up leaving shortly thereafter.)
I agree. Poor programmers write convoluted messes. Poor but smart programmers write over-complex code. Smart programmers write simple elegant code. A good language is one that make it easier to write simple elegant code.
But I am not convinced that a manager, I am not one myself, would see that the benefit of non-mainstream languages out weigh the costs. Will they be able to find smart programmers willing to maintain the code? Will these smart programmers cost too much? Will they be able to find anyone with experience with a particular non-mainstream language?
I think the author overstates his argument by not accepting the above. However there is a case to argue that such productivity gains are small compared to the productivity of a "really smart" programmer to that of the average, i.e 10Xs. Also it is valid to raise the issue of maintenance problems if really smart programmers use languages and techniques that average programmers has difficulty understanding.