I had the opportunity to attend a panel discussion with Scott Ambler (Mr. Agile), Neal Ford (all around guru) and Robert C. Martin (Clean Code). The topic: Dynamic vs Static languages!!
The following is a terse summary of the panel. Use dynamic languages where possible and where appropriate. Where is appropriate? Depends. Most places. Do not fall down the trap that static languages, like C# or Java, will save the world. It’s been over 10 years; end of story. There isn’t a single general purpose to solve everything. Java and C# are “ceremonious”. Studies show that dynamic languages make developers 5x more productive. Dynamic languages will not work without TDD and unit testing. Statically typed run times like the JVM and CLR are ripe playgrounds for deploying dynamic languages on existing infrastructure. Framework libraries are important, but with bloat like .NET, it does not mean a developer will be more productive; what is the one way to read a file in .NET?
A lot of the questions thrown at the panel were similar to “why should I use dynamic languages” or “better than C++? Outrageous!” In my opinion, it’s not the responsibility of those in the know to defend dynamic languages to the rest of the software world. It’s that big, slow, unchanging side of software development that needs to do their own research and understand the benefits of the dynamic language conversation.
Now, a few of my favorite quotes:
Martin: “Is COBOL statically typed?”
Ford: “If you only learned Java in school and are put on a C++ project you will blow up the universe.”
Ford or Martin: “Bad developers will move heaven and earth to write bad code.”
Ambler: “IT people screw around all the time. That’s what we do. We don’t act like professionals and aren’t respected.”
And, finally, my favorite quote is from Scott Ambler:
“There is some fantastic research from the 70’s that shows testing at the end [of the project] works really well.”