Когда стоит сказать НЕТ миру программирования
Программирование стало очень модным явлением. Даже родители стали задумываться, что ребенку нужно привить навыки технического мышления, иначе грозит ему вырасти официантом. Пойдет по наклонной вниз и будет призывать к свободной кассе в Макдоналдсе. Филолог, что с него взять.
Мы смотрим новости про программистов, которые сначала создали биткоин, затем создали биржу для торговли биткоинами, а затем заработали миллиарды долларов. Каждый день в мире бесстрашные хакеры-криптоанархисты атакуют транснациональные корпорации зла. И уже невозможно разобрать, где заканчивается реальность, а где начинается вымысел сериала «Мистер Робот».
Да, фильмы, сериалы и даже книги формируют романтический образ программиста, как нового революционера. Собственные деньги, собственная, никому не подконтрольная юрисдикция, собственная культура и массовое высмеивание всего гуманитарного – все эти факторы оказывают воздействие на обычных людей.
Президент Путин подписывает указ о развитии того, что сейчас называют цифровой экономикой. Герман Греф соглашается зарегестрироваться на Голосе. Из каждой подворотни вам предлагают курсы программирования. Вы не хотите кодить? Но подождите, код – это новая грамотность, код необходим всему трудоспособному населению!
Программисты много зарабатывают? Это так.
Программисты стали хорошо выглядеть, сменили очки на линзы, сняли свитера и пошли в качалку (потому что качалка – лучший вид отдыха для интроверта). Это действительно так.
Но программирование – это не билет на пароход, который отправляется в рай.
Сегодня многие мечтают создать свой стартап или, как минимум, взять хорошую идею западного стартапа (провести хадрфорк, хе-хе) и воплотить на родине. Вы знаете все эти истории. Вы знаете историю Виталика Бутерина – двадцатитрехлетнего создателя эфира. Вы могли слышать про школьника, который на днях нашел уязвимость во ВКонтакте и ICQ и получил вознаграждение в три тысячи долларов. Все эти примеры успеха вдохновляют общество.
Но прежде чем эйфория окончательно снесет вам голову — задумайтесь.
Никто не гарантирует вам работу, но все готовы продать вам образовательный курс любой сложности за любые деньги.
Навыки программирования важны и без программистов наш мир откатится в 19-й век, но у этой медали есть обратная сторона, на который выгравированы пирамиды, рабы и хлыст. Разработка – это тяжелый труд, которым могут заниматься далеко не все. Тоже самое можно сказать о профессии шахтера. Трудно сменить образ смузи, макбука и молодого парня, быстро печатающего на клавиатуре, на вид шахтера покрытого грязью и пылью рудника, но между ними нет фундаментальной разницы.
Научиться программировать не сложно. Гораздо сложнее стать профессионалом, который разбирается в том, что делает.
Один лишь код ничего не даст. Нужно понимать алгоритмы и математику, чтобы до набора кода осознать проблему, которую вы хотите решить.
Прежде чем начать работу над программным решением какой-либо проблемы, мы должны решить, что же она собой представляет — и вообще проблема ли это.
Чем-то это похоже на спортивное программирование. Очень мало людей, которые становились чемпионами в спортивном программировании и добивались чего-то стоящего в реальной жизни. Потому что проблема, которую ставят на соревнованиях, чаще всего эфемерна. У нее нет реальной причины.
Программирование – это решение проблем. Если вы находите проблему, которую можно решить только кодом, вы занимаетесь программироваппрограммированпрпрограммированием. Эта простая истина, но ее мало кто понимает.
Как можно увидеть проблему? Хорошее отображение данных помогает выявить знания, относящиеся к пониманию работы механизма, процесса и динамики, причин и следствия.
Когда мы видим немыслимое и думаем, что это невозможно сделать, четкое и точное виденье помогает стать единым с четким и точным мышлением. На практике это высказывание выражают принципом Фейнмана-Тафта: визуальное отображение данных должно быть достаточно простым, чтобы поместиться на одной стене фургона.
Вы хотите решить сложную задачу сразу с помощью программирования? Правильный подход заключается в том, чтобы почти все время, выделенное на решение задачи, потратить на ее обдумывание – задача в первую очередь должна быть решена в голове.
Готовы ли вы к этому?
Еще один важный факт, который мало кто берет во внимание, это быстрая смена технологий.
На диаграмме кажется, что ничего не меняется, но на самом деле революции случаются постоянно. Еще вчера вы могли использовать Objective-C, а теперь вынуждены работать на Swift. Прощайте программисты, которые не учились ничему новому. Еще вчера вы могли быть богом Java, а теперь вынуждены осваивать Kotlin – хотя это последнее, что вам хотелось бы делать в этой жизни.
Программисты должны учиться постоянно чему-то учиться. Если начать отставать, вас ждет увольнение. Думаете, шахтер теряет свои навыки за несколько лет? А учитель, банкир, врач, финансист, инженер, строитель, владелец малого и среднего бизнеса? Нет, во всех этих сферах технологии не устаревают так быстро.
Когда человек сталкивается с трудностями программирования, не обладая фундаментальными математическими знаниями, он приходит в ужас.
Если вы используете программирование не для решения проблем, которые иначе не решить, а для зарабатывания денег, вас ждет глубокое разочарование.
Вас ждет огромное количество задач, бесчисленное количество собеседований, переработки, вы будете искать связи в сообществе и учителей, и испытаете жесткую конкуренцию от тех, кто моложе и умнее вас.
Если вы действительно хотите стать программистом, ничто не собьет вас с пути. Но при этом вы должны знать правду. Вы должны решать проблемы, а не кодить. Вы должны понимать, что в любой момент будете вынуждены изучить новый фреймворк или язык.
Вы должны быть не кодером, а инженером. Помните об этом.