Mostly fair I think. Couple of minor points perhaps:
You mention sub-flows several times but you don't point out that they create DUPLICATE code when deployed. This is a critical detail that sometimes catches people out. You also don't mention the alternative which is the use of the link-call
node to access a section of flow elsewhere that can return - that does not duplicate code and so is a better choice in some cases.
Which also takes us onto point 17 about deep linking. Deep linking is certainly an anti-pattern in flow-based programming. It also isn't required because of the use of the link-call
node. Visual programming should be visual and not have hidden paths.