Быть программистом сейчас модно. О них снимают сериалы, пишут книги, их ставят в пример детям в школах. Но не стоит думать, что закончив быстрые курсы программирования, можно сразу оказаться среди лучших, с зарплатой как в Google и со штатным массажистом в офисе. Статья iOS-разработчика Бейзила Фарага на TechCrunch – как раз о том, как не поддаться шумихе вокруг IT и трезво оценить свои шансы, прежде чем кардинально менять карьеру. Предлагаем вам ее перевод.
Есть идея, которая в последнее время получила широкую поддержку в хайтек-сообществе: каждый должен выучиться программировать. Но с ней проблема: программирование – это совсем не новая грамотность.
Если вы обращаете внимание на регулярные шумные затеи Кремниевой Долины, вы, безусловно, слышали о движении Learn to Code. Политики, общественные организации вроде Code.org и даже бывший мер Нью-Йорка Майкл Блумберг несли в массы идею того, что они считают обязательным навыком работников будущего.
Доля правды в этом, возможно, есть, особенно учитывая, что спрос на инженеров в США не проявляет никаких признаков падения.
Но картинка все равно более сложная.
Мы живем в очень конкурентном мире, где люди пробуют любые средства, чтобы свести концы с концами. Продажа программирования массам как средства экономического спасения – это просто нечестно.
Возьмем учебные программы по программированию. С тех пор, как все узнали об успехе инженеров из Кремниевой долины, каждый мечтает стать программистом или основать свой стартап. Сериал “Кремниевая долина” производства HBO рисует нам картину, где 20-с-чем-то-летние программисты по ночам пишут код, курят травку, в процессе зарабатывая миллионы долларов. Американская публика зачарована фигурами вроде Илона Маска и Марка Цукерберга, которые каждую ночь зарабатывают, казалось бы, миллионы. Лихорадка программирования достигла даже ступенек Белого дома, поскольку президент Обама поддерживает закон о включении компьютерных наук в программы общественных школ.
Это сложно объяснить, но не только организаторы учебных программ или политики поощряют всех учиться программированию.
Людей на это толкают со всех сторон, начиная от голливудских фильмов и заканчивая светилами хайтек-бизнеса. Несмотря на растущую шумиху, я не могу воспринимать бум учебных программ без нотки скепсиса. В то время, как в массовой культуре Кремниевая долина – это нечто крутое, а глянцевые брошюрки всяческих школ обещают хорошо оплачиваемые работы, правда в том, что многие из них неаккредитованы, не дают никакой статистики по дальнейшему трудоустройству, и, в общем, мало делают для того, чтобы помочь своим выпускникам достичь успеха.
Многие школы действительно заботятся о своих учениках, но еще большее их число организовано пройдохами, умеющими продавать, эксплуатирующими обычное американское отчаяние.
Не поймите меня неверно: я верю в то, что инженерное дело и программирование – важные навыки. Но только в правильном контексте, и только для людей, которые готовы потом и кровью добиваться успеха. То же применимо ко многим другим специальностям и навыкам. Я бы никого не уговаривал учиться программировать более рьяно, чем, к примеру, учиться сантехническому делу.
Фокус на программировании завышает важность поиска правильного метода решения проблемы, и уменьшает значимость понимания проблемы.
Прежде чем мы начинаем работать над решением для задачи по программированию, мы должны определить, в чем, собственно, проблема и является ли она проблемой вообще. Если мы позволим себе сфокусироваться на том, как решить проблему с помощью кода, не задумываясь о том, нужно ли ее вообще решать и зачем, мы ничего не добьемся.
Мой близкий друг когда-то выиграл чемпионат по программированию ACM. Самая важная вещь об этом чемпионате, которой он научил меня, была о том, какую именно проблему ты собираешься решить.
Нужно спрашивать себя “А есть ли проблема?” и “Можно ли применить принцип Фейнмана и объяснить ее так, чтобы все вас поняли?”.
Этот друг сказал мне, что даже в элитных школах студенты только походя читают описание самой проблемы и тут же бросаются программировать. В год, когда он выиграл чемпионат, он понял: даже студенты из крутых школ с головой ныряют в сложные проблемы с кодом как единственным способом решения. Но этот мой друг писал код только после того, как глубоко вникал в проблему. Он почти все отведенное время посвящал ее обдумыванию. Он не приступал к коду до последних минут дедлайна.
И стал чемпионом.
Чрезмерный ФОКУС на самом коде игнорирует и трудности, которые возникают у современных разработчиков.
Технологии в этой отрасли меняются невероятно быстро.
Несколько лет назад я использовал Objective-C, теперь почти все время пишу на Swift. Сейчас встречаю множество iOS-девелоперов, которые подаются на открытые вакансии, и которые в жизни ни строчки не написали на Objective-C. Swift проще выучить, он безопаснее, использует современные парадигмы разработки и элегантен так, как никогда и не снилось Objective-C. Факт того, что новые разработчики никогда не будут иметь дела с недостатками Objective-C, прекрасен, но он игнорирует реальность профессии.
Не теряйте чувство реальности, зачарованно впитывая романтическую культуру Кремниевой долины. От разработчиков ждут, что они умеют учиться быстро, почти без наставничества, с уровнем мотивации как от чуть слышного лязга гильотины. Можно возразить о том, что это – одна из жертв, на которую приходится идти в этой профессии. Но если современные девелоперы несчастны или не успевают с работой (а свидетельства тому существуют), зачем воодушевлять людей присоединяться к их сонму?
Что случится с человеком, который денно и нощно изучал Objective-C, и который в ужасе услышит об анонсе Swift на WWDC 2014? Останется ли он в рядах программистов, использующих все менее популярный язык, или вынужден будет переучиваться с нуля? Если вам 20 с чем-то лет, это не составит проблемы, но если вы должны накормить семью и оплатить горы счетов, это превратится в геркулесов труд.
Черту между обучением программированию и получением настоящих денег за свой труд программиста-профессионала не так-то легко перейти.
Поверьте.
Мне пришлось обучаться самому больше года, прежде чем я получил какую-никакую работу фрилансером. И даже тогда платили мне мало. Бесчисленное количество раз мне отказывали даже в собеседовании, поскольку у меня не было IT-образования.
Были времена, когда у меня не хватало денег на жилье и приходилось злоупотреблять добротой друзей, чтобы выжить. Много ночей, когда я хотел все бросить. Но не бросил.
Настойчивость – вот то, что мне помогало – и помогает – оставаться в профессии.
Правда в том, что очень непросто проскользнуть в профессиональные разработчики, даже если речь идет все еще об ученичестве. Вам нужны связи, GitHub-аккаунт, люди, которые за вас поручатся, и еще много чего.
Хранители врат – повсюду. Это будут выпускники Лиги плюща, верящие в то, что лучший способ измерить чьи-то технические дарования – это вопросы в стиле “Как бы вы изобрели бинарное дерево?”. Вам предстоят встречи с проджект-менеджерами, помешанными на тестах, и беспомощными HR-ами с требованиями в стиле “5 лет опыта программирования на Swift”. Эти люди, к добру или худу, будут стоять между вами и достойной работой.
И насколько я знаю, нет никакого другого способа пройти мимо них, кроме как принять их правила игры. Даже если они несправедливы.
Заключительные мысли
Если стать программистом или инженером – это то, чего вы хотите, не позволяйте мне или любому другому становиться на пути. И не позволяйте традиционным ограничениям вроде системы образования тормозить вас. Не существует правильных и неправильных путей достижения цели.
Но не теряйте ощущения реальности, зачарованно впитывая романтику Кремниевой долины. Эта отрасль – совсем не золотой пропуск в страну быстрого обогащения. Вам понадобится время, чтобы научиться ее понимать. Вам придется привыкнуть к тому, что вы решаете проблемы, а не “заполняете фреймворки”. Вам придется жить с тем, что в любой момент понадобится изучить новый фреймворк или язык, что придется сражаться за каждую работу, если у вас еще нет регалий.
Разработка софта – выгодное дело, но помните, что переход от кодера к инженеру сложен. Но если вы выдержите, вы не только измените свою жизнь, вы научитесь думать по-другому.