news.volyx.in

Software reuse is more like an organ transplant than snapping Lego blocks (2011) (johndcook.com)

667 points by nilsandrey · 2293 days ago · 228 comments on HN

Article summary

The article compares software reuse to organ transplants, suggesting that integrating two software systems is a complex and delicate process, unlike the simple and straightforward process of snapping together Lego blocks. This analogy highlights the challenges of software reuse and the need for careful consideration and planning. The article notes that while progress has been made in software development, the promise of Lego-style software development has not been fully realized. Software reuse often requires significant effort and expertise to ensure successful integration.

Main themes

  • software reuse
  • modular design
  • functional programming
  • interfaces and APIs
  • complexity and overhead
  • engineering and design
  • Unix utilities
  • performance and security
  • maintainability and quality

What commenters say

  • Some argue that functional programming languages, such as Haskell, are better suited for software reuse due to their focus on composition and abstraction.
  • Others claim that software reuse is not inherently difficult, but rather depends on the complexity of the software and the quality of its design.
  • The use of interfaces and APIs can facilitate software reuse, but may also introduce additional complexity and overhead.
  • Some commentators suggest that the analogy between software reuse and organ transplants is apt, as both require careful planning and execution to avoid rejection or failure.
  • Others propose that software reuse can be improved through the use of modular design and standardized interfaces, such as those found in Unix utilities.
  • A few commentators argue that the concept of software reuse is often overemphasized, and that the focus should instead be on writing high-quality, maintainable code.
  • Some discuss the trade-offs between software reuse and other considerations, such as performance and security.
  • The importance of engineering and design in software development is also highlighted, with some arguing that software reuse is an engineering problem rather than a technical one.