Mark Seemann on heuristics for software engineering
Mar 14, 2022
auto_awesome
Guest Mark Seemann, software engineer and author, discusses heuristics and cognitive constraints in software engineering, the decision of choosing a programming language, vertical slicing in software development, the culture of change and pride in work, code readability and rhythm, and recommends a book and blog for engineers to advance their careers.
Establish a personal rhythm as a software engineer by taking regular breaks and engaging in activities like grocery shopping or physical exercise to stimulate creativity and productivity.
Implement code reviews as part of the team's regular processes, setting aside specific times during the day for timely feedback and improvement, promoting collaboration and efficient codebase maintenance.
Triangulation in test-driven development helps ensure code works correctly and handles different conditions, leading to more reliable and robust software.
Deep dives
Personal Rhythm: Taking Breaks and Stepping Away from the Computer
One of the main ideas in Mark Zeman's book, 'Code That Fits Your Head,' is the importance of establishing a personal rhythm as a software engineer. Zeman emphasizes the need to take regular breaks and step away from the computer to maintain productivity. He suggests using techniques like the Pomodoro Timer, which reminds programmers to take breaks every 25 minutes. Zeman believes that getting away from the computer regularly allows for new insights and prevents wasted time going in the wrong direction. He also advocates for activities like grocery shopping or physical exercise during the day to stimulate creativity and productivity.
Team Rhythm: Implementing Code Reviews and Establishing Regular Processes
In 'Code That Fits Your Head,' Mark Zeman also discusses the importance of establishing team rhythm. He suggests implementing code reviews as part of the team's regular processes. Rather than waiting days for a review, Zeman proposes setting aside specific times during the day for code reviews, allowing team members to provide timely feedback. This approach promotes collaboration and allows for immediate feedback and improvement. Zeman also suggests incorporating regular activities into the team rhythm, such as updating dependencies on a weekly or monthly basis, to ensure the code base remains up-to-date and efficient.
Triangulation: Applying Test-Driven Development Principles
Zeman discusses the concept of triangulation and its connection to test-driven development (TDD). In TDD, developers write tests first and then write code that passes those tests. Triangulation is the process of gradually making code more general to handle multiple test cases, ensuring that the code is robust and flexible. Zeman draws a parallel to the techniques used in navigational triangulation, where multiple signals are used to pinpoint locations accurately. Triangulation in TDD helps ensure that code works correctly and handles different conditions, leading to more reliable and robust software.
Embracing Engineering Mindset and Craftsmanship
In 'Code That Fits Your Head,' Mark Zeman explores the balance between an engineering mindset and craftmanship in software development. While he acknowledges the importance of personal pride in one's work, Zeman suggests that prioritizing an engineering approach can benefit teams and the overall software development process. He argues that adopting engineering practices and focusing on collective outcomes rather than individual preferences can lead to more effective and collaborative development. Zeman highlights the importance of finding the right balance between personal passion and the needs of the team and clients.
Recommended Resources: 'Code That Fits Your Head' Book and 'Planet Geewiz' Blog
To explore the concepts discussed in 'Code That Fits Your Head' in more detail, readers can refer to the book itself, which offers an extensive bibliography and references for further reading. Additionally, Mark Zeman's blog, 'Planet Geewiz,' provides valuable and free resources for software engineers. Readers can access years' worth of blog posts covering various topics related to software engineering and development practices.