A Dear John letter
Dear John,
You’re a smart guy, but I can tell you’re missing out on some of the things that have been going on in the programming world lately. Even though you’re now working up the management ranks I know you are keeping your hands in the code.
Here are some things that might be of interest to you. I know they have shaped the way I program over the past few years. At the very least they might shape the way you interview and hire new minions.
Joel is where I first heard of the map/reduce “pattern”. (I’m really starting to hate that word.)
Map I had seen in Perl before, but I didn’t entirely see the point. Joel’s post made me run out and revisit map and learn about map/reduce:
http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
I have really enjoyed several of the papers from Google. You’d probably get a lot of mileage out of some of them, because they do a lot of data processing just like you guys do at your company. Here are a few to get you started. I recommend you check out more of them.
http://labs.google.com/papers/mapreduce.html
http://labs.google.com/papers/bigtable.html
The last thing I’ll share is Erlang. There’s a book. You should buy it and spend a couple of weekends with Erlang. Why Erlang? Is it the greatest language ever? No! Absolutely not. In some ways it is terrible. But it’s completely different from everything else you work with, and it packs a lot of great concepts in that are hard to appreciate in other FP languages that have less syntax (such as Lisp). For example, pattern matching (I’m not talking regex pattern matching, I’m talking parameter pattern matching, ala Prolog), list comprehensions, and programming without side effects were all things that bent my brain, and for the better, I think.
Looking at Scheme (a lightweight Lisp dialect) might also do you some good, but I’m not sure how well you’d take to it. I think Scheme makes a better teaching language, but I think you’ll like Erlang better. There’s a book called The Little Schemer that is a popular intro to that language. I had some Scheme exposure before looking at Erlang, so that experience might have made Erlang more understandable. But then again maybe not.
Obviously you’re not going to run out and declare that your department is switching all coding over to FP. Not hardly. But just about everything I’ve learned about in FP I’ve been able to apply in C#. And it’s getting better, because C# is converging on FP. It’s not quite Ruby or Python (or Haskell) yet, but it’s getting closer.
Let me know what you think. Unless you think something bad about me, in which case shut the hell up.
Your friend,
Matt