Код в стихах

Я занимаюсь программированием уже восьмой год. В основном я работаю над крупными, длительными web-проектами. То есть делаю и фронтенд, и бэкэнд сайтов. Моя область считается очень перспективной: интернет растёт быстро, технологии стремительно развиваются. Дефицит специалистов на рынке очень велик. То есть соискателей-то много, хороших специалистов мало. Люди, которым нужен действительно хорошо работающий ресурс, а не просто хочется освоить бюджет, сегодня готовы стоять в очереди к хорошо зарекомендовавшему себя разработчику.

Я пришел в программирование из искусства. В юности я очень увлёкся литературой и живописью. Литература почти не приносила денег. Идти на компромиссы – то есть зарабатывать коммерческим «чтивом» и копирайтингом – мне ужасно не хотелось. Какое-то, достаточно продолжительное, время я работал дизайнером. Сначала полиграфическим, потом освоил 3D, стал делать видеоролики. Это был тяжелый и весьма неблагодарный труд. А потом со мной случилось несчастье. Я чуть не умер. И тогда я понял, что все соображения, по которым я откладывал свою жизнь на будущее - это опасный самообман. В детстве я мечтал о тропических островах, путешествиях, о настоящих барах, с атмосферой и комьюнити, о смелых, предприимчивых и креативных друзьях-авантюристах, о жизни блистательного космополита в огромном мире. А вышло так, что в 35 лет у меня была «однушка» в Подмосковье и однообразная жизнь. Я как-то очень остро понял, что 9 месяцев в году, которые я проводил в квартире или офисе из-за дурного московского климата, были драгоценным временем моей жизни, которое я расходовал просто возмутительно бездарно. Я понял, что я хочу быть свободен — или вообще не быть. То есть мне нужна была профессия, которая не привязывала бы меня к офису, к языку, к городу, вообще бы ни к чему не привязывала. Программирование показалось мне достаточно очевидным выбором. Тем более что к тому моменту я уже работал во Flash и был шапочно знаком с ActionScript 2. В общем, у меня тогда была очень сильная мотивация.

На первых порах сложно было без знания английского. Я разрывался между работой и учебой. Потом, психологический момент: я долго жил эдакой лайт-рокенрольной лузерской жизнью. Работоголизм казался мне чем-то неприемлемым. У меня был круг, который существовал тем же способом, и этот круг мне пришлось покинуть.

Стать программистом может любой: я не верю в «гуманитариев» и «технарей». Есть люди, способные аналитически мыслить, конструировать и решать изобретательские задачи, а есть ещё какие-то. Не важно, что ты строишь: стихотворение, роман, картину или web-приложение. Ты совершаешь инженерную работу. Проведя многие годы в литературной и художественной среде, я понял, что все «творческие люди» делятся на два типа. На инженеров и на тех, кто всю жизнь бубнит о вдохновении. Первые изучают приёмы тех, кто работал до них, изобретают свои приёмы и методы, стремятся приобрести понимание проблематики своей деятельности, вторые просто говорят и пишут скучные однообразные глупости. Хороший, по-настоящему интересный художественный продукт могут делать только первые, хотя коммерческий успех иногда приходит и ко вторым.

Программирование дисциплинирует ум. Тренирует аналитическое мышление. Сделавшись программистом, я стал лучше писать художественные тексты. Я понял, как быстро и без напряжения устранить те слабости своего письма, с которыми я раньше боролся годами. Вот только времени на художественное письмо стало остро не хватать. «Гуманитарий», так же как и «технарь» должен делать что-то полезное. А делать полезное, по моему глубокому убеждению, невозможно, не понимая, как устроен мир.

Мне кажется, что причина того, что «гуманитарии» боятся физики и математики,— в дурном преподавании этих дисциплин в школе. Математика - это язык, и кому же как не «языковому человеку» её понимать? Хорошим примером дурного подхода к преподаванию математики будет то, как в школе подают производную. В школе заставляют зазубривать методы дифференцирования, но совершенно не объясняют, что вообще такое эта самая производная, что вообще описывает эта абстракция. Помните формулировку «отношение приращения функции к приращению аргумента, если приращение аргумента стремится к нулю»?. В школе я лично вообще не понимал, что вся эта ерунда значит. То есть детей заставляют заниматься тонкой настройкой интерфейса, который управляет неизвестно чем, и подписан непонятными им значками. Программирование полезно ещё и тем, что снимает страх перед формулой, боязнь математического символа и недоверие к метаматематической логике. То есть оно может изменить вас в лучшую сторону. Сломать комплекс, мешающий понимать математику.

Ботан в очках

К сожалению медийный образ «ботана в очках» отпугивает от «кодинга» одарённый людей. Но тут важно понимать, что, во-первых, люди, у которых «большой мозг и нет девушки», существуют только в популярных кинофильмах. Интеллектуально развитые люди всегда более раскрепощены сексуально. Они смелее и оригинальнее строят отношения, чем все остальные. Охотно идут на эксперименты и стремятся к необычному. Смелый, настойчивый и креативный человек никогда не «держится за кресло»: он рискует, развивается, интересуется всем, чем можно и чем нельзя, много читает, и в результате выбивается в «сеньоры», или уходит в свободное плавание, а пугливые, шаблонно мыслящие «ботаны» продолжают протирать штаны в опенспейсах.

