How can we apply the lessons of functional programming to the design of software systems? How can we make software more transparent to developers? Using examples in Clojure, this talk will discuss ways to think about data, processes, isolation, and visibility.
One reason programming is hard is because it is so difficult to observe what is happening when a program runs. Programming languages and libraries rely on abstractions which either hide important details or produce too much information to consume. Developers come to depend on ever-more-sophisticated tools to examine programs and diagnose failures. However, with a little care and design, it is possible to build systems which lend themselves to easier comprehension. This talk will introduce some general guidelines for designing systems which make their data and abstractions more transparent to developers, using code examples in Clojure.
Stuart Sierra is a developer at Relevance, Inc., a member of Clojure/core, and the co-author of "Practical Clojure" (Apress, 2010) and "ClojureScript: Up and Running" (O'Reilly, 2012). He has been involved with many open-source technologies including Clojure, ClojureScript, Ruby on Rails, Hadoop, and Solr.