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