We all know that pegasystems has been recommending since version 6.x to not use activities. They are unreadable and a far cry from PEGA's 'design only and do not code' development paradigm.
Deigning code in flows is obviously more readable. I personally follow the thumb rule to only use activities when I need to use a method which is (1) Either not already available as an activity (E.g: @baseclass.QueueForAgent is available as an activity so I would directly integrate it within a flow instead of embedding it in another activity) OR (2) the method cannot be replicated using a function (E.g: Use @Default.pxClearMessages() instead of Page-Clear-Messages method in an activity).
Even if a rule can only be implemented using an activity (E.g.: Agents), I try to spinoff a new flow from within the activity to reduce the number of activity steps and build things on the design paradigm.
My last resort is to create an activity with only the method in an organizational ruleset and use it within flows across applications. This is obviously time consuming and has to be repeated each time I work for different clients.
Which brings me to my product related suggestion:
1. Please depracate activities altogether!!
2. Replace all activity methods with either standalone utilities which can be directly referenced in flows OR add the methods as smart shapes within flows.