Join 𝐒𝐢𝐦𝐨𝐧 𝐒𝐭𝐞𝐰𝐚𝐫𝐭, Creator of Selenium WebDriver, as he explores managing complexity in production and test code, as well as CI pipelines, emphasizing testability and fast feedback loops. You'll also learn to strategically place complexity within a system and discover ways to simplify and streamline your CI processes by rethinking basic assumptions with modern technology.
35+ Sessions
60+ Speakers
20,000+ Attendees
2000+ Minutes
Live Q&As
The video is a keynote session by Simon Stewart at the Testμ (TestMu) 2024 conference, focused on the topic of balancing complexity and simplicity in software development.
Understanding Complexity and Simplicity: Simon Stewart discusses the concepts of complexity and simplicity in software development. He explains that simplicity is often viewed as the absence of complexity, but it's more nuanced. Complexity can be "essential" (necessary for the task) or "accidental" (unnecessary or extraneous).
Navigating Complexity in Software Development:
Accidental vs. Essential Complexity: Simon uses examples, such as the Selenium project, to illustrate how certain complexities are inherent ("essential") while others are avoidable ("accidental").
Applying Complexity Thoughtfully: Developers can decide where to place complexity in their systems, either by distributing it across components or centralizing it in specific areas.
Examples from Programming Languages:
Evolution of Languages: Simon discusses how programming languages like C++, Java, and Go manage complexity differently. For example, Java was created to simplify some aspects of C++, while Go aimed to reduce complexity further by adopting a simpler syntax and handling concurrency more effectively.
Optimizing CI/CD and Build Processes:
Simon highlights the benefits of using build tools like Bazel to handle complexity. Tools like Bazel allow for more efficient CI/CD processes by determining which parts of a project need to be rebuilt, reducing unnecessary builds and speeding up feedback loops.
Continuous Deployment and Feedback Loops:
Simon advocates for continuous deployment, where changes are pushed to production frequently in small increments to reduce risk and improve feedback loops.
Trade-offs in Software Engineering:
The session emphasizes making conscious choices about where to place complexity in software systems, whether in code, workflows, or infrastructure. The goal is to balance speed, safety, and cost-effectiveness.
Key Advice for Developers:
Avoid unnecessary cleverness and over-engineering.
Focus on solving the specific problem at hand rather than creating overly generic solutions.
Use patterns like "Don't Repeat Yourself" (DRY) to manage complexity effectively.
Applying Simplicity in Practice:
The session concludes with practical advice on how to apply the principles of simplicity and complexity to day-to-day software engineering to achieve faster, safer, and more cost-effective deployments.
The talk provides a comprehensive framework for understanding and managing complexity in software development, encouraging developers to make informed decisions to optimize their workflows and codebases.
Testμ
Testμ (TestMu) is more than just a virtual conference. It is an immersive experience designed by the community, for the community! A 3-day gathering that unites testers, developers, community leaders, industry experts, and ecosystem partners in the testing and QA field, all converging under a single virtual roof. 😀
Elevating Your Communication to Drive Excellence in QA Teams | Erika Chestnut | LambdaTest
TestMu 2024Vision-First Test Automation - What, Why, How, & Lessons Learned | Jason Huggins| LambdaTest
TestMu 2024