1)обязательно надо знать математику алгоритмы и тд(даже если это не используется)
Если хочется выйти за рамки дешевой рабочей силы - да.
2)надо работать бесплатно на первых порах
Зависит от навыков самообразования. Кто-то уже в школе делает деньги, а кому то и после университета сложно найти работу.
3)создавать open source проекты бесплатно чтобы показать всем свой код
Скорее нет
4)всегда думать о работе даже по выходным и тд
Если хочется выйти за рамки дешевой рабочей силы - ДА.
UPD:
Реальность такова, что если вы хотите выйти за рамки дешевой рабочей силы - у вас ровно 2 способа это сделать:
а) вы можете основать собственное дело
b) вы можете в чужом деле вырасти из человека который пишет код, в партнера который решает проблемы бизнеса ( что в конечном счете эквивалентно предыдущему пункту)
И то и другое подразумевает что вы перестаете разделять свою жизнь и работу.
Вы, это и есть то дело, которым Вы занимаетесь. 24/7/365.
И это к слову сказать справедливо для практически любой сферы, не только IT.