lambdaconf / winter-retreat-2017

The official repository for the LambdaConf 2017 Winter Retreat (January 8 - 12).
12 stars 0 forks source link

Guide: Pawel Szulc #6

Open EncodePanda opened 7 years ago

EncodePanda commented 7 years ago

Hi, I'm Pawel Szulc. At the moment, I am a Scala developer and humble apprentice of functional programming.

I've been exposed to the functional paradigm pretty late in life, after 8 years of working as a software developer. Three years ago, I was introduced to the basic concepts of functional programming, and it was a life changing experience — both humbling and refreshing. It's really funny how your ego totally melts when you realize how much you still don't know! At the same time, you are injected with an enormous amount of adrenaline, knowing that you just entered a vast new world that you can explore.

For the past 2.5 years, I've been polishing my craft, learning theory whenever and wherever I could. I was fortunate to speak at some well-known FP conferences, including LambdaConf and LambdaDays. You might have heard my talks "Monads - asking the right question", "Real World Gobbledygook", "Having a Cake and Eating It Too - Introduction to Typeclasses," and recently, "The Cats Toolbox: A Quick Tour of Basic Typeclasses".

Learning theory and writing code for toy projects is great, but until recently, I was always missing the bigger picture. I had questions like, "How does the paradigm works in a larger project?", "What are the corner cases?", "Where does FP hit the bottom?". A few months ago, I was lucky to be hired at SlamData, where all my answers were answered. I'm blessed with the ability to work with some of the best developers I've ever met on a 100% pure functional programming project.

For me, functional programming was never about switching paradigms just to switch. It was always about sanity. Yes, SANITY. The ability to finally do real engineering (to some extent). A safe space where you can reason about your code in isolation. Where modularity actually makes sense. Because software engineering is hard - whatever paradigm or approach you are going to choose for your next project, the complexity will not magically disappear. FP allows you to tackle the complexity in a divide-and-conquer manner. I believe that we live in era of "software alchemy" [(c) Martin Thomson], and functional programming is the first real step to bring science and true engineering to our industry.

At the same time, I remember how "hard" seemed at first. FP isn't really hard. It's just different. Coming from a different background (e.g C-like language), you have to learn a lot. And being a professional software developer, you are not really accustomed to situations where it takes more then a day to comprehend a concept, right? :) But as I said, it does not mean that FP is hard, it's just different. To put it into perspective, ask any Haskell developer who switched to Scala, how hard it was to comprehend a concept of a 'method' for her. A method! A simple concept, right? But totally different for somebody coming from Haskell.

Which brings me finally to my role as guide during Lambdaconf Winter Retreat 2017. What really motivates me right now is:

  1. Spreading the love of FP - teaching newcomers, filling the gap, helping people dive into the world of FP. You want to know how to finally start your journey with ScalaZ or Cats? I'm here for you. Wondering what all the fuss is about Free monad? I'm happy to engage in a conversation. Want to go bananas and explore concept of recursion schemes (which I'm still exploring at the moment)? Lets do it!
  2. Discussing FP as an instrument to bring sanity to our industry, leaving the era of "software alchemy" behind.

My friends know I can talk about code for hours. It's just how I roll! Please feel free to chat me at any time during the event. My idea of a successful event is one where I had a chance to chat with literally everybody!

Please post your suggestions for me below! Vote on ideas by using the thumbs up / thumbs down emojis. Thanks in advance for all of your feedback, and I look forward to being a guide at LambdaConf Winter Retreat 2017!

argumatronic commented 7 years ago

Oh my gosh, I'm so excited to see you again!

serras commented 7 years ago

I would love to hear about how Scala is different from using Haskell or any other FP.

mudphone commented 7 years ago

I'm all for a discussion of "FP as an instrument to bring sanity..."

EncodePanda commented 7 years ago

Let's do this http://blog.haskellformac.com/blog/writing-games-in-haskell-with-spritekit :D

jdegoes commented 7 years ago

I'd suggest "How Scala is different from using Haskell" in the context of Quasar. Could double as a, "FP in Scala in the large" type of talk to show people how to scale up simple concepts to large business applications.

jdegoes commented 7 years ago

I vote 👎 to Haskell content since we already have lots of Haskell guides and there will be lots of Scala attendees. 😈

rezalesmana commented 7 years ago

Would really love to hear about ScalaZ. But would not mind about Cats too.

hirad commented 7 years ago

I'm a newcomer, so I'm specially interested in #1. But #2 looks really interesting as well!

mikegehard commented 7 years ago

+1 to some CATS learnings.

ErrorNullPointer commented 7 years ago

Would like to hear "How Scala is different from using Haskell"

EncodePanda commented 7 years ago

"Learning FP concepts for greater good."

This talk is designed for all those interested in learning Functional Programming, to tackle real world problems that they stamp upon every day at work. Functional Programming brings sanity to our industry as it gives you ability to handle complexity with modular & composable code. Keep in mind however that Functional Programming is not a magic wand that will suddenly make complexity disappear. If your problem is relatively difficult, simple immutable data structures and function composition will not suffice. Complexity is hard, simplicity is however not easy. Good news is: all problems you've encountered have been solved decades ago. Knowing them will prevent you from rediscovering the wheel.

You want to attend this session if you are interested in Functional Programming in general & are seriously devoted to making the next big step into the rabbit's hole.

This session will be an interactive presentation: you can take your laptop with you and try to follow or sit back and listen - whatever works for you best.

Programming language: Scala + ScalaZ (if you prefer Cats, you should be fine as well)

You are: professional software developer.

Things you should already know:

In other words: Novice & (partially) Advanced Beginner (*)

Things you will learn:

In other words: lifting you from Novice/Advanced Beginner to a Competent apprentice of Functional Programming (*)

If time will allow us, at the very end we will study source code of Quasar Analytics - where all above mentioned technics are being used to some extent. We will see how they allow keeping code modular & composable, despite rather complex domain.

Note about language used: you should be at least basically familiar with Scala language. You don't need to have professional experience with the language, but understanding its basic constructs will be mandatory. You should at least know: how to define class, methods, functions. Have general understanding of pattern matching & implicit arguments.

(*) see http://lambdaconf.us/downloads/documents/lambdaconf_slfp.pdf