‘Never Rewrite’ is a mantra of ours in the programming realm. Often times when software developers encounter nightmare codebases, the thought crosses their mind to work towards a rewrite, a port to a new language, or despair that their code is unfixable.
It’s not unfixable, and we explore how to get started along with an array of other software topics in our eponymous podcast.
Last refreshed: ⓘ
Follow this podcast in the Metacast mobile app to refresh it and see new episodes.
Don't just listen to podcasts. Learn from them with transcripts, summaries, and chapters for every episode. Skim, search, and bookmark insights. Learn more
In this episode, Spriha Tucker, Field CTO at BuildKite, discusses the critical role of deployment and tight feedback loops in Continuous Integration and Continuous Deployment (CI/CD). She emphasizes understanding customer context, de-risking through rapid prototyping, and the importance of communication within development teams and with customers. The conversation highlights that effective CI/CD is about building trust and delivering value, not just using tools.
In this episode of Never Rewrite, Isaac Askew and Jeffrey Sherman emphasize the importance of understanding customer needs and the risks associated with maintaining old features while developing new ones. The conversation highlights the value of iterative delivery and the significance of API versioning in ensuring a smooth transition for users. Ultimately, they advocate for a pivoting approach rather than a complete rewrite, allowing for a more adaptive and responsive development process. (Isaac...
Today we highlight he significant impact and costs associated with hidden business rules in software development. We explore the challenges of implementation, the importance of documenting business rules effectively, and how AI can assist in managing these rules. Our discussion emphasizes the need for an internal product book to consolidate knowledge and improve communication among teams, ultimately leading to more efficient development processes.
Isaac Askew and Jeffrey Sherman discuss the social and emotional ramifications of failed rewrites in project management. They explore the loss of patience from leadership, the burnout experienced by teams, and the importance of taking responsibility for project outcomes. The discussion emphasizes the need for teams to salvage lessons from failures and to approach leadership with solutions rather than just problems. The conversation concludes with strategies for ensuring future success and mainta...
Isaac Askew, Dustin Rea, and Jeffrey Sherman delve into the complexities of developing Minimum Viable Products (MVPs) and the challenges of balancing simplicity with the need for future scalability. They discuss the Goldilocks problem in software development, emphasizing the importance of finding the right balance between over-engineering and under-engineering. The discussion highlights the distinction between maintainability and optionality, the significance of timing in product development, an...
Today we discuss the relationship between Conway's Law and software quality, exploring how a company's structure and culture can impact code quality. We delve into the signs of a toxic culture, the consequences of a 'yes culture', and strategies for identifying and changing company culture. The conversation emphasizes the importance of communication patterns and the long-term nature of cultural transformation in organizations.
We debate the merits of consolidating technology stacks versus diversifying them. Today we explore the implications of each approach on business value, engineering efficiency, and organizational dynamics. Key points include the importance of evaluating the business value of consolidation, the impact on developer fungibility, and the balance between engineering optimization and business leverage.
Jeffrey and Isaac dive into a comment made by Allen Holub to 'rebuild' instead of 'rewriting' legacy software and dive into the terminology. Show Notes: Allen Holub's thread mentioned: https://bsky.app/profile/allenholub.bsky.social/post/3lmcyvi3kag2f
Isaac and Jeffrey explore how to halt a rewrite, the importance of learning from the process, and how to effectively communicate changes in direction to a team. The conversation emphasizes the value of reframing discussions around rewrites to focus on new insights and solutions rather than perceived failures.
Guest Nick Gerace discusses the rewrite of the core engine at System Initiatives, detailing the challenges faced, the technical decisions made, and the importance of aligning development with business goals. The conversation covers the transition from the old engine to the new, the role of user feedback, and the iterative process that led to a more efficient and user-friendly product. Show Notes: Domain-Driven Design book: https://www.oreilly.com/library/view/domain-driven-design-tackling/032112...
Guest Paul Stack shares his experiences in transforming a massive logging infrastructure from a monolithic architecture to a microservices-based system. He discusses the challenges faced during the transition, the implementation of Kafka for log management, and the importance of data retention and cost management. The conversation highlights the evolution of logging practices and the empowerment of teams through decentralization, ultimately leading to a more efficient and effective infrastructur...
Nick Stinemates from System Initiative joins us to explore the complexities and challenges of software rewrites. We discuss the nuances between rewrites and refactors, the pitfalls of full rewrites, and the importance of incremental changes. The conversation delves into team dynamics during rewrites, the existential reasons that can drive a rewrite, and the parallels between software rewrites and software adoption. Show Notes: Nick's X account: https://x.com/nickstinemates...
Jeffrey and Isaac explore the complex trade-off between providing immediate relief for software issues versus investing time and resources into finding a permanent cure. They discuss the implications of these choices on customer satisfaction, business budgets, and the overall health of software systems. Through real-world examples, they illustrate how sometimes quick fixes can be more practical than ideal solutions, emphasizing the importance of understanding the context and priorities of a busi...
Isaac, Dustin, and Jeffrey discuss the challenges faced by non-technical founders when working with developers. They explore issues of trust, communication, and the importance of iterative development. The discussion emphasizes the need for clear frameworks in product development, the significance of addressing technical debt and security concerns, and how to identify red flags in developer behavior. The conversation concludes with advice on balancing survival and enhancement in development and ...
Guest Dan Hon discusses the complexities and risks associated with rewriting government software, particularly in the context of social security systems. He emphasizes the importance of understanding legacy systems, the role of ideology in software development, and the need for transparency and user-centered design. The discussion also touches on lessons learned from the private sector and the challenges of modernization in government services. Show Notes: Dan's LinkedIn: https://www.linkedin.co...
Isaac Askew and Jeffrey Sherman discuss DOGE's proposed rewrite of the Social Security system, focusing on the implications of transitioning from COBOL to a modern programming language like Java. They explore the motivations behind the rewrite, the challenges of legacy code, the potential role of AI, and the human cost of possible failures. The conversation culminates in predictions about the outcome of the rewrite and the impact on millions of Americans relying on Social Security. Show Notes:Wi...
Isaac tells a 'fulfilling Friday' story about how he gained the attention of a famous tattoo artist. He just needed to act quickly and send money to secure the appointment...
Isaac Askew and Jeffrey Sherman discuss the complexities of testing infrastructure changes with guest Rob Gonnella. They explore the importance of building a robust testing infrastructure, the role of different types of tests, and the challenges faced when transitioning to new systems. Rob shares his experiences in developing local testing environments, engaging developers, and identifying bugs through end-to-end tests. The conversation emphasizes the need for a balanced approach to testing, par...
Never Rewrite is going analog! Out of 2000 minutes over the last two years we think we've got plenty of content to coalesce it into a book. If you have a rewrite story to share, now's your chance to get forever immortalized in the podcast hosted by two randos.
Jeffrey and Isaac explore the motivations and expectations surrounding software rewrites from various stakeholders, including developers, IT leadership, product groups, marketing, finance, support, and customers. They discuss the perceived benefits and the reality of rewrites, emphasizing that while many believe rewrites will lead to improved reliability and a better work environment, the truth is that rewrites often fail to deliver on these promises.
Isaac and Jeffrey discuss the complexities of managing work priorities in a constantly changing environment. They explore the challenges of putting work down when priorities shift, emphasizing the importance of iterative development and smaller work increments to minimize risk and maintain productivity. The discussion also touches on the balance between delivering features and building trust with users, particularly in the context of product releases that may impact customer satisfaction.
We're joined today by Dustin Rea to discuss frameworks for prioritizing technical debt in software development. We explore the 'Jobs to Be Done' framework, emphasizing the importance of aligning engineering and product teams on customer needs. The conversation covers strategies for managing tech debt effectively, the significance of team dynamics, and the role of technical leadership in guiding prioritization efforts.
Isaac Askew and Jeffrey Sherman discuss the implications of externalizing costs in software development, particularly the consequences of pushing pain to users. They explore the differences between internal and external software, the importance of customer experience, and the cost of support when users face difficulties. The discussion highlights the ethical considerations of prioritizing features over user satisfaction and the long-term impact on both customers and developers.
Isaac Askew and Jeffrey Sherman explore the dynamics between two types of developers: the 'hero' who swoops in to solve problems and the 'lifeguard' who encourages self-sufficiency. They discuss the tension that arises from these differing approaches and how to navigate conflicts between them. The conversation emphasizes the importance of balance in mentoring and the need for developers to understand when to guide and when to let others learn through experience.
Isaac Askew and Jeffrey Sherman discuss the disastrous app rewrite by Sonos, exploring the technical debt, decision-making processes, and the consequences of the rewrite. They emphasize the importance of incremental updates over big bang releases and reflect on the lessons learned from this case. Show notes: https://www.wsj.com/tech/sonos-speakers-app-ceo-24250f2c https://www.linkedin.com/pulse/what-happened-sonos-app-technical-analysis-andy-pennell-wigwc/...
Erik Enge, COO of Ghost, discusses the principles of creating a culture of continuous improvement within organizations. He emphasizes the importance of applying the scientific method in business, setting measurable goals, and maintaining a learning loop to reflect on outcomes. The discussion also covers the significance of collaboration within teams, the risks associated with rewriting code, and the necessity of keeping context in software development. Real-world examples illustrate how these pr...
In this conversation, Isaac and Jeffrey discuss the advancements of AI in coding, reflecting on its potential to replace junior developers and the evolving role of developers in the tech industry. They explore the implications of AI tools on productivity, the necessity for developers to adapt their skills, and the future landscape of software development as AI continues to improve.
Isaac and Jeffrey discuss the importance of reassessing the necessity of meetings, especially at the beginning of the year. They emphasize the need to cancel unnecessary meetings, optimize meeting structures, and empower team members to decline meetings that do not require their input. The conversation highlights the significance of effective communication and time management in the workplace.