Хабрахабр

8 советов начинающим программистам или ретроспектива моей карьеры

Моя первая настоящая работа в качестве программиста. Ровно 15 лет назад, в этот самый день, своими дрожащими коленками я переступил порог офиса небольшого провинциального интернет-провайдера. Тонкий испуганный голосок откуда-то из желудка советует развернуться и убежать подальше, пока окончательно не опозорился. Знаний почти нет. Устраивайся». Глубокий вдох-выдох, и вот генеральный директор уже ведет меня в небольшую комнатку-подвальчик, показывает на полуразобранный компьютер, видавший лучшие времена: «Это твое рабочее место. Так началась моя карьера.

Сейчас я пишу эти строки, сидя в удобном офисе престижного БЦ в центре Москвы. Но перенесемся в настоящее. Сотни книг прочитано и десятки статей написано. За плечами работа с крупными международными брендами и разработка сложных fintech приложений. Менеджерские позиции опробованы и отвергнуты. Мания величия давно вылечена. Любовь к профессии сохранена. Душевное равновесие найдено. Делай, как я и тоже будешь молодцом”. Однако это не статья из серии “Какой я молодец. Эта статья — ретроспектива моей карьеры.
Эта статья о том, какие ошибки я совершал и что можно было сделать лучше.

Меняйте компанию, если нет развития

Время от времени я застревал в компаниях, которые явно перерос по уровню. Вроде и деньги платят хорошие, и все тут знакомо и удобно. Приходишь утром, выбираешь привычный режим на кофемашине. Обмениваешься шутками с Катей из бухгалтерии. Садишься в свое кресло, которое давно приняло очертания твоего мягкого места. Открываешь ноут и погружаешься в ежедневную рутину из типичных хорошо знакомых тебе задач. Внимание! Это ловушка!

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

Будьте программистом, а не кодером

Написать код != решить проблему. Код — это только один из инструментов для решения проблем. Ох, как же долог был путь до осознания этого простого утверждения. Как же много времени было потрачено впустую. Нас, программистов, со страшной силой притягивает код. Видя очередную задачу в Джире, мы пробегаем ее глазами по диагонали и скорее-скорее писать код! Как только код написан — мы теряем интерес к задаче и берем новую.

Перед тем, как открыть IDE, я должен быть на 100% уверен, что понимаю проблему, которую собираюсь решать. К сожалению, нам очень редко ставят прозрачные и понятные задачи. Если я могу расписать решение по шагам и знаю, к какому результату приведет каждый шаг — только тогда я открываю редактор и пишу код. Хорошим маркером тут является декомпозиция.

Ни одна компания еще не добивалась успеха благодаря красоте кода (во всяком случае я таких примеров не припомню). Помните: ваша ценность как программиста не в элегантном коде с экзотическими паттернами от “Банды четырех“. Всегда держите в уме конечный результат.

Не бойтесь экспериментировать

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

Спешить некуда. Экспериментируйте. Если вы эксперт в какой-то технологии — используйте эти знания на работе, но вне работы пользуйтесь инструментами, с которыми вы не знакомы. Развивайте кругозор. А приходится разбираться, почему преобразование чара в инт отдает код символа, а не цифру. Это сложно психологически, ведь вы будете понимать, что используя хорошо знакомый язык программирования, уже пожинали бы плоды славы от вашего проекта на Мальдивах.

Запускайте пет-проекты

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

Ведь я стал понимать их работу намного лучше. С тех пор, как я запустил свой первый пет-проект, мне стало гораздо проще находить общий язык с фронтами, qa, продактами, маркетологами и любыми другими членами команды. Современное программирование — очень командное, и опыт работы над собственным проектом помогает мне находить точки соприкосновения с другими членами команды.

Учитесь декомпозировать

У меня всегда были проблемы с внимательностью. Я допускал в коде очень глупые ошибки. Не потому что я что-то не понимал или не знал как сделать. Просто я был невнимателен. Боролся с этой проблемой разными скучными способами (например, следил за минутной стрелкой), но ничего не помогало. Естественно, после каждой такой ошибки моя самооценка резко падала. О каком развитии может идти речь, если самооценка на нуле?

Меньше задача = меньше кода = меньше вероятность допустить ошибку. Решение пришло в виде декомпозиции. Если у вас не получается, скорее всего, вы просто не до конца понимаете задачу. Я часто слышу фразу «эту задачу нельзя декомпозировать», но лично я считаю, что любую задачу можно декомпозировать до бесконечности.

Изучайте инструменты

Долгое время я пользовался IDE как обычным редактором кода с удобной навигацией. А еще у меня был начальник, который программировал исключительно в mcedit и часто театрально вопрошал: «Кто ты без своего IDE?». Или у меня 24/7 был открыт терминал, но я совсем не умел с ним работать. Я долго жил без статических анализаторов и стайл-фиксеров. Игнорировал горячие клавиши. И не видел в этом никакой проблемы.

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

Участвуйте в opensource

Opensource — это больно. Каждый ваш PR будет рассмотрен под микроскопом. Каждая переменная, каждый символ. Каждый тест будет подвергнут сомнению. И это не ваш тимлид, который: «а, ну ладно, давай так смержим». С этими людьми не договоришься, на них не пожалуешься, их не задавишь авторитетом. И они вам даже не платят. Примерно на двадцать пятом комментарии очень хочется послать все нафиг.

Opensource — это отличная возможность прокачать свой скилл, работая с лучшими программистами мира (хотя тут зависит от проекта). Терпите! Выберите какой-нибудь несложный инструмент или библиотеку. Начните с малого. Надо сказать, что обычно на гитхабе полностью отсутствует токсичность. Зайдите в раздел issues и посмотрите, что можно пофиксить. Во всяком случае, по моему опыту. Если ваш ПР разнесут в клочья, то сделают это очень конструктивно.

Верьте в себя

Время от времени у меня возникали ситуации, когда хотелось все бросить и пойти работать на стройку. Таскать кирпичи. Этой ситуацией могла быть задача, которая никак не заканчивалась. У которой ежедневно менялись требования. Или технология, которую я не хотел изучать. Или интеграция стороннего сервиса, у которого полностью отсутствовала документация. Или просто функциональность, для понимания которой требовалось образование финансиста, а все продуктологи говорят исключительно на английском. Я психовал, прокрастинировал, увольнялся и срывал злость на котейке.

Просто я всегда помню, что в итоге я справлюсь. Есть один прием, который сейчас сильно помогает мне с такими задачами. И всегда буду. Всегда справлялся. Главное, верить в себя и оставаться спокойным. Нужно просто сесть, поизучать, подумать, разложить по полочкам, задать правильные вопросы правильным людям. Keep calm and believe in yourself. Вообще, пожалуй, это самый главный совет, которым я и закончу статью. Вы справитесь.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть