Мой отец физик-ядерщик, также как и моя мать. С раннего детства я слышал одну и ту же фразу: настоящий физик не помнит все формулы, а понимает их смысл и знает как их вывести.
Что-то похожее происходит и в грамматике.
Кого не охватывал ужас при мысли о том, что в английском языке 20 времен и к экзамену нужно их все знать! В школе нам всем говорили о том, что в русском только три времени. Вот нам поди пойми, зачем нужно аж 20 времен.
Очень повезло тем, кому объясняют именно смысл каждого времени. У них процесс освоения 20 времен пройдет легко быстро, и ошибок в выборе нужного времени будет намного меньше.
Большинству же морочат голову трехэтажными правилами: если в предложении есть already - используй Present Perfect, а если yesterday - Past Indefinite: I already have finished it vs. I finished it yesterday.
Давайте вместе присмотримся к формам этих времен, дословно и коряво переведем их на русский и попробуем понять смысл.
I have finished it. Я имею это законченным. То есть я СЕЙЧАС имею то, что закончил. Не даром время называется Present, хотя на русский переводится прошедшим. Одним словом это время обозначает действие, которое я совершил в прошлом, но результат этого действия со мной сейчас, в настоящем.
I finished it. Я закончил это. Это обычное прошедшее время, когда я его использую, я ничего не говорю о том, есть ли у меня сейчас результат этого действия или нет.
А теперь представьте себе, Вы слышите, как носитель говорит: I have finished it yesterday. Надо же, какая безграмотная особа, наверное в школе плохо учился! - скажет кто-то.
А смысл этой фразы с грубой грамматической ошибкой очень понятен - я сделал это вчера, но сегодня, сейчас у меня есть результат этого действия.
Что же наши учебники нас не правильно учат? Не совсем так. Дело в том, что в большинстве случаев вчера в сознании носителей языка все же оторвано от настоящего момента, не связано с ним, поэтому с этим наречием с очень высокой вероятностью будет употребляться Past Indefinite.
Чтобы справиться с грамматикой, нужно понять ее логику!