Move Fast And (Don't) Break Things: Being more agile with Functional Programming

If you work with developers (or are one), there’s a good change you’ve heard of functional programming – at least in passing. What you may be less familiar with are the benefits and drawbacks compared with other styles such as object-oriented (Java, C#, C++) and procedural (Python, PHP, C) programming.

This talk aims to provide a largely non-technical overview of how functional programming can help teams deliver working software frequently, with greater confidence and flexibility, as well as some of the complexities, drawbacks and paths to adoption.

 
1 favorite thumb_down thumb_up 1 comment visibility_off  Remove from Watchlist visibility  Add to Watchlist
 

Outline/structure of the Session

  • What the heck is functional programming anyway? (5 mins)
  • The benefits of FP (20 mins):
    • Confidence in results.
    • Expressiveness.
    • Ease of change.
      • Fearless Refactoring.
      • Low-interest technical debt.
      • Low architecture & coordination overhead.
    • Working code as documentation.
    • Powerful simplicity.
    • Being on the cutting edge.
  • The so-so bits of FP (10 mins):
    • Staffing and Hiring
      • Harder to find programmers.
      • Programmers you do find tend to be more passionate and engaged.
      • Takes more time to up-skill than most other languages/techniques.
    • Ecosystem maturity
      • Tooling is not brilliant (compared to Visual Studio and IntelliJ).
      • You will find gaps in libraries (though less than you'd think).
  • Paths to FP (5 mins):
    • Through Scala/JS/etc (evolution).
    • Straight to Haskell (revolution).
    • Back-porting to other languages (stealing the good bits).
  • Would you like to know more? (5 mins):
    • Resources and next steps for those interested.
    • Questions

Learning Outcome

The benefits and drawbacks of functional programming, as well as paths forward for those interested in applying it.

Target Audience

People who work in the software industry (engineers, product & project managers, scrum masters, etc)

Prerequisite

Some familiarity with day-to-day software development will be helpful. You won't need to have actually written code (though it helps wink).

schedule Submitted 2 weeks ago

Comments Subscribe to Comments

comment Comment on this Proposal
  • Alistair Sloley
    By Alistair Sloley  ~  2 weeks ago
    reply Reply

    Aww yeah, this brings something spicy and exciting to the agenda. There's a good functional programming posse in CBR that would certainly find this interesting. Alex


  • Liked Howard Deiner
    keyboard_arrow_down

    Howard Deiner - How We Get Agile Transformations Wrong By Trying to Do It All So Right

    45 mins
    Talk
    Intermediate

    Sorry to say it guys, but Agile has gone limp over the last few years.  As we get more and more coaches into the mix, both external as well as internal, organizations somehow have forgotten that it’s software that we’re trying to produce.  Not great stand-ups.

    Technical practices matter.  In fact, if we could dispense with ALL process and still create the valuable quality software that is needed, we should do that.  From a Lean perspective, process adds no customer facing value.  But getting rid of all process is crazy talk.  Even Fred George, who promoted “Programmer Anarchy” several years ago never got away from all process.  In reality, his movement was premised on driving business decision making directly into technical decision making, and completely empowering teams to “be” the company.  He premised the concept of “Programmer Anarchy” on using the best and brightest developers out there, and trusting that if they could do something as difficult as create great code that they could do the business decision making as well.

    But perhaps we don’t have the absolute best talent out there.  Perhaps it’s hard to lure people away from Google and Facebook because of the money and the chance to get great work environment and unbelievable work challenges (change the world, anyone?)  Does that mean that we have to go back into the Fredrick Winslow Taylor world view of “The One Best Way”?  With that way becoming making a choice between Scrum, SAFe, Lean/Kanban, and other development processes?

    I’d like to convince you that what’s going to work for your organization and your employees is something in the middle.  I, of course, lean into the “better technical practices will yield better outcomes” frame of mind.  You may as well.  But when Garrison Keillor said, on “A Prairie Home Companion” (a long running radio show on National Public Radio in the States), “Well, that's the news from Lake Wobegon, where all the women are strong, all the men are good looking, and all the children are above average”, that was satire!  And the same is true of your organization.  It can logically be true that all organizations’ developers are all above average.  But we can hold people to an acceptable level of technical practices that will yield in writing better code than merely having a process that talks about writing better code. 

    This session will speak to the specifics of the whats and whys.

  • Liked Dave Bales
    keyboard_arrow_down

    Dave Bales - Causal Loop Diagrams: How To Enhance Your System Thinking

    Dave Bales
    Dave Bales
    Agile Coach
    AgileMe
    schedule 3 weeks ago
    Sold Out!
    40 mins
    Case Study
    Intermediate

    Popularised in Peter Senge’s The Fifth Discipline, causal loop diagrams provide a diagramming approach to mapping out the cause and effect landscape in a wider system.
    The technique seems to have been overlooked in modern times, and yet it is a powerful tool to evaluate and discover virtuous or vicious cycles in the system and trade-off balances between opposing forces.

    This technique is much more powerful and yet more subtle than the five whys or other root cause analysis techniques, and looks to map out the upstream causes and downstream effects in a dynamic environment. High-end diagrams can illustrate areas of high pressure that either perpetuate a negative loop (vicious cycle) or a positive loop (virtuous cycle.) This approach has helped me enormously in understanding how to position an Agile adoption that is sensitive the dynamics at play in a program or enterprise landscape, most often when the solution or combination of solutions are not immediately obvious.

    This talk will present some simple techniques to help you to use causal loop diagrams to map out your own systems and contexts and become aware of the cause and effects within your landscape.