Artwork

Kandungan disediakan oleh Rob Broadhead. Semua kandungan podcast termasuk episod, grafik dan perihalan podcast dimuat naik dan disediakan terus oleh Rob Broadhead atau rakan kongsi platform podcast mereka. Jika anda percaya seseorang menggunakan karya berhak cipta anda tanpa kebenaran anda, anda boleh mengikuti proses yang digariskan di sini https://ms.player.fm/legal.
Player FM - Aplikasi Podcast
Pergi ke luar talian dengan aplikasi Player FM !

Dealing with Legacy Code: When to Let Go and Start Anew

32:37
 
Kongsi
 

Manage episode 419800389 series 1919132
Kandungan disediakan oleh Rob Broadhead. Semua kandungan podcast termasuk episod, grafik dan perihalan podcast dimuat naik dan disediakan terus oleh Rob Broadhead atau rakan kongsi platform podcast mereka. Jika anda percaya seseorang menggunakan karya berhak cipta anda tanpa kebenaran anda, anda boleh mengikuti proses yang digariskan di sini https://ms.player.fm/legal.

Welcome back! In our ongoing discussion on improving life and technology, today's focus is on a more dramatic scenario: saving customers from potential disaster due to legacy code. When does legacy code need to be retired, and what signs indicate it's time for a major overhaul? We'll dive into these questions through real-world examples and expert insights.

Listen to Rob and Michael Discuss ways to Deal with Legacy Code

The Legacy Code Conundrum

Legacy code refers to outdated software that still performs necessary functions but is based on old technology. The core question is: when does maintaining legacy code become impractical or even risky?

Our host recounted an experience with a client who had a custom application built on the Eclipse foundation RCP with additional dependencies like Adobe Flash. When the host encountered this system in 2021-22, the last update to the code had been in 2014. The application's underlying technology was so outdated that it was incompatible with modern systems. This scenario is not unique; many organizations rely on aging software that becomes increasingly difficult to maintain as technology evolves.

The Case Study: A Ten-Year-Old Application

In the host's case study, the client's custom application was built on an old version of Java and Eclipse, using technologies like Flash that are no longer supported. The application worked fine until system upgrades rendered it inoperable. Initially running on multiple machines, the application was eventually down to a single operational machine. This machine was critical: if it failed, the entire application would be lost.

Despite having the source code, the modernization process was fraught with challenges. The task involved updating libraries, replacing deprecated technologies, and rewriting significant portions of the code. After six months of effort, it became clear that a complete rewrite was necessary. The core JDBC connections were outdated and incompatible with modern systems, necessitating a significant redevelopment effort.

When to Rewrite: Key Considerations

  1. Technology Obsolescence: If the technology stack is no longer supported, it's a red flag. Modernizing might involve not just updates but a full-scale rewrite.

  2. Compatibility Issues: New system upgrades may not support old applications. As seen in the host's example, upgrading to a newer operating system rendered the application unusable.

  3. Developer Expertise: Often, the original developers are no longer available, and current teams may lack the knowledge to maintain or update the legacy code effectively.

  4. Cost and Risk: Maintaining old code can be costlier and riskier than starting anew. Constant patching can introduce new bugs, and outdated software may pose security risks.

The Modernization Approach

The podcast highlighted the importance of understanding the existing system and planning a phased approach to modernization:

  1. Assessment: Conduct a thorough assessment of the current system, identifying critical components and dependencies. Determine what can be salvaged and what needs replacement.

  2. Data Migration: Plan for data migration from the old system to the new. This may involve extracting data manually or through automated scripts.

  3. Incremental Development: Instead of a big-bang approach, develop the new system in phases. This allows for continuous integration and testing, reducing the risk of total failure.

  4. User Experience: Consider whether the new system needs to replicate the old user experience or if a new, modern interface would be more beneficial.

Real-World Challenges

Michael, the co-host, shared his current project in the healthcare sector involving an old IBM AS/400 system. This green-screen, keyboard-driven application was solid but outdated. Key challenges included integration with unsupported systems and the need for continuous deployment and integration.

Legacy systems often lack clear documentation, making it hard to understand their full functionality. Moreover, integration points with other outdated applications can further complicate the modernization effort. For Michael’s client, the healthcare application was crucial for billing and patient information management, making its stability and modernization a high priority.

Modernizing Legacy Code

Modernizing legacy code is often more practical and safer than maintaining outdated systems. By assessing the current state, planning data migration, and developing incrementally, organizations can ensure a smoother transition. The goal is not just to replace old technology but to build a robust, modern solution that can evolve with future technological advancements.

Stay Connected: Join the Developreneur Community

We invite you to join our community and share your coding journey with us. Whether you’re a seasoned developer or just starting, there’s always room to learn and grow together. Contact us at info@develpreneur.com with your questions, feedback, or suggestions for future episodes. Together, let’s continue exploring the exciting world of software development.

