DiscoverThe Changelog: Software Development, Open SourceBuild software that lasts! (Interview)
Build software that lasts! (Interview)

Build software that lasts! (Interview)

Update: 2025-02-05
Share

Digest

This podcast episode features Barrett Hubert discussing his experiences in software development, particularly focusing on building software for longevity. Key themes include the challenges of scaling internet service providers (highlighting the importance of true redundancy and "pulling the plug" testing), building a parliamentary monitoring system for the Netherlands (and the unexpected accessibility benefits), and the complexities of working with government data formats (PDFs vs. XML). The conversation delves into long-term software development strategies, emphasizing simplicity, minimizing dependencies, and the importance of long-term employees. The limitations of low-code/no-code platforms are discussed, contrasting their ease of use with the flexibility and power of traditional programming for complex solutions. The episode also explores the potential and pitfalls of AI in software development, advocating for a balanced approach that considers both its benefits and ethical implications. Finally, the importance of conscious technology selection, utilizing community feedback and structured processes, is stressed.

Outlines

00:00:00
Introduction & Retool/Brex Partnership & Early Career Experiences

Introduction to the podcast, an advertisement for Fly.io, a discussion of Retool's partnership with Brex, and Barrett Hubert's early career experiences, including lessons learned from rapidly scaling a company.

00:04:04
Scaling ISPs, Redundancy, and Parliamentary Monitoring System

Hubert discusses scaling internet service providers, emphasizing true redundancy and "pulling the plug" testing. He then describes building a parliamentary monitoring system, highlighting challenges with government data formats and unexpected accessibility benefits.

00:18:09
Government Data, Political Protests, and Long-Term Software Development

A deeper dive into government data format challenges, followed by a discussion on political protests in New Zealand and the transition to long-term software development strategies.

00:27:02
Long-Term Software Development Strategies & Simplicity

Hubert shares research and insights on long-term software development, focusing on simplicity, long-term employees, and the dangers of excessive dependencies. The importance of on-call experience is also highlighted.

00:50:27
DeleteMe Advertisement, Dependency Management, and Low-Code/No-Code Limitations

Includes an advertisement for DeleteMe, followed by a discussion on dependency management, determining the number of dependencies, and the limitations of low-code/no-code platforms, using a case study of a slow low-code system.

01:17:22
AI in Software Development and Conscious Technology Selection

The podcast explores the two sides of AI in software development, addressing both its potential and ethical concerns. The final segment emphasizes the importance of conscious technology selection, advocating for community feedback and structured processes.

Keywords

Long-term software development


Building software designed to function and be maintained for extended periods (10+ years). Focuses on simplicity, maintainability, and minimizing dependencies.

Software dependencies


External libraries or modules upon which a software project relies. Managing dependencies is crucial for long-term software health.

Redundancy (in software)


Designing systems with backup components to ensure continued operation even if one part fails. True redundancy requires rigorous testing.

Chaos engineering


Deliberately introducing failures into a system to test its resilience and identify weaknesses. A key aspect of building robust, long-term software.

Low-code/No-code Development


Software development platforms that require minimal or no traditional coding. They offer rapid prototyping but often lack flexibility for complex applications.

AI in Software Development


The application of artificial intelligence in software development, offering potential for increased efficiency but raising ethical and reliability concerns.

Dependency Management


The process of managing external libraries and modules used in a software project. Crucial for maintaining software stability, security, and performance.

Technology Selection


The process of choosing appropriate technologies for a software project. Requires careful consideration of various factors, including project requirements and long-term maintainability.

Q&A

  • What are the biggest challenges in building software designed to last for a decade or more?

    Maintaining simplicity, managing dependencies, and ensuring the long-term availability of key personnel or robust documentation.

  • How can developers ensure their software remains maintainable over the long term?

    Prioritize simplicity in design, limit dependencies, invest in thorough testing, and foster a culture of proactive maintenance.

  • What are some practical strategies for managing software dependencies effectively?

    Regularly audit dependencies, limit their number, choose well-maintained libraries, and engage directly with dependency maintainers.

  • Why is it important to test redundancy in software systems?

    To ensure the system continues to function correctly even when components fail. Testing redundancy reveals hidden dependencies and weaknesses.

  • What are the main limitations of current low-code/no-code platforms?

    Current low-code platforms excel at specific tasks but lack the flexibility and power of traditional programming for complex solutions. They can also suffer from performance issues.

  • How can AI be effectively used in software development, considering both its potential and risks?

    AI can automate tasks, increasing efficiency. However, careful consideration of ethical implications and reliability is crucial. A balanced approach is essential.

  • What is the best approach to selecting new technologies for a software project?

    Avoid relying solely on social proof. Develop a structured process involving research, evaluation, and community feedback. Presenting findings to colleagues provides valuable insights.

Show Notes

After 30+ years in the software industry, Bert Hubert has experienced a lot. He founded PowerDNS, published articles for places like IETF / IEEE, and built his own parliament monitoring system. That just scratches the surface.


Recently, Bert wrote about what it takes to build software for the long term. Let’s dig in.


Join the discussion

Changelog++ members get a bonus 10 minutes at the end of this episode and zero ads. Join today!

Sponsors:

  • RetoolThe low-code platform for developers to build internal tools — Some of the best teams out there trust Retool…Brex, Coinbase, Plaid, Doordash, LegalGenius, Amazon, Allbirds, Peloton, and so many more – the developers at these teams trust Retool as the platform to build their internal tools. Try it free at retool.com/changelog

  • Temporal – Build invincible applications. Manage failures, network outages, flaky endpoints, long-running processes and more, ensuring your workflows never fail. Register for Replay in London, March 3-5 to break free from the status quo.

  • DeleteMe – Text CHANGELOG to 64000 to join DeleteMe. They make it quick, easy, and safe to remove your personal data online.

Featuring:

Show Notes:


Something missing or broken? PRs welcome!

Comments 
00:00
00:00
x

0.5x

0.8x

1.0x

1.25x

1.5x

2.0x

3.0x

Sleep Timer

Off

End of Episode

5 Minutes

10 Minutes

15 Minutes

30 Minutes

45 Minutes

60 Minutes

120 Minutes

Build software that lasts! (Interview)

Build software that lasts! (Interview)