Published Sep 3, 2019

Episode 203: Leslie Lamport on Distributed Systems

Turing Award winner Leslie Lamport delves into the intricacies of distributed systems, illuminating Byzantine faults, the significance of precise system specifications like TLA+, and his groundbreaking work on logical clocks and Paxos algorithms, while emphasizing the critical role of strategic thinking before coding.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • Pre-coding

    Leslie Lamport emphasizes the critical role of pre-coding thought processes in software development. He argues that the success of a system is determined before any code is written, highlighting the importance of understanding the problem and designing a robust solution. Lamport illustrates this with the example of sorting algorithms, noting that choosing the right algorithm, like quicksort over bubble sort, is crucial for efficiency 1.

    The battle is won or lost before a single piece of code is written.

    ---

    He further explains that simplicity in design should be achieved at a conceptual level, separate from coding techniques 2.

       

    Mathematics

    Mathematical thinking and precise specifications are pivotal in programming, according to Lamport. He believes that understanding a problem mathematically is essential for accurate descriptions and solutions 3. Lamport stresses the importance of precision in writing specifications, arguing that a specification language must have a rigorous meaning to be effective 4.

    The important thing is the precision, the rigor that in order to understand things, you have to write them precisely.

    ---

    He notes that while learning to write specifications requires effort, it can lead to better results, as evidenced by its successful application at Amazon 5.

       

    Strategies

    Lamport discusses strategies for writing and iterating on specifications, emphasizing the iterative nature of this process. He explains that specifications can range from simple English sentences to complex mathematical descriptions, depending on the problem's difficulty and importance 6.

    Anything you do is an iterative process. You start by thinking about something, and then you start writing it.

    ---

    Lamport also highlights the challenges programmers face in adopting these practices, noting that while it may be difficult initially, it ultimately leads to better programs and efficiency 7.

Related Episodes