If I had any wisdom to teach younger devs it would be this:
1. Program against, consider, and handle the error path first and foremost. Include useful logging, telemetry, and error messages.
2. Utilize your type system, whatever that may be, to make as many invalid states