Adam is a programmer that combines degrees in engineering and psychology. He’s the founder of Empear where he designs tools for software analysis. He’s also the author of Your Code as a Crime Scene, has written the popular Lisp for the Web and self-published a book on Patterns in C. His other interests include modern history, music and martial arts.
Functional Programming in Production
Functional Programming is sold as a silver bullet. Yet most organizations lack real-world experience with the paradigm. It’s hard to adopt functional programming too since most public examples show small and isolated code snippets and it’s not clear how those pieces would fit together to form a system, a functional architecture. A real-world system also has to deal with non-functional side effects and the rapid feature growth of an evolving product. So how well does functional programming work in practice? What happens when you bet your company on a functional programming language? Will the hype transfers into productivity gains and cheaper maintenance?
In this presentation Adam shares his experience of building a large production system written in Clojure. You’ll learn about the advantages of functional programming when it comes to maintenance and how functional programming scales in cognitive terms. We’ll also discuss some architectural styles that fit well with a functional paradigm and learn why TDD has a diminishing return once you go functional. Finally you’ll learn about some potential pitfalls that are unique to a functional programming language in production. You don’t have to know Clojure to follow along – most ideas apply to any language – but a basic understanding of the functional paradigm is helpful. So come along and we’ll put the fun back into programming!
A Crystal Ball to Prioritize Technical Debt
The technical debt metaphor has taken the software world with storm. No wonder, since software projects have their fair share of challenges. Most organizations find it hard to prioritize and repay their technical debt. The main reason is due to the scale of modern systems with million lines of code and multiple development teams; No one has a holistic overview. So what if we could mine the collective intelligence of all contributing programmers and start to make decisions based on data from how the organization actually works with the code? This session introduces one such approach with the potential to change how we view software systems.
In this session you’ll get an introduction to techniques that help us uncover both problematic code as well as the social dimension of the teams that build your software. The techniques are based on software evolution and findings from various fields within psychology. This combination lets you prioritize the parts of your system that benefit the most from improvements, detect organizational issues and make practical decisions guided by data. Each point is illustrated with a case study from a real-world codebase. This is a new perspective on software development that will change how you work with code.