You call it tech debt I call it malpractice (Friends)
Sep 1, 2023
auto_awesome
Kris Brandow, a Go Time panelist and semi-professional unpopular opinion maker, discusses his deep-dive on the waterfall paper, his dislike of the "tech debt" analogy, the importance of documentation, and the idea that everything is a distributed system.
Software engineers should prioritize planning, documentation, and code quality to prevent the accumulation of technical debt.
Proper documentation is crucial to ensure everyone understands the decisions made and the reasons behind them.
Moving fast without proper planning and consideration can result in even more technical debt and problems in the long run.
Creating a culture of responsibility and prioritizing knowledge sharing can help mitigate the accumulation of technical debt and prevent future problems.
Deep dives
The Need for Responsible Software Engineering
Software engineers have a responsibility to be more diligent in their work and avoid acquiring unnecessary technical debt. This debt should be seen as a form of malpractice rather than a simple analogy to financial debt. Engineers should prioritize planning, documentation, and code quality to prevent the accumulation of technical debt.
The Importance of Documentation and Communication
One of the main challenges in software engineering is communication, both within the team and with stakeholders. Proper documentation is crucial to ensure everyone understands the decisions made and the reasons behind them. Without clear documentation, the risk of misunderstandings and problems increases.
The Fallacy of Moving Fast
Many software teams are under pressure to move quickly, but this can often lead to rushed decision-making and poor code quality. Moving fast without proper planning and consideration can result in even more technical debt and problems in the long run. It is important to strike a balance between speed and responsible software engineering practices.
Accountability and Knowledge Transfer
Acquiring technical debt is not inevitable, and it is important for individuals and teams to take accountability for their decisions. High employee turnover and lack of knowledge transfer contribute to the accumulation of technical debt. Creating a culture of responsibility and prioritizing knowledge sharing can help mitigate these issues and prevent future problems.
The importance of documentation and knowledge management
In this podcast episode, the importance of documentation and knowledge management is emphasized. The speaker discusses the negative consequences of not documenting decisions and processes, highlighting how it can lead to increased tech debt and difficulties in problem-solving. The need for effective organization and accessibility of information is emphasized, suggesting that hiring librarians and archivists can greatly improve these aspects in the industry. Additionally, the potential of using software tools for better documentation and knowledge management is explored.
The value of considering code as worthless
The podcast delves into the concept of considering code as worthless. The speaker argues that this mindset can be beneficial as it allows software engineers to easily discard unnecessary or redundant code, preventing it from accumulating and becoming a liability. Viewing code as disposable and being willing to delete it can lead to more efficient and cleaner code bases. The speaker also compares this perspective to the notion of 'kill your darlings' in writing, where removing beloved parts of a text can actually improve the overall quality and readability.
The need to understand distributed systems
The episode emphasizes the importance of understanding distributed systems and the implications they have in various technologies. The speaker highlights the prevalence of distributed systems in everyday computing devices and throughout the technology stack. They express the need for more accessible and approachable education on distributed systems to foster better understanding and problem-solving in this field. The goal is to bridge the gap between experts and beginners and enable a broader understanding of distributed systems.
Reevaluating old abstractions and embracing asynchrony
The podcast advocates for reevaluating outdated abstractions and embracing asynchrony in software development. The speaker argues that many existing abstractions and assumptions no longer align with the modern computing landscape. They propose a shift towards asynchrony, eliminating timing assumptions, and embracing a new perspective that enables step debugging of distributed systems and eliminates unnecessary bugs caused by timing constraints. The goal is to create more efficient and adaptable code that can effectively utilize the resources of modern hardware and distributed systems.
Go Time panelist (and semi-professional unpopular opinion maker) Kris Brandow joins us to discuss his deep-dive on the waterfall paper, his dislike of the “tech debt” analogy, why documentation matters so much & how everything is a distributed system.
Changelog++ members support our work, get closer to the metal, and make the ads disappear. Join today!
Sponsors:
Fastly – Our bandwidth partner. Fastly powers fast, secure, and scalable digital experiences. Move beyond your content delivery network to their powerful edge cloud platform. Learn more at fastly.com
Fly.io – The home of Changelog.com — Deploy your apps and databases close to your users. In minutes you can run your Ruby, Go, Node, Deno, Python, or Elixir app (and databases!) all over the world. No ops required. Learn more at fly.io/changelog and check out the speedrun in their docs.
Typesense – Lightning fast, globally distributed Search-as-a-Service that runs in memory. You literally can’t get any faster!