40 Years Of Software Engineering Experience In 19 Minutes

Continuous Delivery
28 Aug 202419:09

Summary

TLDRDave Farley, a veteran software developer with over 40 years of experience, shares key lessons from his journey in software development. From learning the importance of clear, readable code and the power of abstraction to mastering object-oriented programming and embracing continuous delivery, his insights highlight the evolution of software engineering practices. Farley's narrative emphasizes the significance of understanding underlying systems, the balance between abstraction and detail, and the application of these principles in building high-performance financial exchanges, ultimately advocating for an engineering approach to software development.

Takeaways

  • πŸ˜€ Dave Farley's passion for programming began with a Sinclair ZX81 and writing simple games in BASIC.
  • πŸ› οΈ Learning Assembly Language was crucial for understanding computer hardware and creating faster programs.
  • πŸ” The importance of abstraction in programming was highlighted, as it allows for solving complex problems without getting bogged down in details.
  • πŸ“š Early experiences with code listings in magazines taught Farley the value of writing clear, understandable code.
  • πŸ”„ The transition from low-level programming to higher-level languages like C++ was a significant step in his career, enhancing problem-solving capabilities.
  • πŸ”„ Object-oriented programming was a revelation, showing that code could be more about the relationships between components than the logic itself.
  • πŸ’‘ Farley's work on distributed systems at Apricot Computers deepened his understanding of the complexities and potential of such systems.
  • πŸ”§ The concept of 'mechanical sympathy' was developed at elmax, emphasizing the need to understand underlying systems to effectively abstract them.
  • πŸ”„ Continuous integration and the deployment pipeline were pivotal in improving software development efficiency and quality.
  • πŸ† At elmax, Farley led a team that built a high-performance financial exchange, demonstrating the success of applying continuous delivery principles.

Q & A

  • What was Dave Farley's first exposure to a computer?

    -Dave Farley's first exposure to a computer was when his then-girlfriend, now wife, brought home a Sinclair ZX81 1K computer from her parents, which her university lecturer father had brought for the holidays.

  • What was the first program Dave Farley wrote in BASIC?

    -The first program Dave Farley wrote in BASIC was to count and display numbers on the screen, which was a step up in complexity from 'Hello World'.

  • Why did Dave Farley start learning Assembly Language?

    -Dave Farley started learning Assembly Language because he found BASIC too slow for writing the simple games he wanted to create, and Assembly Language allowed him to write programs that seemed astoundingly fast at the time.

  • What was the impact of the BBC Basic listing for the board game Reversi on Dave Farley's programming style?

    -The BBC Basic listing for Reversi left a deep and lasting impression on Dave Farley, showing him the importance of writing tidy, readable, and well-structured code that is simple to understand and easy to change.

  • How did Dave Farley's early experiences with computers influence his later career?

    -Dave Farley's early experiences with computers, including programming in BASIC and Assembly Language, gave him a deep understanding of how computers work, which later helped him in systems programming and in designing software that abstracted complex details effectively.

  • What did Dave Farley learn from his experience with the Intel 486 processor regarding Assembly Language programming?

    -Dave Farley learned that programming in Assembly Language was becoming too complex and detail-oriented due to the introduction of instruction pipelining in the Intel 486 processor, which made it difficult to write efficient code without remembering a lot of intricate details.

  • How did Dave Farley's work at Apricot Computers contribute to his understanding of distributed systems?

    -At Apricot Computers, Dave Farley worked on various projects including security systems for networks of computers and a system for automatically installing and configuring operating systems, which gave him a healthy respect for the complexities of distributed systems and an appreciation for message-based programming.

  • What was the significance of the deployment pipeline concept invented at ThoughtWorks?

    -The deployment pipeline concept, inspired by instruction pipelining from Intel chips, provided a way to get fast feedback from the commit stage of the pipeline and a high level of confidence in the software's functionality, allowing for efficient parallel processing in software development.

  • How did Dave Farley's experience at Elmax shape his views on software development?

    -At Elmax, Dave Farley refined and evolved his approach to design, emphasizing the importance of working in effective ways over the choice of tools or frameworks, and recognizing that taking a full-blown engineering approach to software development improves efficiency and quality.

  • What is the concept of 'mechanical sympathy' that Dave Farley learned at Elmax?

    -Mechanical sympathy is the idea of understanding enough about how the systems and abstractions that code is built on work, to abstract them sensibly without compromising performance, essentially building software that works in harmony with the hardware for maximum advantage.

  • What impact did the lessons learned at Elmax have on Dave Farley's book 'Modern Software Engineering'?

    -The lessons learned at Elmax deeply informed Dave Farley's book 'Modern Software Engineering', reflecting the culmination of his career's experiences and emphasizing the importance of effective working methods, abstraction, and understanding the underlying systems in software development.

Outlines

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Mindmap

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Keywords

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Highlights

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Transcripts

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now
Rate This
β˜…
β˜…
β˜…
β˜…
β˜…

5.0 / 5 (0 votes)

Related Tags
Software DevelopmentPersonal JourneyCoding InsightsContinuous DeliverySystems ProgrammingObject-OrientedDistributed SystemsEvent-Based SystemsContinuous IntegrationExtreme ProgrammingFinancial Exchanges