Функции

Функции - это кирпичики программы. Они разбивают логику программы на на отдельные не зависимые части.

Потом из этих кирпичиков собирается пирамида. И если один из кирпичей основания дефектный надо переделывать все пирамиду.

Очень важно понимать как работают функции. И это приходит довольно не сразу.

Ну например лично меня подвигло к детальному изучению - создание своего бутлоудера для обновления прошивки контроллера. Ибо на этом этапе программирования лишних деталей уже не бывает.