I would suggest to create a table “positions”/“roles” or something like that with at least two columns, one of the type “text” for the name of the position (e.g. “Technical Engineer 1”) and one “people” type column “person”. “position” should be the display column.
Your “tasks” table should then include an “assigned to” column, which is a lookup of “positions”.
The “my tasks” table/board for every user should then be a lookup of “tasks” with the filter thisrow.assignedto.person.contains(user())
An optional third column in “positions” could be added for email addresses. When notifying people about their tasks via button/automation, you could automatically send an email with a list of the assigned tasks to the email adress, if the “person” value is empty in this row.
Workload statistics can then be created for “positions”, while “person” or “email” of every position can change independently over time.
This explanation is still very abstract and requires a little bit of coding, please let me know if you need help with one of the required formulas.