Additional Resources

  continue reading

811 episod

Artwork
iconKongsi
 
Manage episode 419800389 series 1919132
Kandungan disediakan oleh Rob Broadhead. Semua kandungan podcast termasuk episod, grafik dan perihalan podcast dimuat naik dan disediakan terus oleh Rob Broadhead atau rakan kongsi platform podcast mereka. Jika anda percaya seseorang menggunakan karya berhak cipta anda tanpa kebenaran anda, anda boleh mengikuti proses yang digariskan di sini https://ms.player.fm/legal.

Welcome back! In our ongoing discussion on improving life and technology, today's focus is on a more dramatic scenario: saving customers from potential disaster due to legacy code. When does legacy code need to be retired, and what signs indicate it's time for a major overhaul? We'll dive into these questions through real-world examples and expert insights.

Listen to Rob and Michael Discuss ways to Deal with Legacy Code

The Legacy Code Conundrum

Legacy code refers to outdated software that still performs necessary functions but is based on old technology. The core question is: when does maintaining legacy code become impractical or even risky?

Our host recounted an experience with a client who had a custom application built on the Eclipse foundation RCP with additional dependencies like Adobe Flash. When the host encountered this system in 2021-22, the last update to the code had been in 2014. The application's underlying technology was so outdated that it was incompatible with modern systems. This scenario is not unique; many organizations rely on aging software that becomes increasingly difficult to maintain as technology evolves.

The Case Study: A Ten-Year-Old Application

In the host's case study, the client's custom application was built on an old version of Java and Eclipse, using technologies like Flash that are no longer supported. The application worked fine until system upgrades rendered it inoperable. Initially running on multiple machines, the application was eventually down to a single operational machine. This machine was critical: if it failed, the entire application would be lost.

Despite having the source code, the modernization process was fraught with challenges. The task involved updating libraries, replacing deprecated technologies, and rewriting significant portions of the code. After six months of effort, it became clear that a complete rewrite was necessary. The core JDBC connections were outdated and incompatible with modern systems, necessitating a significant redevelopment effort.

When to Rewrite: Key Considerations

  1. Technology Obsolescence: If the technology stack is no longer supported, it's a red flag. Modernizing might involve not just updates but a full-scale rewrite.

  2. Compatibility Issues: New system upgrades may not support old applications. As seen in the host's example, upgrading to a newer operating system rendered the application unusable.

  3. Developer Expertise: Often, the original developers are no longer available, and current teams may lack the knowledge to maintain or update the legacy code effectively.

  4. Cost and Risk: Maintaining old code can be costlier and riskier than starting anew. Constant patching can introduce new bugs, and outdated software may pose security risks.

The Modernization Approach

The podcast highlighted the importance of understanding the existing system and planning a phased approach to modernization:

  1. Assessment: Conduct a thorough assessment of the current system, identifying critical components and dependencies. Determine what can be salvaged and what needs replacement.

  2. Data Migration: Plan for data migration from the old system to the new. This may involve extracting data manually or through automated scripts.

  3. Incremental Development: Instead of a big-bang approach, develop the new system in phases. This allows for continuous integration and testing, reducing the risk of total failure.

  4. User Experience: Consider whether the new system needs to replicate the old user experience or if a new, modern interface would be more beneficial.

Real-World Challenges

Michael, the co-host, shared his current project in the healthcare sector involving an old IBM AS/400 system. This green-screen, keyboard-driven application was solid but outdated. Key challenges included integration with unsupported systems and the need for continuous deployment and integration.

Legacy systems often lack clear documentation, making it hard to understand their full functionality. Moreover, integration points with other outdated applications can further complicate the modernization effort. For Michael’s client, the healthcare application was crucial for billing and patient information management, making its stability and modernization a high priority.

Modernizing Legacy Code

Modernizing legacy code is often more practical and safer than maintaining outdated systems. By assessing the current state, planning data migration, and developing incrementally, organizations can ensure a smoother transition. The goal is not just to replace old technology but to build a robust, modern solution that can evolve with future technological advancements.

Stay Connected: Join the Developreneur Community

We invite you to join our community and share your coding journey with us. Whether you’re a seasoned developer or just starting, there’s always room to learn and grow together. Contact us at info@develpreneur.com with your questions, feedback, or suggestions for future episodes. Together, let’s continue exploring the exciting world of software development.

Additional Resources

  continue reading

811 episod

Kaikki jaksot

×
 
Loading …

Selamat datang ke Player FM

Player FM mengimbas laman-laman web bagi podcast berkualiti tinggi untuk anda nikmati sekarang. Ia merupakan aplikasi podcast terbaik dan berfungsi untuk Android, iPhone, dan web. Daftar untuk melaraskan langganan merentasi peranti.

 

Panduan Rujukan Pantas

Podcast Teratas