Factor In People and Org to Build Software That Lasts - Vanessa Formicola
Categories: Podcasts , Software Testing Unleashed
Non-technical organizational forces, like misaligned incentives and career frameworks, drive architectural anti-patterns that create technical debt and testing challenges. Effective software reliability requires integrating technical and non-technical factors, including team dynamics, leadership, and systemic risks.
Software Testing Unleashed
Software Testing Unleashed - hosted by Richard Seidl. Different guest per episode. The official Show notes contain a comprehensive overview of the episode. Released as audio and video.
- https://www.richard-seidl.com/en/testing-unleashed
- https://www.youtube.com/playlist?list=PL48Mbm-L0hjB1OdwYi9h7jrq9t352-Zk_
Episode Details
- Show Notes: https://www.richard-seidl.com/en/podcast/software-architecture-sins-testing
- Published: 2026-07-23T03:59:00Z
- Duration: 00:25:27
- Author: Richard Seidl | Software Development & Testing Expert
Overview
The podcast explores how non-technical, organizational forces deeply influence software architecture and testing outcomes. It identifies recurring architectural anti-patterns, such as the “kitchen sink” service and the “Monolith Constellation,” where systems become high-risk due to neglect, lack of ownership, and fear of change. These issues are often rooted in misaligned incentives, career frameworks that reward unnecessary complexity, and delivery pressures that encourage technical shortcuts. The discussion emphasizes that poor architectural decisions - often driven by human and organizational dynamics - lead to long-term technical debt, increased maintenance costs, and challenges in testing effectiveness.
A central theme is the need for a holistic engineering approach that integrates both technical and non-technical factors in decision-making. This includes considering external variables like legislation and digital sovereignty, as well as internal factors such as team dynamics, leadership issues, product strategy, and individual career goals. The conversation highlights that reliability in software projects is undermined when these systemic elements are ignored. Success in testing and system stability depends not only on tools and technical skill but on a broad, system-level understanding that encompasses organizational culture, risk management, and cross-functional alignment.
What If
-
What if you audited your most critical service for “kitchen sink” anti-patterns this week?
- Move: Pick your most frequently changed or highest-failure-rate service. Map every function it performs and identify at least two responsibilities that belong in separate services. Draft a 1-page migration plan to decouple one of them.
- Why Now?: The longer this service grows unbounded, the higher your testing burden and blast radius - especially under delivery pressure. Early decoupling prevents irreversible technical debt.
- Expected Upside: Reduced regression test scope by 20 - 30%, faster debugging, and cleaner ownership that makes future refactors safer and easier to justify.
-
What if you restructured your next feature to avoid “Cirque du Soleil” coding - even if it feels less impressive?
- Move: For your next client or user-facing feature, enforce a “boring tech only” rule: no new frameworks, no design patterns beyond what’s necessary, and limit third-party libraries to zero unless proven essential. Document trade-offs in a 3-bullet decision log.
- Why Now?: Career incentives often reward over-engineering; pushing back now builds a habit of professional simplicity before complexity becomes cultural.
- Expected Upside: 30 - 50% faster debugging and onboarding, lower test maintenance, and higher delivery confidence - freeing time to solve real user problems.
-
What if you mapped the non-technical risks in your current project before writing another line of code?
- Move: List 3 internal non-technical risks (e.g., team turnover, unclear product strategy, misaligned incentives) and pair each with a mitigation tactic (e.g., document knowledge, define exit criteria, align on metrics). Share it with a stakeholder.
- Why Now?: Hidden human and organizational forces often derail technically sound projects - anticipating them now prevents wasted effort later.
- Expected Upside: Fewer mid-project pivots, more realistic timelines, and greater stakeholder trust - leading to smoother delivery and higher-quality testing outcomes.
Takeaway
- Audit your current codebase for “kitchen sink” services or modules that aggregate unrelated functionalities, and plan to decouple them into focused, owned components to reduce complexity and blast radius.
- Align your technical decisions with business timelines and organizational incentives by documenting non-technical pressures (e.g., delivery deadlines, career metrics) that influence architecture, and use this awareness to push back or adjust scope proactively.
- Refactor or avoid over-engineered solutions (“Cirque du Soleil coding”) by enforcing a simplicity review for new features, asking: “Does this need multiple design patterns or can it be solved with basic, maintainable code?”
- Evaluate your system’s monolithic or high-risk components by identifying services lacking tests, documentation, or clear ownership, then implement incremental improvements like adding logging, monitoring, or contract tests to reduce fear of change.
- Adopt a holistic engineering checklist before starting new projects, covering at least one external factor (e.g., regulatory trends), one internal org dynamic (e.g., team bandwidth), and one people consideration (e.g., key person dependencies) alongside technical planning.
For a PDF of longer Software Testing Podcast Episode Summaries with Briefing Notes and more detailed summary notes, visit EvilTester Patreon Podcast Summaries.