Software that is feature-complete, stable, secure, and has no runtime dependencies — is not only possible, but worth striving for in certain contexts.
According to Ross, finished software:
Is feature complete — it does what it needs to do, nothing more.
Works reliably and securely.
Has no runtime dependencies (except maybe an interpreter).
Doesn’t require future updates unless the environment changes.
He acknowledges this isn’t always practical or desirable — especially in commercial software — but argues it’s a useful mental model.
Nintendo Gameboy: Its OS and games haven’t changed in 35 years — and they still work.
Job Sheet Manager: A Pascal app Ross built for his parents’ business that ran for 17 years without updates.
Embedded Systems: Appliances like microwaves and thermostats run software that never gets updated.
Small Web Apps: Ross’s own projects like a Scrabble clone and chatbot library are intentionally “finished.”
Keep scope small and fixed: Simplicity leads to durability.
Reduce dependencies: Fewer moving parts = fewer failure points.
Produce static output: Avoid reliance on external services.
Invest in quality upfront: Linting, testing, and clear requirements reduce bugs.
Design for longevity: Think about how your software might survive without you.
Ross isn’t saying all software should be finished — just that thinking about what “finished” looks like can lead to better design, fewer bugs, and more resilient systems.
0
2
1