An Evolutionary Approach to Managing Software Entropy
As an industry, we’re not very good at managing tech debt. Yesterday's big balls of mud are likely to become tomorrow’s big buckets of glue. Wouldn’t it be nice if we had strategies that helped us to:
- Balance and evolve quality while delivering features?
- Pinpoint hotspots in code? At multiple levels of detail?
- Heighten situational awareness of system health and hygiene?
- Conduct data-driven, constructive critiques within our team?
- Automate (useful) measurement, putting quality gates in place to self-govern as a team?
In this talk, I’ll share my lightweight approach and toolchain for realizing these aspirations. Expect lots of tips and tricks for combating entropy in long-lived, software-intensive products shared by teams and large organizations by creating strategies and tactics that help visualize, prioritize, and manage digital product evolution.
Outline/Structure of the Talk
This is a refinement of a talk I delivered at DevNexus 2019 earlier this year with a positive reception. The talk was recorded (see video and/or slides below).
This iteration is about tuning and trimming which I think fits well with the slightly shorter time slot at AgileDC.
The main learning outcome is about giving attendees a start in developing strategies for managing change in systems which breaks down to a set of more discrete activities and challenges:
- Create transparency into technical debt at management and developer level.
- Visualize quality at an aggregate, whole product level.
- Use visualizations to drill into hotspots in a codebase.
- Align debt payback with product roadmap - high-interest vs. low-interest debt.
- Techniques for balancing quality with delivery: managing debt while delivering.
- Level up team skills on refactoring, quality metrics, and debt payback.
Developers, Tech Leads, Architects, Managers & Leaders
Prerequisites for Attendees
Attendees should have a basic understanding of software quality metrics, refactoring, and technical debt.
schedule Submitted 1 month ago
People who liked this proposal, also liked:
Max Saperstone - Building Confidence In Your Automated TestsMax SaperstoneSr. Consultant: Test AutomationCoveros
schedule 2 months agoSold Out!
The growth of automation testing in today’s software development organizations is changing the the way we test applications. Software development practices have matured over the last 30 years, to include all forms of testing to verify software quality. In the last ten years, there has been a huge spike in the adoption of automated tests, effectively replacing some of these manual testing practices, and supplementing many traditional testing activities. Many parts of the software development industry, however, are wary of replacing manual testing with automated testing. Not only is there often a lack of confidence in the automation tests, many see automated testing as fragile, unmaintainable, and ultimately, something delivering a low return on investment. Max believes that by employing mature software development techniques, we can achieve robust, maintainable, tests, that deliver confidence of the application under test. In addition to discussing how to structure automated tests that are cleaner, more maintainable and efficient, developer testing, and deployment techniques can be used to programmatically verify test correctness. Drawing on his experiences building test automation, test frameworks and advising organizations to adopt test automation, Max will walk us through how to mature your test automation practices.
Joel Tosi - Growing a Learning OrganizationJoel TosiDojo & Co
schedule 1 month agoSold Out!
How do you grow a continuously learning organization? If certifications and wikis were enough, organizations would be crushing it. In this session we look at how we learn in complex domains - focusing on tacit vs explicit knowledge; context learning; and growing coaches and teachers.
Robin Foster - Maximizing Agile Benefits Through Understanding Learning StylesRobin FosterConsultantCoveros
schedule 2 months agoSold Out!
The Agile Manifesto says we value people and interactions over processes and tools. Yet when we talk about the agile methods, we usually end up talking about processes. Agilists use timeboxing as a forcing function to draw out resolutions and decisions. What if we just needed a better way to describe our needs and issues? What if we could actually be more effective with our communication? Join Robin Foster as he explores the relationships between learning, memory, communication, teaching, and the agile framework. Discover the cognitive science behind the process of learning new information, strategies for using different learning styles to grow your brain and its mastery of concepts, and how to map these strategies to phases in the agile cycle to benefit the team's cohesion and ability to self-organize. Agile is not meant to be rigid, so why should we be rigid in the way we share information with our team members?