We must avoid using index values like Trigger.New as we never know how many records we get in Trigger.New at runtime.
We need to use for each loop whether we have 1 record or many.
We must not use SOQL inside for loop.
We must not use SOSL inside for loop.
We must not use DML inside for loop.
We need to store data in collections, so our code will work for single as well as multiple records.