There are many bad ideas in software and most of them aren’t going to work. Most software environments make it difficult to quickly and safely eliminate these bad ideas. Strongly typed functional programming reduces as many bad ideas as possible by maximising feedback and communication. With a friendly programming environment like Haskell or Elm these bad ideas can be weeded out as you type them and changes can be made with confidence, the tools are the guide and give positive feedback so you know when you're done.
We’ll also address some of the perceived negatives of functional programming: hiring experienced developers is less of a problem than most people would think and you don't need an army of algebraic astronauts in order to write functional programs.
We’ll show how we’ve found functional programming the ideal environment for treating software as collective understanding. It’s allowed us to:
- Clearly define the current intent and specification of the system,
- Incrementally improve our code and keep the interest rates down on our technical debt,
- Test our code through high level properties and reduce or eliminate low level, mechanical testing,
- Reason about what code is doing to data and how you can describe a program through the transformation of data from one structure to another, and
- More easily reuse code at different levels of abstraction.
Outline/Structure of the Talk
General Outline of Slides:
- Introduction to Agile Principles and How they relate to Strongly Typed Functional Programming
- Why Functional Programming is a friendly environment
- Error free (nearly) programming
- Fast feedback
- Describing a system with types
- How to handle a lack of Functional Programming Experience
- Fearless Refactoring
- Growth and Low Interest Rates on Technical Debt
An appreciation of how functional programming can give you a more resilient, more relaxing environment to rapidly deal with changing requirements. How you can grow your team with the right expectations of having a good learning environment.
Software Developers and Managers of Software Developers
Prerequisites for Attendees
Some basic understanding of agile software development and firm opinions (good or bad) about functional programming.