Start here. This is the direct spoken answer to practice first.
Overview
PECS is a memory aid for safe operations, not a rule to place wildcards on every generic type.
PECS means producer extends, consumer super. If a parameter only produces T values for the method to read, List<? extends T> can accept lists of T or its subtypes. If the method consumes T values by adding them, List<? super T> can accept a list of T or one of its supertypes. If the method must both read and write the exact same type, an invariant List<T> is usually appropriate.