Во многих языках прошедшее время выражается одной глагольной формой — вы спрягаете одно слово, и дело сделано. В разговорном повседневном немецком всё устроено иначе: за исключением нескольких глаголов вроде sein, haben и модальных глаголов, повседневная речь почти не использует простое прошедшее время (Präteritum). Вместо этого прошедшее время строится из двух глаголов, работающих вместе: спрягаемого вспомогательного глагола (здесь — haben), который согласуется с подлежащим, плюс неизменяемой, фиксированной формы основного глагола, которая называется Partizip II (второе причастие) и всегда стоит в самом конце предложения. Эта двухчастная конструкция называется Perfekt (перфект), и это первое прошедшее время, которое вы используете, чтобы говорить о завершённых событиях.
Почему два глагола, а не один? Потому что Partizip II никогда не меняется в зависимости от подлежащего — gemacht остаётся gemacht, скажете ли вы ich habe gemacht или wir haben gemacht. Информацию о том, кто выполняет действие, несёт только вспомогательный глагол; Partizip II несёт лишь значение самого глагола. Большинство немецких глаголов (примерно 80%) используют в качестве вспомогательного haben, включая все переходные глаголы (те, у которых есть прямое дополнение) и все возвратные глаголы.
Как построить его шаг за шагом: во-первых, проспрягайте haben в соответствии с подлежащим (ich habe / du hast / er hat…) и поставьте его на второе место — обычную позицию глагола в повествовательном предложении. Во-вторых, образуйте Partizip II: регулярная модель — это ge- + основа + -t (machen → gemacht), но многие распространённые глаголы неправильные, и их просто нужно заучивать по одному (essen → gegessen, trinken → getrunken). В-третьих, отправьте Partizip II в самый конец предложения, сколько бы материала — наречий, дополнений — ни стояло между ними. В вопросах haben перемещается вперёд, а Partizip II по-прежнему остаётся в конце: Hast du das gemacht?
Обратите внимание на отделяемые глаголы вроде aufräumen: приставка auf отделяется, и ge- вставляется между приставкой и основой, а не перед ней — получается aufgeräumt, а не geaufräumt.
Очень распространённая ошибка — ставить Partizip II сразу после подлежащего, следуя порядку слов родного языка, из-за чего получается неправильное Ich habe gemacht meine Hausaufgaben вместо правильного Ich habe meine Hausaufgaben gemacht. Держите в голове золотое правило: Partizip II всегда идёт в самый конец, без исключений.