Середняки начинают и выигрывают: как преуспеть в программировании, не будучи гением
Гайд по выживанию в любом проекте для так себе программиста.
Кадр: сериал «Кремниевая долина»
keypressingmonkey
Об авторе
Программист днём, в ночи — креативный писатель. Владелец сайта CodingToFreedom.
Переводчик
Евгения Новолодская
В этом трудно признаться, и тем более вы не найдёте такой строчки в моём резюме, но я довольно посредственный программист. В целом я рублю в коде (ну, или в большей его части), но не сказать чтобы по ночам я видел сны, написанные в .NET Core. Rubies. И да — я не так уж и много зарабатываю, потому что не особо-то и программирую: ещё не создал собственный фреймворк и каждый раз подглядываю в шпаргалки, чтобы переключиться между языками программирования.
Но это вовсе не значит, что мне не нравится программировать. Я люблю свою работу — хотя временами мне хочется избавиться от неё и выбрать другую профессию. Да, я на дух не переношу методологию Agile, это так называемое новое слово в разработке, ту хрень, которую все непременно должны освоить, — по крайней мере, так об этом говорят большинство её приверженцев. И я могу часами бухтеть на тему того, что не так в моём уютненьком цифровом мирке, — не говоря уж о мире в целом.
И всё же я ложусь спать счастливым, ведь у меня есть любимое дело, которое позволяет мне пребывать в здравом уме и одновременно оставаться «на чиле, на расслабоне», с удовольствием ловя каждый миг и не пребывая при этом в депрессии или выгорании. Что уж там — я определённо кайфую от жизни и в этой статье хочу рассказать, как я этому научился, попутно став довольно неплохим специалистом.
Хватит ненавидеть своё дело
Нельзя по мановению руки полюбить то, чем вы занимаетесь, но можно хотя бы перестать ненавидеть свою профессию.
Для меня разработка не была осознанным выбором — я пришёл сюда случайно. Я неплохо разбирался в компьютерах, отправил своё резюме в несколько компаний и каким-то чудом, будучи полным нулём в программировании, попал на стажировку в крупную компанию.
Я проходил её с ребятами, которые буквально горели программированием и хотели стать в нём лучшими, — кстати, они до сих пор на три головы выше меня в этом деле. Однако профессиональная жизнь программиста — это не только символы на экране, она гораздо шире. И наверняка в ней найдётся хоть какая-то, пусть и мельчайшая, область, которая покажется вам манящей и удивительной.
Для меня, тогда ещё юного стажёра, настоящим спасением стал практически неограниченный доступ к клиентской базе. Чтобы как-то занять время, я погрузился в сладостный, волшебный, поэтичный мир статистики. Какими услугами пользуются наши клиенты? Сколько электронных писем в день пишет средний покупатель? О чём нас чаще всего спрашивают?
Через какое-то время я почувствовал себя среди этих вопросов как рыба в воде. Я моментально приходил на помощь, если кому-то требовались какие-нибудь статданные, и экономил кучу времени службе поддержки, потому что постоянно обновлял базу клиентов. Это не входило в мои обязанности, но я знал: вряд ли кто-то будет негодовать, если в свободное от работы время я облегчу коллегам жизнь.
Статистика была единственным, от чего меня не воротило, — чего не скажешь об остальной части моей работы. Статистика мне даже нравилась, тем более что я регулярно обнаруживал на своём столе шоколадки — в благодарность за помощь. Благодаря этим приятным мелочам я постепенно начал получать удовольствие и от своей профессии в целом — хотя, по правде говоря, шоколад я тоже не особо-то и люблю :)
Нормально делай — нормально будет
Я всегда считал, что лучше неплохо разбираться во многом, чем идеально — в чём-то одном. В случае с программированием это верно втройне.
Хорошую работу можно делать по-разному: где-то требуется усердие, а где-то можно выехать просто на опыте и умении быстро фиксить баги, на исправление которых новичкам потребовалась бы куча времени. Главное в освоении любого дела — потерпеть и продержаться на плаву какое-то время. Постепенно вы увидите свет в конце тоннеля. Горизонты расширятся, вы поймёте, как устроена система, и научитесь легко и быстро справляться с проблемами там, где у других голова пошла бы кругом.
Например, существенная часть моей работы — адская пытка под названием «производственное тестирование базы данных». Мне приходится крутиться, вертеться, дерзать, искать и не сдаваться, чтобы исправить критические ошибки, которые я даже не могу проверить: база обновляется всего раз в неделю и, естественно, совсем не тогда, когда нужно. Я называю такой труд «делай — и молись, чтобы прокатило». Что может быть хуже?
Для перфекционистов эта работа — настоящее проклятие. В конце концов я стал проводить юнит‑тестирование прямо в основной ветке, так как в любом случае я был единственным, кто работает над системой, и некому было одобрять мои пул-реквесты. Мне потребовалось некоторое время, чтобы обойти дурацкие правила, запрещающие такой формат работы, — но я горжусь тем, что мне удалось это провернуть. Отчаянные времена требуют отчаянных мер.
Я веду к тому, что в программировании довольно много оттенков слова «нормуль». Необязательно сразу попадать в десятку. Главное — выбрать хотя бы примерно подходящий алгоритм решения проблемы, а уже потом, методом проб и ошибок, двигаться к цели. Я исповедую стиль «хаотичного стремления к идеалу» — и чувствую себя в нём преотлично. У вас может быть другой стиль — где всё упорядоченно и прописано настолько охренительно, что вашу работу сможет сделать даже новичок.
Неважно, каким путем вы придёте к цели. В любом случае, если вы сумеете придумать свою искусную историю успеха, а главное, будете держать контроль и регулярно демонстрировать закон и порядок в мире, где его на самом деле не существует, — вы гарантированно станете мужчиной мечты для любого тимлида, вне зависимости от вашего пола и ориентации.
Превратите скилл в прикол (и научитесь новому)
Тяжела и неказиста жизнь простого программиста — однако и в ней можно найти свои маленькие удовольствия.
Сегодня с помощью языков программирования и открытых бесплатных инструментов можно создать практически всё. И всё это можно легко изучить и превратить в хобби. Так что используйте свои навыки и двигайтесь вперёд.
Можно слепить на коленке что-нибудь дурацкое, вроде простенького генератора случайных цитат. Или сделать что-то серьёзное — например, сложный веб-сайт, который решает большие проблемы и делает вас богатым за счёт абонентской платы. Или поучаствовать ещё в каком-нибудь интересном проекте.
Например, я однажды потратил безбожно много времени на создание генератора секс-историй на PHP, который терпеть не мог. Но я не бросил этот проект — видимо, мой внутренний мазохист страстно желал разобраться в ненавистном для меня языке.
Короче, в большинстве случаев, чтобы реализовать что-нибудь интересное, вам не потребуется даже денег — только время и желание. А пособий и руководств, которые помогут вам продвинуться вперед, в интернете хоть отбавляй. Гугл в помощь.
Программирование — это больше чем код
Мне потребовался не один день, чтобы научиться делать то, что я делаю сейчас. Я пишу сравнительно мало кода — ровно столько, чтобы и дальше называться программистом. Зато я управляю сложной и крайне важной для компании системой, а также всей её обвязкой: организую свою работу, общаюсь с командой, участвую в различных совещаниях и делюсь опытом.
Безусловно, это довольно нервная работа, но она мне нравится. И да, я прочувствовал на собственной шкуре все её минусы: от мелких раздражающих ошибок до утомительных встреч, на которые я бы предпочёл не ходить. Однако без этих моментов моя работа не была бы столь разнообразной и интересной.
Мне нравится засиживаться допоздна в офисе с другими трудоголиками. Это великолепная атмосфера: все сидят за своими компьютерами, время стремительно бежит, дедлайн уже близок, но работа плечом к плечу помогает бороться с собственными профессиональными демонами.
Разберитесь с архитектурой и экосистемой своей компании
На прошлой неделе у нас случился критический системный сбой — и так получилось, что все специалисты, хоть сколько-нибудь разбирающиеся в вопросе, отсутствовали: кто-то был в командировке или отпуске за пределами страны, кто-то заболел.
У меня было самое общее представление о том, как работает эта система, но я взялся за решение проблемы — а позже ко мне присоединились ещё два человека, столь же далёкие от темы. Но в конце концов нам удалось понять, что дело было в ошибке сервера, и вместе с вендором, у которого мы купили эту систему, мы запустили её уже к утру субботы.
Конечно, у половины компании день прошёл впустую — но таких дней могло бы быть два или три. Да, это был один из самых сложных моментов за последнее время — но и один из самых весёлых. Я даже получил электронное письмо с темой «хорошая работа» от начальника одного из отделов — кстати, мы познакомились с ним, столкнувшись лбами, когда ползали под техникой в попытках всё наладить. К счастью, такие сбои — это всегда ненадолго, и теперь я снова могу быть «виртуальным анонимом». Ну и слава богу.
Общайтесь
Случалось, что я был на грани увольнения: за неисполнение, а вернее — за исполнение не своих прямых обязанностей. То есть за то, за что сегодня — какая ирония судьбы — меня хвалят и ценят!
Впрочем, не будем о грустном. Я отметил это лишь для того, чтобы подчеркнуть, насколько моя манера общения повлияла на отношение людей ко мне и к моей работе.
Не забывайте про такие на первый взгляд бесполезные вещи, как благодарственные письма, ответы на замечания, объяснения, почему могла произойти та или иная ошибка и как вы её исправили. Вы удивитесь, но большинству это нравится. Пишите, пишите и ещё раз пишите письма! Тратьте по крайней мере час в день на простое вежливое общение с людьми.
У меня даже появилась собственная поговорка: «Просто объясните всё этим идиотам и наблюдайте, как они превращаются в людей».
Несколько слов напоследок
Надеюсь, эта статья позабавила вас или даже оказалась полезной! В прошлом все эти советы самому себе точно спасли мою задницу от позорного увольнения и раздумий об отшельничестве в лесу, вдали от современных технологий и программирования. Пользуйтесь ими и вы!