Так там же и бывают перечислены технологии, которые надо знать. От умения пользоваться git до умения писать тесты на unittest и, скажем, знания фреймворков для backend. И есть одно неочевидное, но очень важное отличие. Программист-самоучка обычно ставит цель "чтобы работало", делая упор на функционал для пользователя, удобство, надежность. И в отдельных таких вещах он запросто может превосходить имеющиеся аналоги. Если проект очень сложный - будет ответ "ну, пока у меня не получилось сделать так круто, как я хочу, но потратив N времени, я точно сделаю еще лучше, работать будет еще быстрее и т. д., чем где-либо" Но этот N всегда слишком длителен по меркам бизнеса. Сроки - вот что отличает профессионала от любителя. И второе - качество кода, его красота и читаемость. Любитель часто имеет хорошее аналитическое мышление, превосходное трудолюбие, и если он не устал, то запросто разберется в любой лапше. И поэтому позволяет себе писать лапшу. Профессионал так не может, у него коллеги, над ним сеньор или тимлид, все они готовы изнасиловать его за некрасивый, не супер-читаемый код. А вот по части пользовательских удобств над профессионалом зачастую как раз никого особо нет, кроме инвестора-дурака-гуманитария. Вывод: обучающемуся, особенно талантливому, очень легко начать тренировать в себе не то, что надо от него бизнесу. И на этом потерять время. А если попытается кому-то на собеседовании показать свою крутость не в том, в чем надо - то и нервы.