Never Rewrite

Follow Never Rewrite
Share on
Copy link to clipboard

‘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.

Jeffrey Sherman and Isaac Askew


    • Jan 10, 2025 LATEST EPISODE
    • weekly NEW EPISODES
    • 23m AVG DURATION
    • 86 EPISODES


    Search for episodes from Never Rewrite with a specific topic:

    Latest episodes from Never Rewrite

    Episode 86: Annual Reminder - Prune Your Meetings

    Play Episode Listen Later Jan 10, 2025 8:27


    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.

    Episode 85: 2024 Year In Review

    Play Episode Listen Later Jan 3, 2025 26:43


    Isaac and Jeffrey reflect on their podcast journey throughout 2024, discussing their goals, achievements, and notable episodes. They share insights on their recording process, the impact of AI on their discussions, and the concept of 'musketeering' in problem-solving. The hosts also highlight their listener engagement and growth, expressing gratitude for their audience's support and outlining plans for the future.

    Episode 84: The Impact of AI on Interviewing

    Play Episode Listen Later Dec 27, 2024 19:37


    Special guest Paul Giron discusses the transformative impact of AI on the interview experience, highlighting changes in candidate assessment, the shift towards remote interviews, and the evolving expectations of candidates. The discussion delves into the implications of AI in recruitment, including potential biases and the need for organizations to adapt their interview processes to attract top talent. Paul's contact information: https://www.linkedin.com/in/paulpgiron/ paul@g-techrecruitment.com

    Episode 83: The Impact of AI on Recruiting

    Play Episode Listen Later Dec 20, 2024 33:32


    Special guest Paul Giron discusses the transformative impact of AI on recruiting and interviewing processes. He highlights the challenges faced by recruiters in adapting to AI tools, emphasizing that while AI can streamline resume sorting, it does not necessarily improve the quality of hires. The discussion also touches on the importance of understanding high performers within organizations and how structured interviewing can enhance recruitment outcomes. Ultimately, the conversation reflects on the need for organizations to invest in training recruiters to leverage AI effectively and improve hiring practices. Paul's contact information: https://www.linkedin.com/in/paulpgiron/ paul@g-techrecruitment.com

    Episode 82: Can You Like Tests And Also Believe You're Faster Without Them?

    Play Episode Listen Later Dec 13, 2024 21:45


    Isaac and Jeffrey discuss the balance between unit testing and the need for speed in software development. The discussion delves into the contexts in which testing is most valuable, the challenges of rapid development, and real-world examples of testing practices. Ultimately, they emphasize the importance of adapting testing strategies based on the specific project and team dynamics.

    Episode 81: The Pause

    Play Episode Listen Later Dec 6, 2024 11:22


    'The Pause'—a critical juncture where development on the old system is halted in favor of completing a new system. Isaac and Jeffrey discuss the inherent risks of this approach, the implications for customer value, and the often misguided desire for dramatic reveals in software releases. The conversation emphasizes the importance of maintaining continuous value delivery and offers strategies to avoid the pitfalls associated with pausing development.

    Episode 80: What is "De-Risking"?

    Play Episode Listen Later Nov 29, 2024 12:27


    Isaac and Jeffrey delve into the concept of de-risking in project management. They discuss the importance of iterative delivery over big bang releases, using gambling analogies to illustrate risk management strategies. The conversation emphasizes the value of decoupling projects to reduce risk and the significance of obtaining feedback early in the development process. The hosts highlight how these strategies not only mitigate risks but also provide opportunities for value delivery and informed decision-making throughout the project lifecycle.

    Episode 79: The Toxicity of "Certainty"

    Play Episode Listen Later Nov 22, 2024 18:28


    Isaac and Jeffrey explore the concept of certainty in software development and its potential toxicity. They discuss how certainty can lead to poor decision-making, the importance of experimentation, and the human behaviors that contribute to toxic environments. The dialogue emphasizes the need for a balance between certainty and uncertainty, particularly in leadership roles, and highlights the dangers of strong opinions that masquerade as certainty.

    Episode 78: Is Frontend Modernization a Valid Reason for Rewriting?

    Play Episode Listen Later Nov 15, 2024 15:32


    Isaac and Jeffrey discuss the validity of rewriting front-end systems for modernization. They argue against the notion that a dated front end necessitates a complete rewrite, emphasizing the importance of iterative updates and customer experience. The conversation explores the risks of big bang rewrites, the benefits of gradual improvements, and the need for design consistency while still delivering value to customers. Ultimately, they advocate for a more thoughtful approach to modernization that prioritizes user experience over aesthetic uniformity.

    Episode 77: Who Gets To Define 'Shit' Code?

    Play Episode Listen Later Nov 8, 2024 15:19


    Isaac and Jeffrey explore the subjective nature of coding standards and what constitutes 'shit code.' They discuss the lack of industry-wide standards, the importance of intention in coding, and the balance between flexibility and adaptability in code quality. The conversation also touches on the fluidity of language and how it parallels coding practices, emphasizing that coding standards should evolve with the context and needs of the project.

    Episode 76: Aligning Your Company Standards to its Lifecycle Phase

    Play Episode Listen Later Nov 1, 2024 24:31


    Guest Dustin Rea joins us to discuss the importance of aligning a company's standards and processes with its lifecycle stages. The discussion covers five key phases: the MVP phase, where the foundation is built; the Product User Fit phase, focusing on understanding customer needs; the Product Market Fit phase, solidifying the offering; the Scaling Up phase, managing growth; and finally, the Multi-Product Platform phase, where companies expand their offerings. Each phase presents unique challenges and requires different approaches to maintain quality and efficiency.

    Episode 75: Rewriting is Gambling - A Lesson in Risk

    Play Episode Listen Later Oct 25, 2024 16:52


    Jeffrey and Isaac discuss the inherent risks associated with software rewrites, emphasizing how rewrites push risk to the end of the development cycle. The discussion highlights the need for iterative development and the significance of delivering independent components to ensure project success, particularly within the SaaS model, which thrives on continuous improvement and customer satisfaction.

    Episode 74: Musketeering

    Play Episode Listen Later Oct 18, 2024 11:14


    Jeffrey and Isaac explore the concept of 'musketeering' in software development, emphasizing the importance of collaboration in solving complex problems. They discuss the challenges of legacy code, the necessity of testing, and the strategy of 'divide and conquer' to tackle intertwined issues effectively.

    Episode 73: The Politics of Delivering Trivial Changes

    Play Episode Listen Later Oct 11, 2024 12:05


    Isaac and Jeffrey discuss the philosophy of continuous iteration in software development, emphasizing the importance of making small, incremental changes rather than large, risky updates. They explore the challenges of communicating the value of these trivial changes to non-technical stakeholders and the benefits of refactoring code for future development. The discussion also highlights the significance of storytelling in conveying the purpose and impact of these changes to a broader audience.

    Episode 72: Perfectionism in Programming

    Play Episode Listen Later Oct 4, 2024 26:50


    Isaac and Dustin Rea discuss the impact of perfectionism in programming, particularly how it can hinder project success. They explore the importance of launching minimum viable products (MVPs) to validate ideas in the market, the challenges of managing change in production software, and the balance between perfectionism and practicality. The discussion also highlights the significance of team dynamics and customer empathy in software development, as well as lessons learned from scaling and responding to customer demands.

    Episode 71: Are Ignorable Errors Still "Errors"?

    Play Episode Listen Later Sep 27, 2024 12:51


    Isaac and Jeffrey explore the complexities of error management in software development, particularly focusing on the significance of logs, the philosophical implications of ignoring errors, and the importance of proactive log management. They discuss how to differentiate between true errors and warnings, the role of telemetry in alerting, and the necessity of maintaining clean logs to enhance system understanding and customer experience.

    Episode 70: Resource Engineering

    Play Episode Listen Later Sep 20, 2024 22:34


    Isaac and Jeffrey delve into the concept of resource engineering, emphasizing the importance of understanding cost implications in engineering decisions. They discuss how engineers often overlook financial aspects while focusing on technical solutions, leading to potential inefficiencies. The dialogue highlights the need for engineers to have greater visibility into costs, particularly in cloud services like AWS, and how this awareness can drive better decision-making. They also explore the balance between optimizing costs and developing new features, advocating for a more business-oriented mindset among engineers to enhance overall effectiveness.

    Episode 69: Anxiety When Fixing a System You Didn't Create

    Play Episode Listen Later Sep 13, 2024 17:08


    Isaac and Jeffrey delve into the anxiety developers face when dealing with legacy systems they did not create. They explore the reasons behind the fear of fixing such systems, the challenges of refactoring, and the skills required to navigate these situations. The discussion emphasizes the importance of understanding legacy code, learning from it, and developing strategies to reduce anxiety when approaching refactoring tasks. Practical tips are provided for developers to build confidence and make meaningful contributions to legacy systems.

    Episode 68: The Fallacy of Rewriting Software to Save Money

    Play Episode Listen Later Sep 6, 2024 17:10


    Jeffrey and Isaac discuss the fallacy of rewriting software to save money. They highlight that organizations end up running multiple systems simultaneously, resulting in increased costs. The conversation also touches on the challenges of maintaining multiple versions of a software system and the importance of continuous delivery and iteration. It concludes by emphasizing the need to prove the ability to migrate existing pages before starting a rewrite.

    Episode 67: Revisiting "The Joel Test: 12 Steps to Better Code"

    Play Episode Listen Later Aug 30, 2024 38:50


    Jeffrey revisits The Joel Test, a 12-question test to determine if a software development team is set up for success. Jeffrey and Isaac discuss the relevance of each question in today's context and how the industry has evolved over the years. The topics covered include source control, building and deployment processes, bug tracking, bug fixing, project scheduling, specifications, working conditions, and tools. Show notes:https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-steps-to-better-code/

    Episode 66: Squashing the Right Bugs

    Play Episode Listen Later Aug 23, 2024 23:02


    Isaac and Jeffrey discuss the importance of effective bug bashing and how to prioritize bug fixes. They highlight the need for categorizing bugs, understanding customer impact, and installing analytics to make informed decisions. They also emphasize the importance of writing tests and having a team member close to the customer to provide context. They recommend starting with backlog grooming and prioritization before diving into bug fixing. Overall, the conversation provides valuable insights for managers and developers dealing with bug backlogs.

    Episode 65: Exploring Different Perspectives on Risk with Dustin Rea

    Play Episode Listen Later Aug 9, 2024 19:22


    Isaac, Dustin, and Jeffrey discuss different profiles for de-risking releases. They explore the perspectives of software engineers, project managers, product owners, and executives in managing risk. They debate the benefits of incremental releases versus giant functionality releases and the importance of user feedback in de-risking product changes. They also discuss the trade-offs between time, size, and change in managing risk. The conversation touches on the challenges of balancing risk and reward, the importance of lean strategies in startups, and the need to be prepared for success as well as failure.

    Episode 64: Aligning Yourself With the Company's Risk Profile

    Play Episode Listen Later Aug 2, 2024 16:10


    Isaac and Jeffrey discuss the importance of aligning oneself with a company's risk profile. They explore the concept of risk tolerance and how it varies depending on the company's stage of development and industry. They highlight the need for a balance between security and other business priorities, as well as the importance of having conversations about risk tolerance with managers and teams. They also touch on the potential misalignment between managers and companies, and the implicit cultural risk tolerance that can lead to security vulnerabilities. Overall, they emphasize the need for understanding and navigating risk in the context of software development.

    Episode 63: Fulfilling Friday: SMS Spamming Saved

    Play Episode Listen Later Jul 26, 2024 16:02


    Isaac shares a story about a project where a quick MVP was built to send text messages to users. As the project gained more partners and volume, it became clear that the system couldn't handle mass texting at scale. A small change in the architecture caused some batches of text messages to be reprocessed multiple times, resulting in some users seemingly receiving an excessive number of texts. However, through many strokes of luck, each area where duplicate texts could have been sent was saved by a downstream setting. The issue was resolved, and the team learned the importance of implementing proper safeguards and architecture.

    Episode 62: The Peculiar Failure of Correctly Predicting Problems

    Play Episode Listen Later Jul 19, 2024 18:45


    Isaac and Jeffrey discuss the peculiar failure of correctly predicting problems. Jeffrey shares his experience of being able to accurately predict problems in projects but failing to gain traction and prevent them. They explore the importance of buy-in from leadership and the need for a collaborative engagement structure. They also discuss the role of consultants and the difference between being diagnostic and being collaborative. The conversation highlights the challenges of convincing leadership and the potential consequences of not being able to prevent problems.

    Episode 61: Challenges of Multi-Product Platforms ft. Dustin Rea

    Play Episode Listen Later Jul 12, 2024 22:18


    Dustin Rea, CEO of Red Hook Agency, discusses the challenges and considerations of bringing new products into an existing platform and splitting products within the same platform. The conversation covers topics such as authentication and authorization, merging different products onto a platform, reorganizing teams, and converting internal tools to SaaS. The speakers also touch on the importance of onboarding experiences for new and existing customers.

    Episode 60: Anybody Could Have Done It...But I Actually Did

    Play Episode Listen Later Jul 5, 2024 12:47


    Isaac and Jeffrey discuss the feeling of anyone being able to make small, simple changes in code and question the value of their own contributions. They share anecdotes of fixing issues that others could have easily addressed but didn't, highlighting the importance of being the one to take action. They emphasize the value of iterative changes and the knowledge work involved in understanding the system. They also encourage developers to listen to complaints and pain points in order to identify opportunities for impactful improvements.

    Episode 59: The Myth of the Boy Scout Rule

    Play Episode Listen Later Jun 28, 2024 17:24


    Isaac and Jeffrey discuss the myth of the Boy Scout rule, which is the idea of leaving code better than you found it. Isaac shares his experience of encountering problems when trying to follow this rule in a codebase with no test coverage. He explains how fixing one issue led to unintended consequences and a cascade of errors. They emphasize the importance of being cautious when making changes in old and tightly coupled code and the need for thorough testing. They conclude that while refactoring is important, it should be done intentionally and not mixed with other changes.

    Episode 58: When You Can't Iterate

    Play Episode Listen Later Jun 14, 2024 21:24


    Isaac and Jeffrey discuss situations where software development teams are pushed to have fewer, larger releases. They highlight the challenges of big release-driven development and the need for careful planning and more QA before each release. They also explore strategies to make the problem less severe, such as minimizing the final push, using an API-first strategy, and feature flagging.

    Episode 57: White Label CRM Updates with Dustin Rea

    Play Episode Listen Later Jun 7, 2024 32:37


    We check in with Dustin Rea, head of Red Hook Agency, to discuss where White Label CRM is with their 'turnaround story' - how they're handling 'bug hell', scaling issues, and what their trajectory is now.

    Episode 56: AI-Driven Testing

    Play Episode Listen Later May 31, 2024 24:26


    Isaac and Jeffrey discuss the potential of AI-driven testing and code generation. They reference an article by Codium AI, which explores the use of AI to generate tests and increase code coverage. While the generated tests may not be perfect, they can serve as scaffolding for legacy code and help identify areas for improvement. The conversation also touches on the idea of using AI to provide business context and legal compliance guidance during code refactoring. Overall, the discussion highlights the potential benefits of AI in improving code quality and reducing risk.Show notes:Codium article: https://www.codium.ai/blog/we-created-the-first-open-source-implementation-of-metas-testgen-llm/

    Episode 55: Writing Your Job Out Of Existence

    Play Episode Listen Later May 24, 2024 13:45


    Isaac and Jeffrey discuss the mindset of writing your job out of existence. They explore the idea that being irreplaceable can be a trap and that making your current role disappear in a positive way is the key to career growth. They share examples of individuals who get stuck in repetitive tasks and fail to see the opportunity to transform their work. The conversation highlights the importance of reframing problems as opportunities for improvement and the need to overcome the fear of change. They also touch on the issue of intentionally not fixing problems to protect one's job.

    Episode 54: Shadow Your Colleagues

    Play Episode Listen Later May 17, 2024 14:17


    Jeffrey and Isaac discuss how to get started with shadowing people and solving their problems. They share their experiences and strategies for shadowing, including reaching out to the people you want to shadow, observing their tasks, and identifying areas for improvement. They emphasize the importance of shadowing during the onboarding process and the value of asking questions and challenging existing processes. They also highlight the benefits of building relationships and earning credibility by solving problems for others.Takeaways- Shadowing people and solving their problems is a great way to learn and make a positive impact in a new role.- During the onboarding process, take the opportunity to shadow and observe how people work.- Ask questions and challenge existing processes to identify areas for improvement.- Building relationships and earning credibility by solving problems for others is crucial in the workplace.

    Episode 53: Cloud Infrastructure "Rewrites"

    Play Episode Listen Later May 10, 2024 16:45


    Isaac and Jeffrey discuss the topic of doing full rewrites when it comes to architecture. They explore a case where a client needed to move from a single EC2 instance to a more stable system with load-balanced instances. They discuss the parallels between rewriting code and rewriting architecture, and the challenges and risks involved.

    Episode 52: The Two-Clock Problem

    Play Episode Listen Later May 3, 2024 10:12


    Isaac and Jeffrey discuss the 'two clock problem' as a metaphor for software rewrites. They explain that adding a new system doesn't improve understanding if you don't know how the current system is wrong. They also emphasize that rewriting a system without understanding the current system is costly and may not be worth it. Instead, they suggest spending more time understanding and documenting the current system to mitigate the need for a rewrite. Takeaways - Adding a new system doesn't improve understanding if you don't know how the current system is wrong. - Rewriting a system without understanding the current system is costly and may not be worth it. - Spending more time understanding and documenting the current system can mitigate the need for a rewrite.

    Episode 51: How Company Culture Impacts Code Delivery

    Play Episode Listen Later Apr 26, 2024 28:10


    Company culture can have a significant impact on the style of code delivery. A rigid and bottlenecked code review process can slow down code delivery and create frustration. On the other hand, a collaborative and open culture can lead to faster and more efficient code delivery. It is important to strike a balance between code quality and speed of delivery. Perfect code that doesn't solve the problem is not useful, while imperfect code that is easy to change and improve can be valuable. When considering a job, it is important to ask about the company's code delivery style and whether there is a culture of collaboration and openness.Takeaways - A rigid and bottlenecked code review process can slow down code delivery - A collaborative and open culture can lead to faster and more efficient code delivery- Striking a balance between code quality and speed of delivery is important- Imperfect code that is easy to change and improve can be valuable- When considering a job, ask about the company's code delivery style and culture

    Episode 50: Fulfilling Friday - Saving Customers Millions

    Play Episode Listen Later Apr 19, 2024 20:39


    In our new series 'fulfilling Fridays', Jeffrey shares a fulfilling software project he worked on at Guaranteed Rate, a mortgage broker company.

    Episode 49: Falsehoods Programmers Believe About Projects Part 2

    Play Episode Listen Later Apr 12, 2024 26:55


    Isaac and Jeffrey discuss falsehoods that programmers believe about projects. They explore the misconception that the project will solve the stated problem, highlighting instances where the delivered software did not actually solve the problem. They also discuss the importance of understanding how the user will use the software and the need for clear communication and feedback loops to ensure that the project is on track. They emphasize that the success of a project is not solely determined by the software, but also by factors such as the alignment of project goals and the availability of resources. Overall, they highlight the need for critical thinking and continuous communication to avoid common pitfalls in project development. Takeaways- The project may not always solve the stated problem, even if the software is delivered as requested.- Understanding how the user will use the software is crucial for building a useful and successful product.- Clear communication and feedback loops are essential to ensure that the project is on track and aligned with the user's needs.- The success of a project is not solely determined by the software, but also by factors such as project goals and available resources.

    Episode 48: Falsehoods Programmers Believe About Projects

    Play Episode Listen Later Apr 5, 2024 18:12


    In this episode, Isaac and Jeffrey discuss falsehoods that programmers believe about projects. They explore assumptions such as projects having defined beginnings and endings, the role of priorities in project work, and the importance of clear communication and feedback. They also touch on the challenges of working on successful projects that transition into ongoing maintenance and the consequences of failed projects that continue to exist. The conversation highlights the need for programmers to question these assumptions and adapt their approach to project management.Takeaways- Projects often don't have defined beginnings or endings, and assumptions about their start and end dates can lead to confusion and miscommunication.- Relying solely on personal priorities to determine when to start working on a project can lead to conflicts and misunderstandings with others who have different priorities.- Clear communication and feedback are crucial in project work to ensure everyone is on the same page and to avoid missed signals and mixed signals. - Programmers should be proactive in sharing their expertise and insights on projects, even if they haven't been explicitly asked, to prevent unnecessary rework and improve overall project outcomes.- Successful projects often transition into ongoing maintenance and feature development, while failed projects that are not fully turned off can continue to exist and incur costs.- Questioning assumptions and adapting project management approaches based on the specific context and circumstances of each project is essential for success.

    Episode 47 - Maintenance Work as a Flight to Safety - A Manager's Perspective

    Play Episode Listen Later Mar 29, 2024 20:42


    Isaac and Jeffrey discuss the flight to maintenance work as a safety option from the manager's perspective. They explore different perspectives on maintenance work and the value of taking on such work. They emphasize the importance of understanding the reality of the system and approaching maintenance work as an opportunity to solve real problems. They also discuss the role of accountability and changing the culture around maintenance work. The episode concludes with a discussion on the impact of not addressing maintenance work and the benefits of going slow to go fast.Takeaways- Maintenance work should not be viewed as a punishment, but as an opportunity to solve real problems and make teammates' lives easier.- Understanding the reality of the system and addressing maintenance work can have a positive impact on the team's morale and productivity.- Managers should create a culture of accountability and ensure that support and maintenance issues are fixed, not just mitigated.

    Episode 46: Workshopping Live with Dustin Rea

    Play Episode Listen Later Mar 22, 2024 36:31


    In this conversation, Dustin Rea discusses the challenges faced by one of his clients who has a CRM. The CRM is built on a legacy codebase with issues in quality, scalability, and deliverability. The team has been working on improving the system, but there are still problems with emails, SMS, payments, and automations. The company is mission-driven and relies on the CRM to run their business, so rebuilding customer trust is crucial. They have made some improvements in infrastructure and email deliverability, but there is still work to be done. The conversation covered several topics related to database architecture and system design. The main themes include database optimization, handling heavy reads and writes, improving error handling and incident response, and enhancing observability. The speakers discussed the need for a purpose-driven database, implementing caching with Redis, tracking heavy queries, and addressing inconsistencies in the email service. They also mentioned the importance of logging and monitoring tools like Sentry and Grafana. Overall, the conversation highlighted the challenges and potential solutions for improving the performance and reliability of the system.Takeaways:- The client's CRM system is built on a legacy codebase and has issues with quality, scalability, and deliverability. - The team has been working on improving the system, but there are still problems with emails, SMS, payments, and automations.- Rebuilding customer trust is crucial for the company, as the CRM is core to their business.- Improvements have been made in infrastructure and email deliverability, but there is still work to be done.- Optimizing database performance is crucial for handling heavy reads and writes.- Implementing caching with Redis can help improve performance and reduce load on the database.- Tracking and optimizing heavy queries is important for identifying and resolving performance issues.- Improving error handling and incident response processes can help address inconsistencies and ensure reliable system operation.- Enhancing observability through logging and monitoring tools can provide valuable insights for troubleshooting and improving system performance.

    Episode 45 - Year In Review

    Play Episode Listen Later Mar 15, 2024 34:57


    Isaac and Jeffrey celebrate the one-year anniversary of the podcast. They discuss the challenges of maintaining a consistent schedule and reflect on the evolution of topics covered in the past year. They also talk about running out of failure stories and the importance of finding interesting guests. The hosts discuss the concept of forcing functions for successful rewrites and the risks associated with rewrites. They also explore the idea of the Ship of Theseus and how it relates to software development. Lastly, they discuss how rewrites can discourage learning about the current system. In this episode, the hosts discuss various themes related to software development and the process of rewriting code. They emphasize the importance of the investigation process and how it can be used to improve code quality. They also discuss the benefits of tidying up code and the value of iterative workshops. The hosts highlight the importance of understanding the business side of software development and the need for developers to develop human skills in the age of AI. They also reflect on past interviews with industry experts and invite listeners to participate in future guest episodes.Takeaways- Consistency and scheduling are key to maintaining a successful podcast.- Finding interesting guests and stories is important to keep the podcast engaging.- Forcing functions are often necessary for successful rewrites.- Rewrites can be risky and discourage learning about the current system. The investigation process is crucial for understanding code and improving its quality.- Tidying up code and making small improvements can make it easier for future developers to understand and work with.- Iterative workshops can be an effective way to transform and improve code.- Developers should strive to understand the business side of software development to make better decisions.- Developing human skills is important in the age of AI.

    Episode 44 - Do More With Less

    Play Episode Listen Later Mar 8, 2024 15:23


    Jeffrey and Isaac discuss the concept of ‘doing more with less.' They explore the initial visceral reaction to this idea and highlight the importance of doing less of things that don't matter. The impact of layoffs and the need to work smarter, not harder, are also discussed. The hosts emphasize the value of having honest discussions and creating a culture of transparency. They caution against burnout and advocate for trimming the fat responsibly. The episode concludes with a reminder to acknowledge mistakes and continuously learn.Takeaways- Focus on doing less of things that don't matter instead of trying to do more with less.- Layoffs can have a significant impact on workload and employee morale, leading to burnout and a potential death spiral.- Work smarter, not harder, by finding ways to be more efficient and effective.- Create a culture of honesty and transparency to address challenges and make necessary changes.- Trim the fat responsibly by evaluating and adjusting projects and resources.- Acknowledge mistakes and learn from them to improve future decision-making.

    Episode 43: Rewriting in the Age of AI

    Play Episode Listen Later Mar 1, 2024 20:36


    Jeffrey and Isaac discuss their stance on 'never rewriting' given the possibility of AI making rewriting faster, cheaper, and less risky. They explore the limitations of current AI capabilities and the potential benefits of AI-assisted refactoring. The conversation delves into the idea of using AI to write tests and improve code quality. They also discuss the challenges and opportunities of AI in language switching and high-performance code optimization. Overall, the episode highlights the evolving role of AI in the rewriting process and the potential impact it may have on software development in the future.Takeaways- AI is not yet ready for code rewriting, but it has the potential to assist in the process.- AI can be used to write tests and improve code quality, but human supervision is crucial for effective results.- AI can help understand code better when provided with business context and documentation.- AI may play a significant role in language switching and high-performance code optimization in the future.

    Episode 42: Iteration as a Defense From Micromanagement

    Play Episode Listen Later Feb 23, 2024 34:57


    Jeffrey and Isaac discuss how iteration can be a defense against micromanagement. They explore the reasons behind micromanagement, such as a lack of progress and fear, and how iteration provides observability and reassurance to managers. They emphasize the importance of breaking down nebulous projects into smaller deliverables and providing checkpoints to show progress.Takeaways- Iteration provides observability and reassurance to managers, reducing the need for micromanagement.- Breaking down nebulous projects into smaller deliverables helps show progress and alleviate fears.

    Episode 41: Rewrites from a Manager's Perspective with Ryan Cowan

    Play Episode Listen Later Feb 16, 2024 34:57


    In this episode, Isaac Askew interviews Ryan Cowan, a software engineering manager, about the perspective of managers on rewrites. They discuss the challenges of placating individual engineers who want to rewrite code, the role of managers in supporting engineers' ideas, and the frequency and success of large rewrites. Ryan shares a case study of data engineers rewriting a data pipeline and highlights the importance of understanding the root cause of concerns before deciding on a rewrite. They also discuss the difference between refactoring and rewriting and the expectations engineers have from their managers. Takeaways:- Managers play a crucial role in supporting engineers' ideas for rewrites and refactors. - Large rewrites are infrequent and often require significant buy-in from senior leadership.- The distinction between refactoring and rewriting is important, with refactoring being more focused on improving existing code and rewriting involving significant changes to the entire system.

    Episode 40: Convincing Emotionally-Committed Colleagues It's Not Worth It

    Play Episode Listen Later Feb 9, 2024 15:47


    Isaac and Jeffrey provide strategies for working with colleagues who are emotionally committed to rewriting old and flawed code at their companies.Takeaways- Validate the analysis and perspective of coworkers who are emotionally committed to doing a rewrite.- Consider the financial implications of a rewrite and align priorities with the business's goals.- Communicate the rationale for not pursuing a rewrite and document the reasons for future reference.

    Episode 39 - Project Risk with Jonathan Stark

    Play Episode Listen Later Feb 2, 2024 48:24


    Jonathan Stark joins as a guest discuss the risks of hourly billing and the parallels between risk in a rewrite and in hourly billing. He explains how hourly billing puts all the risk on the client and leads to stressful relationships and arguments about hours and costs. Jonathan emphasizes the importance of trust and how it can be built through delivering on promises and becoming an authority in your field. He also provides strategies for pushing back against rewrites and making informed decisions based on cost and quality. In this conversation, Jonathan and Jeffrey discuss the importance of taking risks and understanding the business side of software development. They emphasize the need for developers to consider the financial risks their clients are taking on and the value they provide. They also highlight the benefits of speaking in terms of dollars and business outcomes rather than technical details. The conversation touches on the challenges of system rewrites and the importance of considering the cheap and easy options before diving into complex projects. They conclude by discussing the concept of value pricing and providing the best solution for clients.Takeaways- Hourly billing puts all the risk on the client, leading to stressful relationships and arguments about hours and costs.- Trust is crucial in client relationships and can be built by delivering on promises and becoming an authority in your field.- Pushing back against rewrites can be done by presenting multiple solutions and discussing the trade-offs between cost and quality.- Software estimates are important for budgeting and decision-making, and developers should be encouraged to provide estimates for different solutions.- Developers should understand the financial risks their clients are taking on and the value they provide.- Speaking in terms of dollars and business outcomes is more valuable than focusing on technical details.- Consider the cheap and easy options before diving into complex projects.- Value pricing involves providing the best solution for clients. Jonathan's website: https://jonathanstark.com/.Books mentioned (affiliate links): How to Measure AnythingThinking in BetsSuperstruct Manifesto

    Episode 38 - Maintenance Work as a Flight to Safety

    Play Episode Listen Later Jan 26, 2024 23:33


    Isaac and Jeffrey explore the significance of maintenance work for developers, stressing its strategic value during uncertain periods like layoffs. They share personal experiences, highlighting how tackling these tasks can lead to trust, new opportunities, and a more impactful role within a team.

    Episode 37: Interview Insights - Changing the Game for Interviewers and Candidates

    Play Episode Listen Later Jan 19, 2024 45:08


    Isaac and Jeffrey dissect the flaws in the interviewing process and offer valuable insights for both interviewers and interviewees. They discuss the broken aspects of traditional interviews, highlight the importance of resume tailoring, and share anecdotes about handling past job experiences during interviews. The episode serves as a guide for interviewers to improve the hiring process and for candidates to enhance their chances by navigating the pitfalls and maximizing opportunities.

    Episode 36: Becoming an Expert in your Company's Business

    Play Episode Listen Later Jan 12, 2024 28:07


    Jeffrey & Isaac discuss why understanding how your company makes money can help you build products that solve the right problems.

    Claim Never Rewrite

    In order to claim this podcast we'll send an email to with a verification link. Simply click the link and you will be able to edit tags, request a refresh, and other features to take control of your podcast page!

    Claim Cancel