CodeMash: Keynote by Neal Ford
This morning Neal Ford gave the first keynote of CodeMash. His talk was Software “Engineering” & Polyglot Programming. The talk was excellent.
Here are the quick bullet points that I took away from the talk:
- Focus on the platform and use the languages that work with that platform that make sense. For example, if you choose .Net as your platform you can choose from VB.Net, C#, Iron Python, F#, etc. You may find that F# fits your needs for a particular problem, but C# fits better for others. Yes, even a dynamic language should be looked at. Some arguments against dynamic languages is that static typing provides a safety net against mistakes around types. Neal points out two things on this front: A) this isn’t anything testing can’t solve and B) bad developers will come up with very interesting ways to shoot themselves in the foot, bypassing any safety nets along the way. Back to point number one, if a dynamic language solves a particular problem the most efficient way, why not use it? (Personal take away) I need to learn a dynamic language and a functional language. Knowledge of the power and best case uses for a particular language will go a long way in maximizing this approach. For example, if you know only about C# and you have to deal with some heavy multi-threaded operations then you may spend a LOT of time working through concurrency issues. On the flip side, knowing that functional languages by nature extract a lot of that concurrency complexity out just in the manner in which they deal with variables may lead you to choose F# to solve that problem. This isn’t saying you need to be expert across 10+ languages, but knowledge of a good set of languages will be really handy. There is the saying “if all you have is a hammer, then everything looks like a nail” (my reference, not Neal’s). I bring this up because if all you know is one language, then you will attempt to solve everything using that hammer….errrr, language. Also, if you do come to the conclusion that you need to use a different language, you may have an uphill battle with those that tote around that single tool. Be prepared for this. To those people who would say that multiple languages in a solution increase complexity, and shouldn’t be done Neal states the following: If you are writing web applications you are most likely already using multiple languages: C# + SQL + JavaScript. Sound familiar?
It was a really good talk.
[Edit] - I misspelled Neal’s name…..DOH. At least I was consistent and spelled it wrong everywhere it was used. :) It’s now corrected.