On The Need For Understanding
2 days ago
- #programming
- #complexity
- #understanding
- Andy Wingo reflects on Gerald Sussman's observation about modern programming, where developers often have to treat libraries as black boxes and perform 'basic science' to understand them.
- Sussman noted a shift in programming from the 1980s, where engineers built systems from small, well-understood parts, to the 1990s and beyond, where developers grapple with complex, poorly documented libraries.
- The author shares personal experiences from the 1990s, struggling with the rapid evolution of technology and the overwhelming complexity of programming tools and platforms.
- Early programming efforts were marked by a desire for simplicity and functionality without deep understanding, leading to hacky solutions like 'Easymik' for handling music in games.
- A turning point came with exposure to QNX, which demonstrated that systems could be clear, elegant, and understandable, contrasting sharply with the complexity of MS-DOS and Windows.
- The author's journey included failed attempts at creating overly generic solutions, highlighting the pitfalls of not fully understanding the problem before attempting to solve it.
- A key realization was the importance of understanding underlying systems and problems, leading to more effective and confident programming.
- Modern programming benefits from open-source libraries and better documentation, making it easier to understand and debug systems compared to the opaque, proprietary software of the 1990s.
- The author advocates for digging into the source code of dependencies to truly understand how they work, leading to more reliable and maintainable software.