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