tl;dr:A total of 10 random thoughts, the first 3 of which are: (1) Debuggability is highly underrated: When writing code, you have to think about how it will execute. Leave yourself audit trails, store data in human readable formats, and invest in admin tooling. (2) Projects are late, a lot. This is not unique to software. The reality is that time is constantly moving against us, and when unexpected things happen they can take an order of magnitude longer than we planned. (3) Aggressively manage scope: related to the above, protect your project’s scope. You don’t have to push back if you don’t want, but be transparent about how it will affect the project delivery and communicate it widely.