Conference Presentation, Keynote, Lecture
The Future of Software Development
Shift in the Computing Paradigm
- The traditional "1970s computer" model (single CPU, standalone) has vanished, replaced by a fragmented ecosystem spanning massive server clusters, mobile devices, and IoT endpoints (e.g., thermostats).
- Moore's Law Limitations: Performance no longer scales predictably with time; developers must now optimize for power efficiency and battery life on resource-constrained edge devices.
- New System Characteristics: Modern distributed environments are defined by high latency, disorder, and frequent partial failures, rendering legacy computation models inadequate.
- Industry Struggle: Pure engineering approaches using C and object-oriented programming have reached a "wall" where stacking abstractions ("teacups") increases complexity rather than reducing it, particularly in the era of big data and Hadoop.
Reconvergence of Industry and Research
- After a "depth-first traversal" of pragmatic industry solutions (leading to universal SQL and object-oriented dominance), the field is returning to first-principles academic research.
- Catalyst: The inability of current abstractions to handle new machine realities is driving collaboration, with research projects like Jan Stojka's Spark (Berkeley) leading the charge.
- Core Philosophy: The guiding principle is gaining power through simplicity and mathematical foundations rather than adding layers of complexity.
Emerging Technical Approaches for Distributed Systems
- Commutative Replicated Data Types (CRDTs):
- Eliminate the need for complex coordination protocols (e.g., Paxos) by using data types that update correctly regardless of operation order.
- Adoption: Already integrating into industry, notably within the implementation of React 2.0.
- Immutable Event Logs:
- Replaces shared mutable state (a source of disaster in distributed systems) with append-only logs representing the history of all events.
- Notable Projects: Apache Kafka, Apache Samza, and the University of Auckland's OctopusDB, which reimagine databases based on transforming logs into state.
- Commutative Replicated Data Types (CRDTs):
Application of Mathematical Simplicity to Other Domains
- Immediate Mode UI:
- Adopted by Facebook to solve UI performance and reasoning issues; redraws the entire interface every frame as a pure function of application state.
- Replaces state-heavy imperative code (e.g., button hover states) to ensure deterministic outcomes and ease of optimization.
- Constraint Programming & Solvers:
- Revival of BAT and SMT solvers, now significantly faster, to replace manual logic in complex search and layout problems.
- Examples: Apple's iOS Auto Layout uses the Cassowary linear inequality constraint solver.
- SQL Alternatives (Datalog):
- A movement to replace SQL with Datalog to enable general-purpose databases that compete with specialized ones.
- Industry Implementation: Rich Hickey's Atomic database is built entirely on Datalog.
- Immediate Mode UI:
Forward-Looking Implications
- Democratization of Computation: Simplifying foundational systems could make programming accessible to non-experts, enabling broader access to machine learning and predictive capabilities.
- Reversal of Current Trends: The industry is moving away from "actor models" and legacy C-based assumptions toward fundamentally different computational thinking required for the new machine reality.
- Long-term Vision: The computer is returning to its role as a simple, reliable tool, shifting focus from managing system complexity to solving user problems.