Полная версия
Говорят, в IT много платят. Как построить успешную карьеру разработчика, оставаться востребованным и не выгорать
Елена Правдина
Говорят, в IT много платят
Как построить успешную карьеру разработчика, оставаться востребованным и не выгорать
Серия «Книги-драйверы»
© Правдина Е.В., текст, 2021
© Оформление. ООО «Издательство «Эксмо», 2021
* * *Вступление
«Дверь не закрыта!»
Расслабленный тон демонстрации многообещающего приложения по управлению умным домом моментально испарился. Обновляя экран телефона с только что выкаченной версией и вглядываясь в статус своего жилища, глава разработки за столиком в баре напряженно пытался осознать – дело в его забывчивости или же в просто-напросто севшей батарейке домашнего дверного датчика.
Знание внутреннего устройства приложения позволило тогда спокойно продолжить вечер. Квартира была надежно заперта. И если вы хотите сэкономить деньги на такси или время на общение со службой поддержки из-за очередного странного поведения вашего заказа – порой не лишним будет понимать, существует ли проблема в действительности или это всего лишь очередной баг.
Сейчас IT все теснее переплетается с повседневным миром вокруг. Либо вы уже пишете код, задаваясь вопросами своей карьеры, выгорания и счастливой пенсии, либо же знания о том, как устроена сфера программирования, как работают приложения и создаются магические строки, понадобятся вам в обозримом будущем. Тоньше настроить под себя умный дом. Отдать ребенка в «правильный» IT-кружок. Вовремя сменить бесперспективную или наскучившую профессию.
Эта книга – сборник ответов, рекомендаций и забавных историй. Она призвана помочь и направить по верному пути желающих начать, а для тех, кто уже начал – сохранить любовь к работе и профессионализм на долгие годы, отбросить сомнения и дать подсказки по всем основным этапам карьеры и жизни в IT. Грамотно расти. Быть ближе к изменениям, что проникают в наш быт. Создавать, оставаясь увлеченным разработчиком. Или хотя бы понимать. Больше, чем те, кто никогда не бывал за кулисами.
Я не известный человек – я обычный, самый настоящий разработчик, не испорченный излишним медийным шумом.
За первые 10 лет работы успела пройтись по всем тропам и поджидавших на них граблям карьеры фронтендера. Окончила с отличием профильную специальность. И да, правда, это никому не нужно. Начинала с завораживающего причастностью тогда и ставшего немодным теперь: работала в инженерной поддержке далеких от IT сотрудников библиотеки, собирала из коробок и настраивала десятки рабочих станций за день. Писала запросы на невообразимом сейчас французском к стандартной специализированной БД для библиотечных систем. Верстала под легендарный Internet Explorer 6. Писала на порицаемом ныне PHP. Грешила фрилансом: немецкое модельное агентство еще держит мое имя в IT-команде, а лучшие скутеры и мотоциклы и по сей день продаются в моем родном городе сквозь написанные в студенчестве строки, с дизайном, достойным места в музее IT.
Трудилась в лучшей компании онлайн-интернет-вещания. Разрабатывала ТВ-приложения под Samsung/LG/Philips, когда Smart TV только зарождался на рынке. Писала видеоплееры для всем известных и высоконагруженных проектов. Реализовывала стандарты видеорекламы – подводные части ежедневно наблюдаемых вами десятков баннеров, пре-, мид- и пост-роллов. Делала простые сайты и сложные порталы. Создавала адаптивные – для каждого браузера, любого устройства – интерфейсы, борясь за каждый пиксель по макетам. Проклинала зоопарки напичканных багами мобильных.
Изведала радости и муки руководства фронтендерским отделом. Собеседовала, взращивала кадры, как могла, скатывалась в психологию, принимала уходы как личные потери – и вырастала, чтобы не принимать.
Попала в одну из самых желанных IT-компаний нашей страны.
Да, поработать за навеваемой модой границей не успела. Хотя порывалась. И даже ступала одной ногой. Просто поняла, что мне это не нужно.
Зачем я написала книгу? Затем, чтобы помочь всем причастным избежать ошибок на своем пути, идти к намеченным целям без поворотов на лишние тропинки и, конечно же, стать профессиональнее и счастливее.
И еще, чтобы показать ежедневную рутину, жизнь, какой ее видят профессионалы IT, вставая утром и ложась вечером. А чаще – ночью. Мир, которому отдано ХХ часов в сутки, отдано всё, что есть у нас: молодость и энтузиазм. Где мы существуем в светлое время суток. Что видим вокруг. Что думаем о мире. Как общаемся. Влюбляемся и выгораем. Находим смыслы и идем дальше.
Мне писали. Студенты профильных специальностей и опытные разработчики. Полицейские, экономисты и даже сборщики корпусной мебели. Все они находили в книге мотивацию продолжать. Подтверждение своим мыслям, способы выхода из сложных ситуаций. Понимание, что ждет их в IT. Всего один опубликованный на Хабре[1] пост привел к тысячам скачиваний. Искренне надеюсь – вы из тех, кто найдет для себя в книге что-то важное и полезное.
Для кого эта книга
Для тех, кто хочет связать свою жизнь с IT, для начинающих и думающих, быть или не быть. Информация, очищенная от моды, онлайн-курсов и инфобизнеса.
Для студентов профильных IT-направлений, для студентов, желающих перевестись в IT из других специальностей, разочаровавшихся в текущем выборе. Понять свои первые шаги и узнать, что ждет вас на заре карьеры, а что лет так через двадцать.
Для тех, кто измучен рутинной работой, наскучившей или потерявшей актуальность в стремительно меняющихся реалиях. Кто, желая, но терзаясь внутри сомнениями и, быть может, не веря в себя, хочет попробовать в IT. Начать, сделать поворот рабочего кресла к настоящему программированию, тестированию, управлению – любым граням серьезной IT-разработки.
Для джуниор-, мидл-разработчиков и опытных профессионалов – как сборник советов по каждому этапу карьеры и очередной биографический нон-фикшн: посмеяться над историями, увидеть себя, задуматься, признаться себе, не согласиться со взглядами.
Структура книги
Мы все проходим определенные этапы на своем жизненном пути, равно как и на пути профессиональном. Трудно отделить их – влияние второго на первый в судьбе достойного разработчика колоссально. На каждом из таких этапов свои цели и задачи, свои советы и опыт уже прошедших ранее по этому пути. Поделиться последними и вдохновить на новые свершения и призвана эта книга. Хочется верить, ее структура сформирует некий Advice Driven Behaviour – поведение, управляемое советами, по аналогии с TDD – Test Driven Development – известной всем разработчикам методологией, основанной на написании успешно проходящих тестов, а затем уже самого программного кода.
Книга поделена на части, согласно этапам IT-карьеры и жизни: от обучения и начала до профессионализма и руководства, выгорания и переосмысления. Название каждой части базируется на аналогии с основными стадиями создания и работы программного обеспечения. Части содержат разделы, посвященные важнейшим вопросам на данном этапе.
DESIGN – проектирование. Часть о периоде с момента зарождения цели о вступлении на путь IT до формирования четкой картины о шагах по ее достижению.
«Когда начать», «С чего начать», «Как выбирать информацию и отсеивать ненужное» – в этих разделах разобраны проблемы места и времени старта, обучения, правильных источников. Так ли важен возраст и профильное образование? Какие книги помогут, а какие курсы стоит обходить стороной? На что обратить внимание, как выстроить мышление и почувствовать себя на шаг впереди остальных. А это зачастую отличная мотивация, чтобы продолжать захватывать мир. По крайней мере, для нас, амбициозных программистов.
Мы знаем, что заказчик всегда меняет требования. Учесть все пути, по которым пойдет развитие продукта, – задача практически невыполнимая даже для разработчика с бородой, длиною во всю историю развития IT. Так что и здесь – о шагах самых первых, пока жизнь и ваши цели не внесут свои разумные коррективы.
WRITE – написание кода. Часть посвящена основному этапу создания своих навыков, активного изучения теоретических основ, периоду начала программирования на популярных и не очень языках, средах и фреймворках. В случае более-менее классического сценария развития событий – данный этап посвящен обучению в вузе.
Как найти вдохновение и проверить, есть ли оно у вас, насколько важны усердие и глубина, какие типажи успешны в IT и как использовать конкуренцию – раздел первый «Базовый класс: основы успеха» — о ключевых столпах достижений.
Факультативы, научная деятельность, спортивное программирование и увлечения – раздел второй «Расширяем роли: смежные активности» — о вариациях IT-пути и дополнительных занятиях, дающих необходимое сейчас в IT разностороннее развитие.
Личные отношения и сила их воздействия на ваш рост как человека и профессионала – раздел третий «Первая весна Естественного интеллекта» — о судьбоносных формах влияния на начальных этапах.
COMPILE – сборка и запуск. Часть о начале работы, первых шагах по применению полученных навыков в промышленных масштабах. О разрыве обучения с реальностью и приведении их в гармонию.
Как поддержать страсть к разработке и не навредить будущей карьере – раздел первый «Выбор сборщика» — о выборе первого места работы.
За какие задачи браться, как не распыляться, что станет плюсом, а что скорее помешает дальнейшему росту – раздел второй «Примеры бинарников» — о выборе между мелкими и крупными компаниями, опенсорсом, фрилансом и заказами для знакомых.
Как вести себя в команде и к какому микроклимату стремиться – раздел третий «Оптимизация поведения», об отношениях в коллективах.
RUN – основной этап пути. Часть обо всем, что способно помочь идти летящей походкой, с высоко поднятой головой и бокалом в руке. Вернее, ехать на вполне себе автомобиле. Про самую классическую программистскую жизнь.
На что обратить внимание в поисках лучшей работы – раздел первый «Выбор движка» — о серьезных проектах и компаниях.
Как управлять разработчиками – раздел второй «Между 0 и 1: карьера и руководство» — о становлении признанными лидерами и уважаемыми сеньорами.
Как выстроить крепкую и позитивную профессиональную атмосферу – раздел третий «Личные взаимоотношения» — о поведении с коллегами.
Что сделать для подготовки и как вести себя в ходе рекрутинга – раздел четвертый «Собеседования» — об извечных и порой диссонансных IT-интервью.
Сколько получают IT-шники – раздел пятый «Цена себе: зарплата и справедливость» — о критериях формирования зарплаты и путях её повышения.
Нужна ли вам релокация – раздел шестой «Работа за границей» — о немаловажных факторах при выборе между трудом на родине и за рубежом.
Из чего складывается профессионализм, как стать вызывающим уважение разработчиком – раздел седьмой «Детали мастерства» — о тонкостях успеха.
DEBUG – отладка. Часть о проблемах разработчиков со стажем. Многие сознательные и ответственные специалисты признаются, что уставали. Думали открыть свою мастерскую по изготовлению шкафов, или, скажем, автомойку. Посвятить себя фотографии. Да и, в конце концов, – выползти из шкуры «детей подземелья» на свежий воздух, под лучи солнца и ароматный ветер. Иными словами, бросить к черту всё и уехать в путешествие на накопленные остатки.
На что обратить внимание, когда кажется, что все известно и хочется перемен – раздел первый «Поиск: проблемы дальнейшего развития» — о частых ошибках профессионалов на пути к росту.
К чему приходят разработчики, с какими мыслями борются. Как выбраться, потеряв смысл, стряхнуть пепел и продолжить – раздел второй «Профессиональное выгорание» — о предупреждении выгорания, его признаках и борьбе с ним.
REFACT – приведение в порядок. Часть о построении более-менее гармоничных отношений накопленного опыта с внешним миром и полноценной жизнью.
Как найти и отсечь лишнее, установить границы – раздел первый «Анализ» — о поддержании баланса между жизнью и работой.
Какие проблемы нарастают в IT, и что ждет всех причастных в будущем – раздел второй «Горизонт событий» — о хобби, семье, отношениях, детях и жизненных векторах зрелых специалистов.
Куда уходят разработчики, дизайнеры и менеджеры – раздел третий «Что кроме» — об изменчивости мира и примерах успеха IT-специалистов в других профессиях.
Польза от прочтения
Вы узнаете, когда и с чего начинают свой путь в IT, как выбирать место работы и выстраивать отношения в жизни и на проектах. Что важно, а что лишь информационный шум, что даст вам фору, а что никогда не приведет к статусу высококлассного специалиста.
Поймете, какие типажи успешны в отрасли и какие черты стоит в себе воспитать. Как вырастают в разработчики серьезных продуктов, и как живётся девушкам в IT.
Почувствуете, как стать тимлидом и руководить, «побеждать» на собеседованиях, бороться с выгораниями и развиваться. Где искать вдохновение, как попасть в компанию мечты и оставаться жизнерадостным разработчиком.
Найдете мысли, подсказки и, быть может, ответы по всем основным аспектам своего карьерного пути, чтобы продолжить существовать в IT профессионально и счастливо.
DESIGN
От зарождения идеи добиться успеха в IT-разработке до первых действий
Когда начать
Is there right time for?..
«Уже слишком поздно», «Смогу ли я?», «С моим экономическим факультетом?». Герои меняются: гуманитарный диплом, непрофильная профессия, цены ненужных курсов, возраст сомнений.
Одна напутственная фраза стартовых дней моего IT-обучения прочно врезалась в память:
«Ты никогда не сможешь соперничать с мужчинами – пока они будут писать код и совершенствовать свои навыки, ты будешь жарить котлеты».
Я вспоминаю ее и по сей день. То чувствуя на миг, что стою в шаге от принятия той безнадежности и смирения, то, и гораздо чаще, – упиваясь осознанием, что да, я смогла: избежать, добиться. И вы – никогда не допускайте первого.
Мой путь в IT начался классе в десятом, когда в сознании начал всё серьезнее вырисовываться вопрос поступления. Стоит отметить, что я выросла в семье, состоящей по большей части из врачей, и по меньшей, но столь же значимой для меня, – преподавателей. С детства все разговоры, шутливые вопросы и представления о моем будущем витали вокруг профессий доктора и учителя. Да и я сама была искренне убеждена, что продолжу семейную традицию и стану хирургом или лором, как бабушка, акушером-гинекологом, как дедушка или, в самом близком и понятном мне случае, – терапевтом, как мама. Каждый из них отдавал всю свою жизнь профессии и становился одним из лучших в своем кругу, занимал руководящие должности: управлял отделением или был заведующим консультацией. Их путь хоть и был требующим массы сил и отдачи, но оставался прозрачным и понятным. Одна специализация, одно место работы, одни глубокие знания – и на всю жизнь. Каким любопытным и тяжелым для меня позднее станет осознание: в IT всё не так. Попытки проецировать профессиональный опыт другой сферы и иного поколения на представления о будущей жизни и работе добавили сложностей принятия на начальных шагах карьеры. В области, где за год твои навыки и знания могут устареть достаточно, чтобы перестать вызывать блеск в глазах рекрутеров, да и в глазах собственных, где появляются и уходят в прошлое фреймворки, мода на стили и пути решения одних и тех же ежедневных задач. Перемены происходят так стремительно, что спасают лишь гибкий ум, глубокое понимание базовых концептов и непрерывное, ежечасное, ежеминутное погружение, самообучение, чтение, развитие – и практика, практика. Но, впрочем, обо всём по порядку.
Не помню точно, как и когда именно ко мне пришла мысль пойти на IT-шный факультет. Мой отец был причастен к той самой преподавательской части семьи. Кажется, однажды он принес домой списки всех специальностей единственного в городе технического вуза, где работал сам. И мой выбор пал на «Информационные системы». Тогда же началась подготовка.
Пожалуй, такое время серьезного старта – средние и старшие классы, с прицелом на вуз – одно из самых классических. Еще лет 15 назад, когда этот старт совершала я, то было время и вовсе раннее: мало кто знакомился с азами программирования сверх школьной программы информатики. Да и в общественном представлении «хайпа», как это принято говорить сейчас, вокруг IT – с тем кадровым голодом и космическими зарплатами – не предвиделось. Никаких фронтенд-разработчиков[2], IT-дизайна, понятий UX/UI и бригад тестировщиков программного обеспечения не существовало в массовом сознании отрасли. PhotoShop не предугадывал появления толп веб-дизайнеров, ринувшихся отрисовывать макеты динамических страниц в продукте, предназначенном для обработки статичных растровых изображений. ВКонтакте еще не был запущен, Falcon только пыталась выбраться из фантазий инженеров в бескрайние слои атмосферы, а устройство повседневного средства связи и аппарат для создания снимков, само собой, ничего не знали о возможном единении.
Максимум, что представлял себе среднестатистический подросток, не считая отдельных гиков и олимпиадников, о стоящих профессиональных инвестициях своего ума – польза освоения ПК, который стал постепенно завоевывать место в быту и бизнесе. При том что компьютерная грамотность населения оставалась на крайне низком уровне. А значит, был шанс востребованности – для обслуживания рабочих станций и манипуляций в пакетных программах на нужды фирм.
Доступ в Интернет осуществлялся по телефонным модемам и заветным карточкам на ограниченное время, а лабораторные работы те счастливчики, у которых были более-менее честные уроки информатики, приносили на дискетках. Переформировать свое сознание на higt-tech-восприятие и включиться в бесконечную гонку технологии тогда требовало некоторых усилий.
Сейчас всё проще. Даже если вы решите начать одновременно с поступлением, и, тем более, если уже начали, – вы успели впитать очень многое. Незаметно для себя. IT теперь вокруг нас, с детства, каждый день. Пусть прогресс нещадно меняет формы – вектор развития уже в вашем сознании. Вы знаете множество терминов. Ежедневно вы стоите по ту сторону барьера для разработчиков – на темной, пользовательской, половине. Вы видите удобные приложения и тормозящие интерфейсы, увлекающие дизайны сайтов и неработающие ссылки. С большой вероятностью – знаете разрешение и название ОС вашего телефона, хотя бы раз натыкались на страницу 404 и пользовались HTML5-плеером. А значит, вы уже чувствуете, что есть «хорошо», а что стоит сделать, чтобы получить разгневанного пользователя. Да, детали изменятся, но сам принцип мышления и нужный угол взгляда на мир – уже с вами. Сейчас вы достаточно сознательны, чтобы самостоятельно направлять обучение в близкое вам русло, и достаточно увлечены, чтобы создавать Фейсбук ночами в общежитии.
«А если я хочу начать раньше?»
Средний возраст прихода в фигурное катание будущих олимпийских чемпионов – порядка 4 лет. Старт в юные годы дает вам огромную фору. И это прекрасно. Но важно помнить, что IT и разработка продуктов – это не только скорость набора символов и крутость вашего приложения. Это также учет требований конечных пользователей, решение их проблем. Увы, в погоне за техничностью и модой на инструменты разработчики забывают, зачем они здесь собрались. А вот зачем: решать проблемы людей. Делать их жизнь проще. Позволять каждому тратить больше времени на то, что получается у него лучше, чем у любого другого.
Для эффективного достижения таких целей нужно глубокое понимание предметной области. Для этого, в свою очередь, необходимы зрелость и широта взглядов. Вы будете удивлены, как революционно могут помочь любые знания из совершенно неожиданной сферы. Будьте спортсменами и оттачивайте технику: кто посмеет сказать, что научиться как можно раньше – это плохо? Но не забывайте, как важно сохранить увлеченность работой на всю оставшуюся жизнь, а еще – не упустить за программированием с малых лет тысячи других областей и терабайты знаний об устройстве мира. Ведь именно они с большой вероятностью позволят вам создать новые решения, увидеть скрытое от «программистов-аутистов» и стать лучшим разработчиком, тимлидом, руководителем в Google или создателем стартапа, который изменит мир.
Илон Маск много читал в детстве, путешествовал и, что более важно, жил в среде расового противостояния и сохраненного рабства на землях ЮАР. С раннего возраста он не посвящал свою жизнь изучению программирования, хотя первая его игра увидела свет еще в довузовский период. Нестандартный жизненный путь и широкий взгляд на мир с иного угла дали результат, недостижимый одним лишь корпением над документацией всё свободное время. Ричард Фейнман с самого детства собирал радиоустановки на чердаке. Но в более поздние годы не сидел, запершись в кабинете физики, а осваивал игру на барабанах и ходил с парадами по Бразилии.
Помните, раньше – значит надежнее, но в долгосрочной перспективе не значит результативнее, разумнее, профессиональнее. Да и вообще, мало что значит. И последующие истории тому доказательство.
«Хочу поменять профессию. Что, если начать позже?»
Уже окончив вуз по иной специальности, проработав некоторое количество долгих лет вне IT… У вас есть тот самый кругозор, который создает уникальную комбинацию способностей и может привести к революционным решениям. И да, у вас гораздо больше воли, мотивации и целеустремленности – ибо такой выбор серьезнее, он требует кардинальных перемен в жизни – переезда, перестраивания семейных отношений. Да и делается куда более осознанно, нежели выбор школьного абитуриента.
История перваяПервый техлид, с которым мне довелось поработать, казалось, мог всё.
Спортивный и подтянутый, быстрый в каждом движении, Саша был не прочь подзадорить коллег отвлеченным разговором и собрать всех вокруг на чашку несущего передышку чая. Несмотря на разницу в возрасте с нами, новичками и стажерами, он не угнетал авторитетом повидавшего жизнь разработчика, а делал атмосферу легкой, мотивирующей и оперативной. Манера насмешливо журить за упущения и незнания нисколько не сковывала начинающих интровертов. Самым психологически сложным оставалось обратить на себя внимание: призывно размахивая руками, вынудить его снять неизменно надетые наушники.
Когда приходилось настраивать рабочее окружение и сталкиваться с ошибками, в которых Stack Overflow оказывался бессилен, – достаточно было позвать Сашу. Любая проблема с npm-пакетами, версиями gem-ов, последствиями кривых рук в Linux, настройками серверов решалась за пару минут. Когда нам поступила задача быстро завести партнерский интернет-магазин на PHP, наиболее глубоко знакомым с этим непрофильным для компании языком – разработка у нас велась на Ruby – снова оказался он. Именно Саша занимался ведением основного продукта – высоконагруженного сервиса для известного медиахолдинга. Между делом он грамотно воспитывал стажеров, многие из которых вырастали в успешных разработчиков. В свободное время вел технический блог, находил любопытные решения, пробовал, настраивал новые инструменты. В рабочее – успешно рассчитывал мощности и конфигурации серверов для поддержания устойчивой архитектуры видеоплатформы. Стоит добавить ко всему легкость коммуникаций: редкая общительность для традиционного типажа того времени – замкнутых программистов – шутки над коллегами мимоходом, инициация обеденных групповых вылазок командой на турники с подтягиваниями, отжиманиями и хардкордной «планкой». Последняя, к слову, была показана им как образец, и никем более на тот момент не осилилась к повторению.
Казалось, вот так должен выглядеть профессионал, наслоивший на хорошо усвоенные академические знания практический опыт нескольких лет работы. Да-да, даже не десяти, пятнадцати или двадцати – ему было всего тридцать с небольшим. Каково же было мое удивление, когда я узнала, что академического IT-шного образования в этой истории нет и вовсе! Более того, нет даже хоть сколько-нибудь смежного технического. А по своему диплому наш лучший техлид:
– Преподаватель. Специалист физической культуры и спорта, – размеренно произнес однажды голос из-под наушников в ответ на поднятую кем-то образовательную тему.
– Ни за что бы не подумала… – все, что растерянно я смогла выдавить из себя тогда.
«Как тебе это удалось?», «Давно ты начал?», «А как ты вообще оказался в IT?» – удивленные вопросы посыпались со всех сторон.