Сквозь лес на мотобайке

Я сам, к примеру - человек, который в свободное время мчится на мотобайке через тропический лес, изучает подводный мир, ныряя в прибрежных рифах, карабкается на скалы, мокнет в водопадах или сидит в одном из прекрасных интернациональных баров, которыми так богат наш живой южный город, слушая причудливые рассказы тех самых авантюристов, о чьей компании я так мечтал в детстве. И, разумеется, я такой не один. Практически все кодеры, которых я уважаю как профессионалов, таковы. Например, человек, которого я считаю своим личным гуру в области программирования, да и вообще научного мировоззрения и рационального мышления,— очень крутой кайтер. Правда, он предпочитает северные ландшафты. Например, он пересёк с санками и кайтом Кольский полуостров в декабре. Кроме того у него есть свой маленький парусный кораблик-катамаран, который в разобранном виде помещается в купе поезда, и он путешествует с семьёй на этом кораблике по северным морям и озёрам России. В общем, если ты креативен в работе, то и жизнь будешь строить креативно, и наоборот, если твой код уныл, то и жизнь твоя будет такой же.

По большому счету, профессия программиста - это самая творческая из известных мне профессий. Тут нужно заметить, что определение «творческая» для меня звучит, как «творчески свободная». То есть созидание тогда становится творчеством, когда оно делается мастером без оглядки на кого бы то ни было. В этом смысле профессия кодера свободнее профессии писателя. Творческая свобода писателя зависит от интеллектуального уровня и эстетических предпочтений потенциальных читателей. Кода же никто не видит. Все видят результаты работы кода, и если эти результаты хороши, то и кодер хорош. Количество рутины в работе программиста зависит только от самого программиста. Ее много, если кодер использует готовые решения, не стремясь их не то что улучшить, а даже понять. Если в работе его больше всего интересует зарплата, то, разумеется, очень скоро самая творческая в мире профессия превратится в сплошную унылую рутину. Впрочем, это актуально для любого творческого труда.

Как выбрать язык

Писать нужно на актуальных языках. Они просто лучше. Разбираться во всём этом надо так же, как и в актуальной политике. То есть тренировать «внутреннее чувство правды». Избегать слишком простых объяснений – они всегда ложные. Твёрдо усвоить, что новое и прогрессивное всегда лучше устаревшего и консервативного. Ну и самое главное — нужно уметь разбирать чужой код. Лучше один раз увидеть, как сделано качественное приложение, чем сто раз услышать об этом.

Математика в программировании нужна для того, чтобы разрабатывать технологии, а не для того, чтобы ими пользоваться. Пока вы будете делать что-нибудь относительно простое, то есть всякие интернет-магазины, контентные ресурсы и прочий ширпотреб, математика вам не понадобится. Всегда где-то будет библиотечка, которую можно будет просто прикрутить в нужное место. Однако если вы будете хорошим программистом, вы непременно однажды захотите сделать что-нибудь революционное и яркое. Например, в области компьютерного зрения или AI. Вот тут-то вам и понадобится математический анализ. Так что его тоже лучше начать изучать загодя.

Если цивилизация от чего-то не рухнет, программирование скоро станет новой грамотностью. Уже сегодня многие западные школы включили основы кодинга в программу для младшей школы. И это очень, на мой взгляд, правильно. Программирование тренирует аналитические способности и учит мыслить логически. То есть оно просто делает человека умнее. А чем раньше начнёт человек тренировать свой ум, тем умнее он станет. Ну и мир автоматизируется. Думаю, что уже совсем скоро в лучшей части планеты люди будут только управлять. Кто-то будет управлять людьми, а кто-то — автоматами. Так что у тех, кто собрался в счастливое будущее, есть выбор: тренировать командный голос или учиться кодить.

Программистом быть здорово. Во-первых, потому что это потрясающе интересно. Это одно из немногих человеческих дел, в которых можно использовать мозг на полную катушку. Можно провалиться в «цифровой космос» и бултыхаться там, как счастливое межзвёздное животное. Это чувство полного погружения в увлекательную работу даёт из всех опробованных мною дел только художественная проза. Кто-то сказал, что быть писателем - это одновременно быть путником, дорогой, по которой он идёт, и богом, который создал путника и дорогу и смотрит на них. Про программиста я могу сказать совершенно то же самое.

Программирование - это живое чудо. Я помню, с какими горящими глазами, лишь слегка овладев AS3, я с увлечением моделировал разнообразные физические процессы. Я делал огонёк, который горел на экране так, как горит настоящий огонь, и реагировал на движение мышки, как на лёгкий ветер. Или делал состоящую из «молекул» воду, которая текла и разбивалась об курсор на струйки так, как если под кран палец подставишь.

Программирование делает человека лучше. Это своего рода “духовный путь”, только основанный на научном подходе, анализе и рациональности. Как я уже говорил, у нас есть гуру и небожители, есть легенды и мифы, есть личностный рост, «этапы прозрения», уровни осознания, вот это вот всё. И всё это по-честному. Без выдумок и вранья.