Главное преимущество образования - это его комплексность. Это значит, что ты изучишь все, что государство считает нужным в твоей сфере. Если ты программист, то ты помимо языков и каких-то технологий, ты изучишь алгоритмы, структуры данных и математику. Может ещё узнаешь, как компьютер работает. Также образование повышает твой культурный уровень, поскольку у технарей есть и гуманитарные предметы. Один преподаватель говорил о том, что образование должно сделать нас интеллигентными людьми.
Ну и считается, что образование это некоторое универсальное мерило знаний. Да и просто значит, что человек обладает каким-никаким упорством. В программировании может можно и самому многие вещи изучить, но вот работнику АЭС и врачу это вряд ли так просто сделать. Вот некоторые HR и ждут человека, который всему обучен.
Поводу знаний - тут уже всплывают недостатки. Человек просто не попал на свою специальность, ему не интересно и тот все сдает еле-еле, либо вообще заказывает работы. Тут уже не в образовании дело, а в профориентации по мне. Кто-то идёт в вышку просто, чтобы была (тем более бюджетных мест в России много). Кто-то просто не знает куда идти и идёт, куда пошлют родители или просто методом тыка. Да и преподаватели не всегда хорошие. А конкретно в программировании недостаток ещё заключается в том, что обучение может просто не поспеть за технологиями. Обучат человека на 1 курсе какой-нибудь технологии, а к моменту окончания, она уже не очень актуальна.