On Tuesday, I gave my first talk ever in front of a technical crowd to the Developers of Athens. My topic was Scala and Lift. This wasn't my first time being in front of an audience, but it was my first time giving a primarily slide-driven presentation about some highly technical stuff. It was my first time speaking about Lift publicly.
Ultimately, I decided the presentation wasn't up to my (perhaps idealistic) standard. Having now had a few days to distill my thoughts a bit, I thought I'd share what I took away from the night.
Something I didn't realize before going into the evening is exactly how much ground I had attempted to cover. I had way too much on my schedule. As a result, I ended up confusing a good handful of people for most of the presentation.
I decided to dedicate most of my time talking about Lift's view-first architecture, something I considered the most novel concept compared to other frameworks. This resulted in a good number of people being confused for a good chunk of the presentation about whether Lift was a framework or a templating engine. So, I didn't do a great job of doing the Framework justice.
In retrospect, I should have thrown the idea of covering anything about Scala and giving code samples out the window. I just didn't have time, and I could have leveraged the additional minutes to actually discuss some other features.
I was pressed on usage data for both Scala and Lift at various points and I did not have it. That's an epic fail on my part.
With regard to Scala as a whole, the official Scala website does a better job of painting a picture of the kind of adoption Scala has seen than I could. You can read their blog post detailing enterprise companies using Scala and an article on the growth of popularity and usage.
With regard to Lift, this is something that the Lift community has discussed before (though I'm failing to find the thread), but we don't have any real good numbers (that I know of) on how much Lift is used. We have a handful of sites that rotate on our homepage, including Foursquare. But, unfortunately, I couldn't tell you how many sites out there are using Lift. As we make the push toward Lift 3, that's something we need to seriously think about how to measure accurately and communicate outward.
So, I suck at summarizing my thoughts on things in an impromptu manner, it seems. Feeling the time crunch I was in I expressed two different opinions that both got me a bit of flak. It's no surprise both of these were during the part of the presentation I didn't care as much about (the Scala part).
The first was regarding typing. I made a remark that an audience member interpreted as unfair toward dynamically typed languages. I don't remember what my exact remark was (it may have legitimately started with "Static typing is better"). Exact words aside, I think my experience with Scala has taught me that when a type system is done right, it can greatly increase my confidence in the code that I'm writing without slowing me down or bloating up my test suite with cases such as return type checks. The audience member correctly pointed out in response that there are steps you can take to mitigate the risks of a dynamically typed languages, and that there are cases where static typing isn't as good of a fit as I portrayed.
The second was regarding Java. While discussing Scala's nature as a second-generation JVM language I made the offhand remark that Java was "on the way out," which is an opinion that I hold with qualification. I just expressed it with all those qualifications removed because they were completely irrelevant to the main topic (Lift). I immediately got about 10 WTF faces from the crowd, there were a few remarks back and forth that evening, and then I didn't think much of it. However, It ended up being the topic of conversation on the Meetup site the next day. I was really, really discouraged that there were audience members so unimpressed with the main topic of the presentation that a quip about Java was the main thing on their minds.
There's obviously a balance that I need to work on during a time crunch between reading from a script and shooting statements off the cuff faster than I can think them through or fully explain them.
Something that I severely underestimated in this little adventure was exactly how vulnerable you can feel when someone takes out their pitch fork to start criticizing you.
I don't know if it was a reasonable expectation, but I expected to feel about the same when receiving any criticism about my talk as I would criticism about a blog post. I've been writing long enough that I have a pretty tough exterior when it comes to self-evaluating how well I've communicated something. Yet the tone of the criticisms around my Java remark on the Meetup group the following day impacted me enough to make me seriously consider never presenting again.
The advice I got from pretty much everyone on this oscillated between "grow a thicker skin" and "why does that one guy matter that much anyway?" Both of which are completely valid. But if the goal of this post is to be honest about experience from my first time speaking (which it is) then omitting this would be a mistake. It was different for me when I got up in front of that crowd and then, after that, a member decided he disliked something about it.
The criticism of the audience apparently has the potential to be greater than the sum of its parts if you're not steeling yourself for it. I wasn't, and it slapped in the face as a result.
At least one member of the audience has started playing with Scala since I walked off the floor, so I have hopes to see an addition to the Lift community from Athens at some point. Also, I'm going to publish my slides whenever I get the chance to clean them up. There were a bunch of slides at the end I didn't use and I think a few that were in the wrong order. I'm sure everyone remembers the "I wasn't expecting that slide to come next" dance that I did halfway through the talk.
This won't be the last time I give a talk. It'll probably be a spell before I do it again, but this was a goal I had for myself this year. And I accomplished it. So now, it's back to building, shipping, and writing things for awhile.
See you on the interwebs.