Perhaps the most important difference between academic software and professional software is that the latter must be operated—once it works, it needs to keep working (or, return to working) across hardware failures, operator errors, bad deploys, and changes in usage. Fifteen years ago, it was all but guaranteed that an engineer would write their code and hand it off to an intrepid operations (ops) engineer for the hard job of keeping things working; while that model still exists, every day the industry moves more towards having the engineers who write software own its operation.
I’m ...