Report on my talk "A gentle conceptual introduction to functional programming"
On behalf of the relatively new Pittsburgh Functional Programming, I gave an introductory talk held at Google Pittsburgh that I called “A gentle conceptual introduction to functional programming”.
This presentation is part of an experiment, a big shift in how I’m trying to talk about not only “functional programming”, but any kind of programming and more generally any topic at all (whether it’s cooking or music) for a wide audience. As I’ve been doing more teaching and collaboration in many areas of my life, I’ve been trying to figure out ways to better reach people. In particular, when presenting something new, it’s useful to motivate it and somehow connect it to something they already know, even if it’s different.
I’ll write more later about what I did differently in this talk than I’ve done in the past, and why. For now, I’ll just say that one big addition I made was that I prepared feedback forms to be filled out, both to help me understand what I can do better and also to help Pittsburgh Functional Programming plan further events and topics that people want to see. So I will summarize the feedback I got (fifteen participants filled out feedback forms).
For those who are curious about an outline of my talk, there are slides, with the caveat that much of what I said or did are not on the slides. In fact, one of the most commented-on helpful aspects of the presentation was not on the slides at all: my use of a whiteboard. I was happy I specifically requested that the venue provide me with a whiteboard. I knew it was going to make a difference.
Comments and suggestions
Some mentioned that I should have used a microphone. Point taken. This is not the first time I’ve forgotten to ask for a microphone. When there’s a large room and thirty people, even though I think I’m speaking loudly, it may not be loud enough.
I was happy that commenters felt I did a good job providing an introduction that was not too elementary (I knew that there would be a wide range of experience among those who attended). They also appreciated my use of concrete examples and metaphors (such as the pizza order).
My use of a whiteboard to draw pictures of immutable data structures and step through the structural sharing that happens when you update them was particularly well-received. I’m convinced even more than ever that helping with visualization and process is key.
A few quotes that made me feel I succeeded in my objectives, which were to give an introduction that would open a world and inspire further exploration:
I much better understand now the paradigm behind FP. So now I have a reason to explore it.
Thinking about immutable data in new way.
It provided the foundation I was hoping for. I liked the data visualization.
While I have encountered most of these topics before, the speaker did an excellent job of giving a wide view of functional programming and details beyond just the theory.
Some things people are interested in learning and using
On the feedback form I requested suggestions for talk topics, hands-on workshops, and study groups.
Here are some examples:
- How to use FP in a traditionally OO language
- FP for practical tasks such as command-line and Web
- FP design patterns
- Concurrency in FP
Languages people were interested in learning and using for FP (I list those with at least two people writing them in):
- Haskell (4 responses)
- Clojure (3 responses)
- Elm (2 responses)
- Scala (2 responses)
- Python (2 responses)
I should note that in the discussions, where not everyone submitted a written feedback form, I gathered there was a lot of curiosity about Elm.
This wasn’t much of a report on the presentation, and I’ll need to write up details on our session, but I haven’t been writing much at all, so I thought this brief summary of the feedback is better than nothing, in order to continue to move forward.
I’m very grateful for the hosting at Google Pittsburgh and all who came out to attend my presentation and gave me such detailed feedback in person or on paper.comments powered by Disqus