The optimal way to implement these requirements is to write a single trigger on Contact for both after update and before update and call out to helper classes to handle each set of logic. A trigger is a piece of Apex code that executes before or after specific data manipulation language (DML) events occur, such as inserting, updating, or deleting records. A trigger can handle both before and after events in the same code block by using trigger context variables to determine the event type. A helper class is a class that contains reusable methods that can be invoked by a trigger or another class. A helper class can encapsulate the logic for normalizing the address and converting the last name to uppercase, and be called by the trigger based on the event type. This way, the developer can avoid code duplication, improve readability, and adhere to the best practices for writing triggers34. Reference: Apex Triggers, [Trigger Context Variables], [Apex Code Best Practices], [Trigger Frameworks and Apex Trigger Best Practices]