Чтобы проще было понять, кто есть кто в современном программировании, обратимся к метафоре. Представьте себе производство мебели. Когда-то для того, чтобы сделать элементарный стол или стул, необходимо было как минимум уметь пользоваться столярными инструментами. Затем появились мастера, которые делали уникальную мебель. Потом произошла техническая революция, и мебель стало можно делать на станках от доски до покрытого лаком изделия. А затем появился принцип Икеи: ты можешь сам собрать стул или стол и решить, какого он будет цвета, никаких особых знаний для этого не нужно.
С программированием всё обстояло примерно так же. Сначала оно требовало обязательного наличия базовых «инструментов» – знания математики, чтобы писать программы, и знания физики, чтобы уметь обращаться с техникой, которая эти программы запускает. Некоторые становились в этом вопросе настоящими уникальными мастерами, например Маргарет Гамильтон,
написавшая коды на стопку бумаги выше её роста для проекта высадки человека на Луну, – это были именно математические расчёты!
Затем появились «станки» – готовые шаблоны, алгоритмы и среды разработки, с помощью которых можно штамповать код как на конвейере, а в последние годы развивается и собственная «Икеа» – ноу- или иначе зерокодинг, который позволяет собирать программы и приложения из готовых блоков.
Теперь, возвращаясь к нашей метафоре, подумайте, кем вы хотите быть в этой цепочке? Дизайнером-проектировщиком, который создаёт новые эскизы мебели, инженером, который разрабатывает станки, способные выполнить самую сложную работу, или рабочим, который делает сотни одинаковых деталей в день? В профессии рабочего нет ничего плохого – это достойная и зачастую хорошо оплачиваемая специальность. Однако это рутинное, однообразное занятие, в котором главная задача – постоянно повторять одни и те же действия.
Да, рабочий может на досуге смастерить мебель собственного дизайна, опираясь не на математические расчёты, а исключительно на свои практические навыки, но, чтобы сделать производство этой мебели массовым, нужно учесть множество параметров – от особенностей материала до способностей станков производить те или иные операции. На одной практике тут далеко не уедешь.
С программированием дела обстоят точно так же: можно закончить короткие курсы программирования и неплохо зарабатывать, выполняя задания по шаблонам, но любое задание, которое потребует чуть более сложного решения, чуть больше креативных навыков, – и вам придётся судорожно вспоминать курс математики или проходить его заново. Без знания математики ваши возможности роста в IT будут существенно ограничены.
Также обратите внимание на то, какое количество, казалось бы, успешных (с точки зрения зарплаты) айтишников жалуется на выгорание, потерю интереса к работе и заканчивает дауншифтингом – переходом на более низкую оплату в другой, более интересной и дающей разнообразие деятельности сфере (в дауншифтинге нет ничего плохого, но разве не лучше сразу настроиться на получение профессии, которая будет и прибыльной, и интересной?).
Чаще всего такому выгоранию подвержены именно те программисты, которые пришли в профессию после коротких курсов, как «рабочие пчёлки», которые выполняют одинаковые задания с помощью инструментов, спроектированных кем-то другим на технике, устройства которой они не до конца или совсем не понимают.
Некоторым людям рутинная работа по душе, они легко с ней справляются, и такие программисты с уверенностью утверждают, что знание математики и физики им не пригодилось, однако это не значит, что их опыт сработает и в вашем случае.