Когда я поступал в учебное заведение на программиста, было популярное мнение, что без расширенных познаний математики тебе не стать хорошим программистом. И я тоже в это свято верил, ведь об этом говорили абсолютно все (в основном те, кто не имел к программированию никакого отношения).
Лишь спустя несколько лет я понял, что это полнейшая бредовая чушь. Преобладающему большинству разработчиков программного обеспечения математика нужна лишь на уровне школьной программы.
Безусловно, если вы занимаетесь машинным обучением, то вы должны быть в теме линейной алгебры и математического анализа. Хотите быть экспертом в криптографии? Будьте добры стать экспертом в теории чисел и абстрактной математике. Ну или вдруг хотите разработать 3D-движок — тогда добро пожаловать в тригонометрию.
Но если вы обычный веб-разработчик или делаете десктопные приложения, или, может, какие-то консольные утилиты, или мобильные приложения, то страшные слова из предыдущего абзаца вам никогда не понадобятся.
Я убеждён, что хорошим, как это модно говорить сейчас... «софтуэйр-инжинером», может стать практически любой человек. Основа программирования — это логика. А мозг человека прекрасно справляется с логическими задачами и, что более важно, отлично обучается логике.
Так что, самое важное для программиста, по моему скромному и субъективному мнению, — это упорство и терпение. Если ты готов пыхтеть над задачей часами, а то и днями — велкам в разработку. Не менее важны любознательность и желание разбираться. Все знают, что программист учится всю свою трудовую деятельность — и это факт. Каждый день фиксы, патчи. Новые фреймворки, новые технологии, и тебе постоянно нужно быть в теме. Быть экспертом во всём не получится — физически времени не хватит, — но в общих чертах знать, что там и как работает, желательно.