Разработчиком на удаленке – c нуля до героя / Habr
Джуны на удаленке не нужны
Как любят говорить ребята с Тостера, в частности кураторы большинства разделов, джуны на удаленке никому не нужны, как и вероятность что-то заработать джуном на фрилансе. И это действительно так. Но также всем известно, что всегда найдется человек, который сделает то, что считалось практически невозможным.
И так, меня зовут Сергей, я enterprise-разработчик, я живу в городе Уссурийск (Приморский край, 200к население, +7 часов с Москвой), у меня нет профильного образования, и я ни дня не работал в офисе разработчиком. И эта история про то, как я дошел до такой жизни.
Я не ставлю своей целью воодушевить ребят из провинции, чтобы они все дружно бросились и начали пытаться устроиться на удаленку. Я хочу показать то огромное количество времени, которое я потратил, чтобы дорасти до разработчика (без всякого сомнения, если бы в моем городе был «офис», я бы сделал это гораздо быстрее).
После университета
Изначально я планировал работать в игорной сфере, поэтому после школы пошел на «Социально-культурный сервис и туризм», однако на 2 курсе вышел закон РФ о запрете игорной деятельности. Хотя я живу в Приморском крае, где должны были к 2012 году построить казино, все сроки сорвали, и фактически к моменту моего выпуска ничего не было. Точнее были подпольные казино, но это были те места, где тебе бы точно не хотелось работать.
Как итог, я устроился сначала в оптовую компанию по продаже риса, потом ушел оттуда на монтажника подключения интернета, а потом уже в поддержку в 1С-Франчайзи. Это все заняло примерно полтора года. Как говорится, в руках красный диплом универа, и все двери перед тобой открыты.
Техническая поддержка
Все это время я просматривал что-то более подходящее, и в один день на «Моем Круге» увидел вакансию в ночную техническую поддержку. Я прикинул, что с учетом моего часового пояса, 7 утра по Владивостоку, это 0-00 по Москве, я смогу работать в ночную смену фактически днем. Я откликнулся, прособеседовался и устроился на работу.
Естественно, просто так левого человека не возьмут в поддержку. Я еще со школы увлекался сайтостроением и делал различные сайты для своей команды по дотке и местного игрового клуба. Плюс из-за моего образования, у меня был достаточно хороший английский язык, что позволило мне также оказывать поддержку клиентам из Австралии, Новой Зеландии и США. У меня фактически был уровень такого хорошего веб-мастера с английским языком, плюс опыт поддержки из 1С.
Движение дальше
Это был 2014 год, везде кричали, что php-отстой, что python – это будущее и прочее (Как я был наивен и глуп!). Поэтому я начал изучать программирование с него. Как я это сделал:
1) Скачал книги Марк Лутца «Изучаем Python», «Программируем на Python». Книги дались достаточно сложно, ибо читать их было крайне скучно, тем не менее, они дали очень хорошую базу. Если у вас есть выбор, начать быстро или прочитать какую-то фундаментальную книгу по программированию, то я настоятельно рекомендую начать со второго, чтобы получать необходимую базу. Важно понимать, не только «Как», но и «Зачем» и «Почему».
После книг я решил немного поиграться и начал писать различные парсеры для игровых порталов (Brablay/GoodGame) с целью сбора статистики по определенным темам. В частности было интересно увидеть, как определенные люди оставляют комментарии, в частности их огромное количество.
2) Потом я решил сделать что-то более значимое и собрать статейный портал на Python. Прочитал книгу по Django (Если честно не особо её понял – информация давалась слишком быстро и слишком «вакумно»). Поэтому посмотрел пару вступительных роликов по Django от ITVDN и обратился к официальной документации.
За 4 месяца разработки я освоился с версткой, понял, как работать с базой, писать миграции, ставить SSL и прочее. В итоге, следующий год я потратил на запуск целого ряда собственных проектов и разработка небольших сайтов для местных ребят (дроп-шиппиг сайт, магазин велосипедов, магазин спортивного питания и так далее).
3) Через год мне наскучило разрабатывать проекты на Django. Я стал смотреть, что еще можно придумать на Python. Я, наверное, прочитал все книги по Python, что были на сайте Ozon. Начиная от книги по Devops, заканчивая компьютерным зрением и машинным обучением. Эти темы не особо меня вдохновили (я не видел прикладного значения в моих масштабах, что я могу использовать прямо здесь и сейчас), но эти термины из какой-то неведомой магии и «скайнета», превратились в обычные формулы и прикладные библиотеки.
4) В итоге, я решил немного поднять свой уровень компьютерной грамотности и начал читать книги по C/C++/Java/Компьютерным сетям/PostgreSQL/TDD и Корпоративным паттернам. Если честно достаточно интересный опыт, когда ты понимаешь, как работает другая технология, на что она опирается, какие несет в себе сложности, и как она решает «сложные задачи» из твоего стека.
Отдельно можно отметить книгу по Spring, которая показала, насколько корпоративное приложение сложнее, чем «easy-going» проекта на Django.
Тестирование и Автоматическое тестирование
Через три года работы в поддержке, мне, к сожалению, отказали в переход в отдел разработки, но появилась возможность получить позицию в отделе тестирования. К тому моменту я свободно знал Python и мог в Java, поэтому было бы глупо не согласиться.
Отдел тестирования дал достаточно хорошее понимание, как ведется разработка сложных систем, как взаимодействуют команды внутри себя и между собой. Конфигурация различных тестовых окружений, приоритезация задач и многое другое.
Естественно, это автоматизация тестирования на селениуме с дерганием тестов через jenkins при релизах новых билдов.
Отдельно понравилась тема тест-дизайна. В компании был большой пул различных курсов по тестированию, поэтому с ними можно было узнать много крутых фишек, о которых ты вообще раньше не задумывался из сферы тест-дизайна. Например, проектирование минимального числа тест-кейсов, чтобы покрыть наиболее количество вариантов системы с помощью pairwise (http://www.pairwise.org/) генераторов. Это крутые штуки из работы QA-Инженера, о котором многие разработчики даже не задумываются.
Переход в разработку
Через полтора года в отделе тестирования, я получил договоренности, что если я предоставлю рабочий прототип на php-стеке, я получу возможность пройти стажировку в отделе разработки.
Один месяц у меня ушел на книги по PHP. После Python и Java освоить PHP оказалось достаточно легко, хотя время от времени и появлялись вопросы «А почему тут так нельзя».
И три месяца я потратил на АПИ-сервис на Symfony (веб-морда, личный кабинет, бизнес-логика, почтовые уведомления, пдф-генератор, парсинг сложных json-структур и прочее). Внезапно оказалось, что Symfony – это своего рода гибрид Django и Spring, поэтому каких-либо проблем с пониманием вообще не возникло.
В итоге, я показал свой проект и получил стажировку в отделе разработки, откуда меня уже перевели в полноценного разработчика.
Первые месяцы в качестве разработчика
Мне предоставили ментора, который фактически ревьювил мой код и подсказывал, почему нужно делать так, а не иначе. Иногда созвоны длились по полтора-два часа, когда детально разбирался код по шаре и давались рекомендации, как его улучшить. Фактически получалось так, что я давал решения в нужные сроки с нужной логикой, но за счет того, что у меня не было опыта корпоративной разработки, они получались слишком запутанными и усложненными. Плюс время от времени появлялись вопросы по работе Redis/RabbitMQ/Elastic итд. Но все же главная работа велась в сфере, чтобы упростить код и сделать его тестируемым (когда пишешь код для себя, даже не задумываешься, что другие люди не смогут его читать). Как итог, за 4 месяца мой код подтянулся по стилю до корпоративных стандартов.
Общий стаж, чтобы получить работу разработчика на удаленке с нуля – 4 года, 9 месяцев.
Как итог об удаленной работе с нуля:
- Вероятность получить работу разработчиком на удаленке, пройдя какой-то курс и почитав какой-то туториал – стремится к нулю.
- Вероятность справиться даже с работой джуна на удаленке без опыта коммерческой разработки, либо каких-то собственных проектов – стремится к нулю.
- Вероятность того, что без каких-либо рекомендаций, компания будет тратить на вас время, чтобы чему-то научить – стремится к нулю.
- Вероятность того, что прочитав какие-то книжки, и устроившись на удаленку, вы будете получать какие-то «большие деньги» — стремится к нулю.
- Принять решение в начале своей карьеры, чтобы отказаться от офиса и искать удаленку – большая глупость.
- Отказываться от других айти-работ, так как вы хотите быть только разработчиком на удаленке с самого начала своей карьеры и никак иначе – большая глупость.
Что делать, чтобы получать нормальные деньги и работать в комфортных условиях, будучи программистом
Наша недавняя публикация с отчётом о зарплатах в ИТ за первое полугодие этого года собрала невероятное количество комментариев пользователей «Хабра». Они делились мнениями, наблюдениями и личными историями, но один из комментов настолько нам понравился, что мы решили опубликовать его здесь.
Поэтому я наконец-то собрался силами, и написал отдельную статью, раскрыв и обосновав мысли подробнее.
Иногда в статьях и комментариях, где обсуждаются доходы IT-специалистов, можно встретить высказывания типа «Да откуда вы берете такие цифры? Я уже много лет работаю X, и ни я, ни мои коллеги таких денег никогда и не видели…».
Честно говоря, я N лет назад мог бы написать такой же комментарий. Сейчас не могу 🙂
Пройдя через разные места работы, организации и жизненные ситуации, я лично для себя сформулировал вполне простой набор правил на тему «что делать, чтобы получать нормальные деньги и работать в комфортных условиях в IT». Это статья далеко не только про деньги. В некоторых пунктах я затрагиваю тему возможности повысить свой профессиональный уровень и научиться новым востребованным навыкам, а под «хорошими условиями» понимаю далеко не только уютный офис, техническое оснащение и хороший соцпакет, но и в первую очередь отсутствие маразма, душевное спокойствие и целые нервы.
Эти советы актуальны в первую очередь для разработчиков ПО, но многие пункты подойдут и другим профессиям. И, само собой, изложенное относится в первую очередь к РФ и другим ex-USSR странам, хотя, опять же, некоторые пункты будут актуальны везде.
Небольшое лирическое отступление
Что мы будем подразумевать под «хорошим местом работы»? Для каждого критерии индивидуальны, для меня понятие «хороший работодатель»:
включает в себя
— То что там не будет буллшита типа «работать у нас большая честь», скотского отношения типа «не нравится — никто не держит», и грубого обращения в любой форме со стороны руководства
— При трудоустройстве после интервью дают фидбэк. Зарплатная вилка указана в вакансиях.
— Зарплата не ниже средней по рынку для конкретного стека/грейда. Регулярный пересмотр зарплаты на соответствие рынку и грейда на соответствие скиллам. Привязка з/п к твердой валюте будет плюсом.
— Взаимодействие с сотрудниками основано не на карах (штрафах и прочем) за промахи, а на поощрениях за успехи
— Соцпакет как минимум включает в себя ДМС (не минимально-бомжатский, а с нормальными клиниками и стоматологией, в идеале еще для членов семьи)
— Уютный офис. Не обязательно дизайнерские интерьеры и зеленые пуфики, а просто чтобы там было визуально приятно и комфортно находиться, с приемлемой атмосферой (в физическом плане, т.е. не душно, не холодно и не слишком жарко), не шумный, с парковкой для сотрудников, в нормальном бизнес-центре или отдельном здании
— Отсутствие строго дресс-кода (если работа не связана с общением с клиентами), запретов на использование телефонов/наушников, и т.п. Отсутствие ограничений на доступ в интернет (да, и такое бывает).
— Под «обучением» и «повышением квалификации» считается не зазубривание инструкций и не корпоративные тренинги про «миссию компании», а курсы иностранных языков в офисе, покупка профессиональной литературы и оплата поездок на тематические конференции, причем не только для топов, но и для рядовых сотрудников.
— Отсутствие 100500 начальников и согласований на каждый чих, когда банальная покупка новой мышки для рабочего места выливается в две недели подписывания и перекладывания служебок
— Переработки происходят очень редко (а лучше никогда), только при действительно критичной необходимости, и нормально компенсируются
— Дополнительные дни отпуска за счет фирмы. Отпуск можно запланировать сильно заранее, но при этом точно так же допускается и спонтанно: т.е. график отпусков есть, но не железный, а гибкий при желании сотрудника и согласовании с командой. Отсутствие проблемы взять дэйофф при личной необходимости, возможность болеть несколько дней в год без больничного с оплатой
— Гибкий график работы, отсутствие требования быть в офисе ровно в 8 или в 9 утра (если только работа не связана со взаимодействием с клиентами или непрерывными техпроцессами), и уж тем более отсутствие каких-либо штрафов за опоздания. Возможность некоторые дни работать удаленно из дома.
— Минимум кумовства, блата и «трудовых династий», в большинстве случаев означащих посаженного на теплое место чьего-нибудь сынка, за которого работу делают другие
— Никаких форм секретности, ограничений на выезд и унизительных проверок СБ при трудоустройстве
— Если сотрудник испытывает выгорание, его не вынуждают уволиться, а предлагают перейти в другой проект в рамках компании или поехать на месяцок поработать в офис в другом городе/стране, чтобы сменить обстановку и развеяться.
Естественно, сложно найти то место, где абсолютно все эти критерии будут выполняться полностью, но это то, к чему нужно стремиться.
И еще раз — этот список конкретно про внешние проявления и детали, а «достойная оплата труда» и «интересные задачи с возможностью развиваться как специалист» — это на первом месте и даже не обсуждается 🙂
Итак, поехали.
Избегайте за километр гос- и полугосконтор и подобных учреждений
Во-первых, при финансировании учреждения из бюджета, верхняя планка зарплат ограничена сама собой естественным образом — «денег нет, но вы держитесь». Еще в госучреждениях и им подобных местах часто зарплаты привязаны к штатным расписаниям. И может оказаться, что в документе написано что программист получает столько же, сколько какой-нибудь делопроизводитель, и это никак не изменить. Некоторые руководители, понимая всю абсурдность данной ситуации, полулегально устраивают айтишников на полторы-две ставки, но это скорее исключение из правил.
Во-вторых, в случае, если учреждение не работает на свободном конкурентном рынке, то у его руководителей скорее всего не будет цели улучшать качество и конкурентоспособность продуктов и услуг (целью будет разве что не опускать это качество ниже какой-то величины, чтобы не получить по шапке от надзорных органов), и соответственно, не будет стараться набрать лучших сотрудников и мотивировать их денежно или как-то еще.
Из-за отсутствия нацеленности и мотивированности руководства на качество и результат, а также того, что тратят они, по сути дела, не свои, а чужие деньги, часто можно наблюдать такое явление, как пристраивание детей/родственников/друзей etc. на «тёплые места» в организации. Однако работать всё равно как-то надо. Поэтому может, во-первых, оказаться, что человеку, попавшему туда с улицы, придется делать работу и за себя, и за того парня. А во-вторых, навряд ли его будут окружать высококлассные специалисты, у которых многому можно будет научиться.
В случае с трудоустройством в частной компании, но работающей на госзаказ, увы, можно столкнуться примерно с тем же. Если компания получает заказы и тендеры потому что «уже все схвачено», то, по сути дела, мы опять приходим к ситуации «конкурентов нет» с соответствующими последствиями. А если даже тендеры разыгрываются честно, то не стоит забывать, что победителем выходит тот, кто предложит самую низкую цену, и вполне может оказаться так, что экономить будут в первую очередь на разработчиках и их зарплатах, потому что целью будет стоять не «сделать очень хороший продукт», а «сделать продукт, хоть как-то соответствующий формальным требованиям».
И даже когда контора выходит на свободный рынок и у нее появляются конкуренты, мышление руководства и отношение его к работникам перестраивается далеко не всегда с соответствующими печальными последствиями. Понятие «совковый менеджмент», увы, взялось из реальной жизни.
Иногда бывает наоборот, что в какой-нибудь госкомпании даже рядовые сотрудники могут получать весьма хорошие по местным меркам деньги (например, в нефтегазовом секторе). Но, увы, «совковый менеджмент» никуда не девается, и часто можно наткнуться на административный маразм, вида «рабочий день строго с 8 утра, за опоздание на 1 минуту лишение премии», бесконечное написание служебок и перекладывание ответственности, и отношение вида «платим много, поэтому извольте работать еще больше, переработки оплачивать не будем» и «если не нравится — никто не держит».
Если вы программист, то не рассматривайте позиции в конторах, для которых разработка ПО не является видом деятельности, приносящим основной доход
… в том числе всякие НИИ, КБ, инжиниринговые конторы и заводы, торговые компании, магазины, и т.д
В одном сообществе даже есть в ходу шутка
«Если ваша должность называется не «Senior Developer» или «Team Lead», а «Инженер 1-ой категории» или «Ведущий специалист отдела информационных технологий», то значит вы где-то свернули не туда«Да, это шутка, но в каждой шутке есть доля правды.
Критерий «приносящий основной доход» я определяю довольно просто:
это или
- компания реально зарабатывает большую часть своей выручки на продаже своих IT-продуктов или сервисов, либо занимается разработкой всего этого на заказ
или же
- разрабатываемое ПО является одной из важных или даже важнейших вещей, определяющих потребительские свойства продукта или услуги.
Почему такой совет?
Во-первых, прочтите отличную публикацию «13 сюрпризов неайтишной компании», там реально хорошо подмечены многие отличия не-айти компаний. И если вы работали в IT-компаниях, но всегда наблюдали там пункты с 5-го по 13-ый, описанные в той статье, то это уже повод задуматься и повнимательнее изучить окружающий мир и рынок труда.
В «чисто IT» компаниях люди, имеющие отношение непосредственно к разработке ПО (программисты, тестировщики, аналитики, UI/UX-дизайнеры, девопсы, и т.д.) — основная движущая сила. Именно их работа приносит бизнесу доход. А теперь посмотрим на какую-нибудь «не-IT-компанию». Основные деньги они получают от перепродажи чего-либо, или от оказания каких-нибудь «не IT услуг», или от производства «не IT продуктов». В этой компании IT-шники — обслуживающий персонал, да, они нужны чтобы была возможность работать эффективнее (например, за счет автоматизации, автоматического учета, принятия заказов онлайн, и т.д.), но они не приносят прямого дохода. И поэтому отношение недальновидного руководства к ним скорее всего будет именно такое — как к чему-то, на что приходится тратить деньги.
Об этом очень хорошо сказано в упомянутой выше статье:
Концептуальное отличие айтишной конторы от неайтишной заключается, разумеется, в том, что в айтишной конторе ты – будучи программистом, тестировщиком, аналитиком, IT-менеджером, наконец – являешься частью доходной части бюджета (ну, по большей части), а в неайтишной – только лишь расходной его статьёй, причём зачастую одной из самых заметных. Соответственно, к внутренним айтишникам выстраивается соответствующее отношение – как к некоторым нахлебникам, которых мы, бизнес, вынуждены оплачивать из своего кармана, а они ещё и осмеливаются чего-то там себе хотеть.
Часто руководство такой компании вообще ничего не понимает в IT и разработке ПО, и из-за этого, во-первых, его сложно убеждать в необходимости чего-либо, а во-вторых, самое по себе «создание IT-отдела» может произойти не самым лучшим образом: на должность руководителя этого отдела берется человек, скиллы которого руководители адекватно проверить не могут. Если с ним повезло, то дальше он наберет хорошую команду и задаст правильный вектор развития. А вот если с ним не повезло, то может случиться так, что команда вроде что-то разрабатывает, и продукт даже вроде работает, но по факту варится в собственном соку в изоляции от окружающего мира, особо не саморазвивается, и действительно знающие и талантливые люди там не задерживаются. Увы, подобное я наблюдал своими глазами.
Как выявить такое заранее, на этапе собеседования? Существует так называемый Тест Джоэла, однако надо признать, что он очень поверхностный, и на самом деле факторов для проверки и тревожных звоночков может быть гораздо больше, но это уже тема отдельной статьи.
Отдельных слов хочется сказать про различные инжиниринговые компании, производственные объединения, научно-исследовательствие организации, конструкторские бюро, проектные институты и все в этом роде. Тут причин «почему не стоит туда идти, ну или хотя бы очень хорошо перед этим подумать» по моему опыту несколько.
Во-первых, опять же, там часто царит дремучесть и технологическое отставание. Почему — вопрос отдельный и потянет на хорошую такую статью, но на эту тему люди регулярно высказываются даже тут, на Хабре:
«Открою ужасающий секрет — embedded-софт тестируют как минимум на порядок меньше и хуже, чем любой зачуханный веб-сервер. И пишут его зачастую динозавры, отладчик — это для слабаков, а «если код компилируется, значит, все работает».
… Я не шучу, к сожалению». [из комментариев]
«Ничего удивительного. По моим наблюдениям, многие «железячники» считают, что производство устройства — это искусство, подвластное избранным, а вот написать к нему код он сможет сам, так, на коленке. Это ж вообще мелочь. Получается работающий тихий ужас. Они очень обижаются, когда им на пальцах объясняют, почему их код дурно пахнет, потому что… ну… они ж железку сделали, че тут, программа какая-то». [из комментариев]
«По своему опыту научной работы могу сказать, что когда над задачей работает от одного до нескольких человек, он повторном использовании кода речи не идёт. Пишут как получится, используются минимальные возможности языка, о системах контроля версий большинство не знает». [из комментариев]Во вторых, всё опять же часто упирается в менеджмент и сложившиеся традиции:
«Разработка аппаратуры по статистике, это чаще всего, само-окупаемое, само-финансируемое российское предприятие, с российскими же заказчиками, российским рынком сбыта и российским начальником — бывшим инженером возрастом 50+, ранее также работавшим за копейки. Поэтому мысль у него такая: «Я всю жизнь пахал, чтобы я какому-то молодому платил? Перебьется!» Таким образом, сильно больших денег у подобных предприятий нет, а если и есть, то вкладываться они будут отнюдь не в вашу зарплату». [из комментариев]Ну и в-третьих… В таких местах часто не разделяют программистов и других инженеров. Да, безусловно, программиста тоже можно считать инженером, и даже само понятие «software engineering» как бы намекает. И в том и в том случае люди занимаются интеллектуальным трудом и разработкой новых сущностей, и в том и в том случае требуются определенные знания, умения и склад ума.
Но… нюанс в том, что в нынешней ситуации, сложившейся на рынке труда, эти категории очень по-разному оплачиваются. Я не говорю что так и должно быть, я сам считаю что это неправильно, но, увы, на текущий момент это факт: зарплаты «программистов» и других «инженеров» могут различаться в полтора-два раза, а иногда и больше.
И во многих инженерных и околоинженерных предприятиях руководство точно так же не понимает, «почему это мы этим должны платить в два раза больше», а иногда и «да что там такого, наш Вася-электронщик ничуть не хуже код напишет» (а Вася-то и не против, хоть он и не разработчик ПО).
В какой-то из дискуссий на тему «путь программиста сложен» с уважаемым Jef239 как-то раз от него в комментариях прозвучала фраза типа «Ну а что такого, мы платим своим людям выше средней зарплаты инженера в Петербурге», хотя, по-хорошему, если компания ценит и уважает своих сотрудников, следовало бы платить «… выше средней зарплаты программиста в Петербурге».
Весьма показательная картинка, которая несколько лет назад ходила по всяким АСУТПшным пабликам в соцсетях, говорит сама за себяНе работайте с военными
Этот вывод я для себя сделал еще будучи студентом военной кафедры в вузе 🙂
На самом деле, лично я сам в околовоенных конторах и частных фирмах заказчиками из этой области не работал, но работали мои друзья, и по их рассказам, многочисленный фольклор типа «Есть три способа сделать что-либо — правильно, неправильно, и по-армейски» и «Я сейчас соберу узкий круг ограниченных лиц, опираясь на которых разберусь как следует и накажу кого попало!» появился далеко не на пустом месте.
В моем же случае, собеседования в подобные фирмы обычно заканчивались на необходимости попадания под форму секретности. Причем интервьюеры клятвенно утверждали что «третья форма — чистая формальность, она ничего не значит, про нее даже не спрашивают, выезжать за границу сможешь вообще без проблем», но на вопросы «Если она ничего не значит, то зачем она тогда существует и зачем ее подписывать?» и «А какие гарантии, что учитывая происходящий вокруг маразм, в один прекрасный день законодательство не поменяется и все не станет по-другому?» ответов получено так и не было.
Не работайте «мастером на все руки»
… это типа когда вы одновременно и программист, и админ, и монтажник сетей, и закупщик железа, и заправщик картриджей, и DBA, и техподдержка, и телефонист. Если вы на своем месте занимаетесь сразу «всем и сразу», то скорее всего вы не будете являться экспертом каждой из этих областей, а значит вас при желании можно заменить на нескольких студентов или джунов, которых даже за небольшие деньги найти не проблема. Что делать? Выбрать узкую специализацию и развиваться в ее сторону.
Начните изучать более актуальный стек
… если работаете с legacy-инструментами. Бывает, например, что человек пишет на каком-нибудь Delphi 7 или древних версиях PHP с не менее древними фреймворками. Я не утверждаю, что это плохо по дефолту, все-таки принцип «работает — не трогай» никто не отменял, но когда древний стек используется не только для поддержки старых, но и для разработки новых модулей и компонентов, это заставляет задуматься о квалификации и мотивации команды разработчиков, и в том, а нужны ли компании вообще хорошие кадры.
Иногда бывает обратная ситуация: вы поддерживаете какой-то легаси проект на какой-то легаси-технологии, и получаете вполне неплохо (возможно потому что никто другой в это болото лезть не хочет), но когда по каким-то причинам проект или фирма умирает, есть большой риск оказаться у разбитого корыта, и возвращение в суровую реальность может оказаться очень некомфортным.
Не работайте в маленьких и средних компаниях, работающих на внутренний (российский) рынок
Тут всё довольно просто. Компании, работающие на международный рынок, имеют приток денег в валюте, и с учетом нынешних обменных курсов, могут позволить себе платить своим разработчикам хорошие деньги. Компании, работающие на внутренний рынок, вынуждены их догонять, и если большие и богатые компании могут себе позволить платить конкурентоспособные зарплаты чтобы не растерять хороших специалистов, мелкие и средние, к сожалению, не всегда имеют такую возможность.
Учите английский язык. Даже если он сейчас вам особо не нужен
Английский язык для современного IT-специалиста — штука очень полезная: подавляющее число документации, manpages, release notes, описаний проектов, и всего-всего-всего пишется на английском языке, топовые книги и научные работы публикуются на английском языке (и далеко не всегда и не сразу переводятся на русский, а уж тем более далеко не всегда корректно переводятся), конференции мирового уровня проходят на английском языке, аудитория международных интернет-сообществ разработчиков в сотни раз больше русскоязычной, и т.д.
Я же обращу ваше внимание на другой факт, есть огромное количество компаний с крутыми задачами и очень вкусными зарплатами, куда без знания английского вас даже рассматривать не будут. Это и аутсорс-компании, и интеграторы, и филиалы международных компаний, и просто фирмы, работающие на международный рынок. Во многих из них приходится решать задачи в одной команде с иноязычными коллегами из других стран и часто даже взаимодействовать с заказчиками и их специалистами напрямую. Таким образом, не имея хорошего английского языка, вы сразу же лишаете себя доступа на существенную часть рынка труда, причем ту часть, в которой часто можно найти весьма интересные проекты за очень хорошие деньги.
Еще владение языком дает возможность работы на международных фриланс-биржах и удалённой работы на зарубежные фирмы. Ну и возможность завести трактор и релоцироваться в другую страну, особенно учитывая, что в наше время этим начали заниматься даже люди, раньше совершенно не думавшие о таком.
Не бойтесь «галер»
Иногда можно встретить мнения, что в так называемые «галеры» (компании, занимающиеся консалтингом, аутсорс-разработкой, или продающие компетенции своих специалистов как аутстафф) — это отстой, а вот продуктовые фирмы — это круто.
Я с этим мнением не то чтобы согласен. Да, на «галерах» есть своя специфика, как в отношении менеджмента, так и в отношении устройства рабочих процессов, кому-то она приходится по душе, кому-то совсем нет (а у знать можно только попробовав). И, опять же, галера галере рознь (не говоря уж о том, что довольно сильные различия могут быть даже в разных проектах в рамках одной галеры), среди них бывают очень даже приличные и адекватные места. По крайней мере две компании, где я работал довольно долго, были этими самыми «галерами», и, могу сказать, что условия работы, уровень з/п и отношение к работникам там было очень даже хорошее (а уж с чем сравнить мне есть), а вокруг были весьма приятные и квалифицированные люди.
Не верьте мифам
Не думайте, что если у вас на нынешнем месте все не очень, то и везде так
Наверное, психологи когда-нибудь исследует этот феномен и дадут ему какое-нибудь название, а пока нужно признать, что этот феномен действительно существует: иногда люди работают на своем месте, которым не очень-то и довольны, но считают что «да наверное везде так» и «что шило на мыло менять». Скажу просто: нет, не везде. А как в этом убедиться, будет в одном из следущих пунктов.
Не думайте, что там, где хорошо платят, будет скучно и не интересно
Корни этого мифа растут из того факта, что в некоторых скучных и неинтересных местах действительно платят очень и очень много. Например, когда нужно поддерживать и развивать какой-нибудь монструкозный проект времен динозавров, состоящий из тонн легаси и костылей, написанный на каких-то древних технологиях, и с не самой вдохновляющей предметной областью. Да, в таких местах бизнес вынужден предлагать разработчикам очень много, потому что иначе этим просто никто заниматься не будет.
Иногда бывает наоборот, что в местах с очень интересными проектами и перспективными разработками руководство недоплачивает сотрудникам, потому что к ним и так идет хороший поток «идейных» и «увлеченных».
Но и то и то — это две крайности, в которые впадать не стоит. А найти место, где будет соблюдаться баланс — и задачи, не вызывающие тоски и уныния, а наоборот интересные и вдохновляющие, и зарплата соответствующая, а часто даже выше средней по рынку — очень даже реально, таких мест много, главное захотеть их искать 🙂
А третий миф я упомяну немного позже.
Ходите на собеседования
… просто так, чтобы получить опыт прохождения собеседований, узнать требования и уровни зарплат в разных местах. Никто вас не побьет камнями, если вам в итоге сделают оффер, а вы от него вежливо откажетесь. Зато вы приобретете опыт прохождения собеседований (это важно, да), который вам может в один момент очень хорошо пригодиться, послушаете чем занимаются другие компании в вашем городе, узнаете, какие знания и умения ждут наниматели от кандидатов, и самое главное — какие деньги они готовы за это платить. Не стесняйтесь задавать вопросы про устройство процессов внутри команды и компании в целом, расспрашивайте про условия работы, попросите показать вам офис и рабочие места.
Изучите рынок и знайте свою цену
Изучите Хедхантер, Мойкруг и подобные ресурсы, чтобы составить примерное представление о том, сколько на самом деле стоит то, что вы умеете и делаете.
Не пугайтесь больших цифр в пункте с предлагаемыми зарплатами, даже если выходит так, что за то же самое, чем вы сейчас занимаетесь, какая-то компания обещает вам платить гораздо больше, чем есть у вас сейчас. Нужно иметь в виду, что IT-это одна из немногих отраслей у нас, где сложилось так, что если в описании вакансии компания пишет, что готова платить специалисту 100-150-200 тысяч, то скорее всего она действительно готова и будет.
Не недооценивайте себя
См. «Синдром самозванца», которому на Хабре здесь уже не раз посвящали статьи. Не надо думать, что вы чем-то хуже, менее квалифицированнее или еще в чем-то уступаете другим соискателям. И уж тем более не надо основываясь на этих фактах просить зарплату ниже среднерыночной — наоборот, _всегда_ закладывайте сумму хоть немного выше средней, но при этом явно давайте понять, что готовы её обсуждать.
Не стесняйтесь вести переговоры с руководством о прибавке
Не надо сидеть тихо и ждать, что кому-то сверху придет озарение и вам поднимут зарплату сами по себе. Может придет озарение, а может не придет.
Тут всё очень просто: если считаете, что вам мало платят, скажите об этом руководству. Причины «почему я считаю, что мне должны платить больше», можно даже особо не изобретать, они могут быть любыми от «за эти N лет работы я вырос как специалист и теперь могу делать более сложные задачи и работать эффективнее», до «в других компаниях за эту работу предлагают столько-то».
В моём случае это срабатывало всегда. Иногда сразу же, иногда через какое-то время. А вот когда один мой коллега, устав от безденежья, нашел новую работу и положил заявление на стол, на той стороне стола очень сильно удивились и спросили «А что ж ты по поводу прибавки к нам не подходил-то?», и долго уговаривали остаться, предлагая даже еще большую сумму, чем в новом оффере.
Переезжайте или переходите на удаленку
Если же все упирается в малое количество вакансий в городе (иными словами, если «других мест», где требуются люди с вашей квалификацией особо-то и нет, или туда не так-то просто попасть)… То повышайте скилл и переезжайте в другой город, если есть возможность. Я лично знаю людей, кто из миллионников переезжал в СПб и Мск сразу с двухкратным повышением дохода, причем даже при переходе на более низкую позицию.И вот он, третий миф!И вот он, третий миф: «в столицах платят больше, но и тратить приходится гораздо больше, поэтому выгоды никакой». Это действительно миф, мало имеющий отношение к реальности, прочитайте комментарии к этой вот статье, там есть много мнений и историй на эту тему.
Изучите рынок труда больших городов, поищите компании, предлагающие релокационный пакет.
Либо, если вы уже сложившийся и опытный специалист, попробуйте удаленную работу. Этот вариант требует определенных навыков и хорошей самодисциплины, но для вас он может оказаться весьма подходящим и выгодным.
На этом пока всё. Еще раз хочу сказать — это лично моё мнение и мой опыт, который, само собой, не является истиной в последней инстанции и может не совпадать с вашим.
Материалы по теме:
— 13 сюрпризов неайтишной компании
— Тест Джоэла
— Не путайте разработку ПО и программирование
Как найти свою первую работу программистом? От резюме до испытательного срока / Mail.ru Group corporate blog / Habr
Все знают, что сейчас программирование — это супервостребованная и супероплачиваемая профессия. Но немногие знают, что вакансий для начинающих очень мало. Все работодатели хотят, чтобы к ним пришёл человек, который уже что-то умеет. Напишет код, который не надо выкидывать. Джуниорских вакансий (не требующих опыта работы) мало, и конкуренция здесь очень большая. С одной стороны, существует огромная потребность в программистах. С другой — в начале карьеры вы можете столкнуться со сложностями. Работодатели обращают внимание в первую очередь на тех, у кого в резюме уже есть строчка о прошлом месте работы. Если у вас её нет, будет сложно.
Из собственного опыта скажу, что я окончил хороший университет и ожидал, что меня сразу завалят предложениями о работе. Но моё резюме вызывало минимальный интерес. Я получил два приглашения на собеседования, и никто меня не отрывал с руками.
Итак, как же новичку получить первую работу?
Оно должно как-то называться. Существуют два варианта.
- Допустим, вы программировали на разных языках. В школе наверняка писали на Pascal, а потом что-то делали на C++. Если вы постарше, то, возможно, знакомы с Delphi. Поэтому в названии резюме можно указать все языки, на которых вы писали. Авось какой-то заинтересует потенциального работодателя. Например, так: «Программист: delphi, python, php, html, java, c#, ruby, scala».
- Можно указать, что вы специализируетесь на чём-то одном, например на Python. Обычно, если в названии резюме перечислена куча языков, то понятно, что вы не умеете ничего. Всего коснулись поверхностно. В глазах работодателя вы будете человеком-оркестром, который пришёл на прослушивание в консерваторию. Не надо так делать. Зачёркиваем длинную простыню и оставляем просто «Программист на Python». Повышайте свою самооценку, не акцентируйте в резюме неуверенность в себе, связанную с нехваткой опыта.
Из этого следует правило: выберите один язык программирования и специализируйтесь на нём. В университете я писал на С++, потом понял, что связанные с ним вакансии меня не очень прельщают, поэтому надо двигаться в другом направлении. Я выбрал для себя C# и Java. Мне они оба очень понравились, и я долго не мог определиться, какой мне больше по душе: тут есть такая-то фича, здесь такая, казалось бы, одинаковые. Я купил две здоровенные толстые книжки — по C# Эндрю Троелсена и по Java Брюса Эккеля. На каждую я потратил по две недели и начал откликаться на вакансии по обоим языкам. Думал, куда раньше возьмут — в тот язык и буду углубляться. Сейчас я понимаю, что переложил ответственность за выбор языка с себя на мироздание, на судьбу, на работодателя.
Приходя на каждое из собеседований, я чувствовал себя неуверенно. На обоих языках я писал одинаково слабо. Не надо было так делать. Надо было принять волевое решение. Не можете выбрать — киньте монетку. Главное, определиться с каким-то одним языком.
Какой язык лучше всего указать в резюме? Языков много, но они очень часто друг друга взаимозаменяют. Не все из них живые. Основное правило — выбирайте популярные языки, не надо брать экзотику. Не нужно слушать, что какой-то Haskel очень крутой, классный, умеет делать всё и вся, а функциональные языки программирования такие волшебные… Каждый хвалит свой язык.
Работодателям нужна не экзотика, а те технологии, по которым много специалистов. Решайте сами, нужно ли учить язык, по которому вы потом не сможете найти работу?
Так что при выборе языка обращайте внимание:
- на его популярность;
- на решение задач, которые вам интересны;
- на простоту освоения: на начальном этапе лучше выбрать попроще.
Сейчас по количеству вакансий наиболее востребованы следующие языки: Javascript, PHP, Java, C++, Python, C#, Ruby, Swift, Objective-C. Выбрав какой-то язык, скорее всего, вы на нём и остановитесь. Может быть, через два года разочаруетесь или решите перепрофилироваться. Но это будет немножко больно. С другой стороны, свой опыт вы сможете легко применить в другой сфере деятельности.
- Если речь пойдёт про frontend — то есть разработку визуальной части сайтов, — то здесь всё просто, нужны три языка: HTML, CSS, JavaScript.
- А вот для разработки серверной части вариантов много. Самый популярный язык — РНР. Мне на каждом докладе говорят, что про РНР плохо отзываются, какой-то он не такой. Многие высказывают гипотезы, что он умрёт. Но ничего подобного, половина сайтов написана на РНР, половина вакансий — на РНР, ВКонтакте — на РНР, как и многие другие крупнейшие проекты. Никуда язык не денется. Если в нём будут критические проблемы, то их просто исправят. Появился Ruby on Rails, классный движок — ну, ничего страшного, на РНР стали появляться фреймворки, в которые внедрили аналогичные фичи. Всё хорошо. Отдельно скажу, что Python многих прельщает простотой и универсальностью.
- С точки зрения мобильной разработки есть всего два варианта. Если хотите писать под Android — это Java. Если под iOS — Swift или Objective-C. И то и другое — хорошие решения.
- Разработка под desktop и серверы: Python, Javaб С++ или C#. Здесь есть простор для метаний. Python попроще, чем остальные. На Java можно писать под Android. На C# — углубляться в разработку игр и сайтов. C++ больше подходит для тех задач, где требуется высокая скорость работы. В остальном у них возможности совпадают, просто на Java сайты пишут реже.
Возникает резонный вопрос: если начинаешь с нуля, то имеет ли смысл изучать сразу новый язык? Например, в Apple перешли с Objectivе-C на Swift, потом появился Swift 2 и 3. Обычно я консервативен и считаю, что новое не всегда оправданно и действительно выстреливает. Появляется новый язык, по нему нет вакансий, но где гарантия, что они появятся потом? Может, на нём так и напишут с пяток проектов.
Что касается Objectivе-С и Swift, я давно присматриваю за этими языками, и буквально на днях количество вакансий на Swift сравнялось с Objective-C. Мое мнение, это очень серьезный показатель, что Swift будет только набирать обороты и со временем может вытеснить Objective-C.
Итак, мы выбрали язык и указали его в резюме. Далее перечисляем технологии, которые мы знаем. Давайте снова разбираться, что круче. Допустим, вы программируете на PHP. Имеет ли смысл писать, что вы знаете С, С++, Pascal, C# и так далее? Не надо перечислять все технологии, которые напрямую не относятся к вашей компетенции. Надо назвать вакансию «программист: РНР». В таком случае работодателю неинтересно, что вы когда-то писали на С и Visual Basic. Весь этот длинный хвост можете не указывать.
Есть и другой вариант. Допустим, я программист на РНР, но знаю все эти технологии, потому что они относятся к веб-разработке: и РНР, и YII2, и HTML, разные фреймворки. Если будете искать вакансию веб-разработчика, то наверняка увидите здоровенную простыню дополнительных требований с кучей умных слов. И многие этого пугаются, особенно в веб-разработке, страшно, что надо столько знать… К этому надо стремиться: знать Webpack, работать с разными БД и так далее.
Многие для повышения авторитета сразу пишут, что я и это знаю, и это примерно знаю, но я новичок и готов получать пока 15—30 тысяч, и опыта работы у меня нет. Какое будет впечатление у работодателя? То же самое: человек-оркестр.
Есть и другая проблема. Допустим, работодатель поверит, что вы всё это знаете. Он же на собеседование придёт с этим списком, ткнёт в любую технологию и скажет: «Теперь мы говорим про React, что ты знаешь про него? А это что? А это? Ясно, React мы не знаем».
Вычёркиваем.
«Хорошо, поговорим про MySQL, напиши мне транзакцию, которая делает то-то и то-то».
«Ну, я в MySQL установил только среду разработки, два select-а сделал…»
MySQL тоже вычеркиваем. Всё остальное он даже смотреть не будет. Работодателю уже будет неинтересно, что вы полгода жарили РНР: он поймал вас на вранье. Так что зачеркиваем всё перечисленное.
От джуниора никто не ожидает, что он сразу полетит в космос. Работодатель, как правило, адекватный человек. И он понимает, что джуниор будет знать один язык программирования и в лучшем случае поверхностно разбираться во фреймворках. Работодателя это устраивает, потому что ему нужен человек, который заберёт рутинные операции у ведущих разработчиков. Поэтому пишите о своих знаниях максимально честно.
Более того, даже не пытайтесь ознакомиться со всеми этими многочисленными технологиями. Если вы РНР-программист — так и напишите, что знаете РНР и немного HTML и CSS для верстки. Ещё знакомы с одним фреймворком — всё, работодателя это устроит. Он не будет вас гонять по YII, поскольку вы и не указали, что знаете его. Работодатель понимает, что вас можно гонять по РНР.
Если так получилось, что вы уже много чего потрогали, то честно напишите: поверхностное знакомство с такими-то технологиями. Может, для работодателя это будет плюсом.
Должно ли в вашем резюме быть подтверждение того, что вы окончили какой-то университет, получили какие-то сертификаты, прошли курсы и так далее? Это хорошая вещь при первичном отборе, на которую обращают внимание многие кадровики. Им сложно ориентироваться по другим критериям. Поэтому они смотрят на опыт работы и на образование, чтобы сделать какой-то вывод.
Когда я набирал в команду джуниоров по C#, мы опубликовали вакансию и в течение двух-трёх недель получили 50 откликов. У нас не было кадровика, поэтому мы пошли программерским путём: всем кандидатам выслали тестовое задание. Кто его сделал, проходил дальше. И мне как работодателю не были интересны сертификаты и диплом. Я даже на резюме не смотрел, пока человек не присылал мне решение тестового задания. Но для кадровика это может быть важно.
Очень важная вещь на этапе отбора. Если у вас есть портфолио, то работодатель-программист сможет понять, в состоянии ли вы решить задачу аналогичную той, которую вы уже решали.
Что можно написать в своём портфолио? Если вы хотите разрабатывать сайты, то просто придумайте себе задачку и решите её за необходимое время. Сделайте небольшой сайт и выложите его, лучше всего на Github. И напишите: я создал небольшой интернет-магазин, использовал такие-то технологии, вот код. Для работодателя это будет показателем, что вы ещё и про Git знаете. Он понимает: если я возьму этого новичка на работу, он мне за два дня сделает примерно то же самое, с чем сам разбирался месяц. И не надо будет ему платить за то, чтобы он выучил, что такое Bootstrap, познакомился со всякими нужными штуками. Он сам уже это изучил и теперь в состоянии решить задачу за пару дней. Поэтому не пренебрегайте портфолио. Вам оно очень сильно поможет.
Если он у вас есть, то опишите его. После этого вас будут отрывать с руками. После окончания университета я получил два отклика на своё резюме, а через год просто не знал, как его спрятать. Потому что всем нужны программисты, и кадровики видят: этого парня вытерпели год и не уволили, он не облажался, значит, толковый человек. Если я его возьму к себе на работу, то, скорее всего, я тоже смогу терпеть его как минимум год, его код не надо будет выбрасывать.
Резюме готово, что делать дальше? Прежде чем откликаться на вакансии, надо немного психологически настроиться, чтобы процесс пошёл правильно. Представьте свой идеальный рабочий день, что бы вам хотелось получить в итоге? Иначе мы просто будем белкой в колесе, станем бежать за какой-то мечтой, каким-то счастьем. Представьте, как выглядит ваш офис, ваши коллеги, какое у вас самоощущение, какими проектами вы занимаетесь. Просто настройтесь на то, какие эмоции вы будете испытывать, когда станете ходить на работу. Сделайте запрос мирозданию: «Хочу, чтобы было так, так и так». И успокойтесь, всё у вас будет хорошо.
Расскажу о том, как я устроился в компанию GeekBrains. В какой-то момент мне надоело программировать. Это классное занятие, я пять лет ему отдал, но меня не очень удовлетворяли цели компании, в которой я работал. Я подумал, что мне было бы интересно открыть свою школу и учить людей. Дать им возможность получить новую специальность, новую профессию. Потом я увидел вакансию и начал преподавать в GeekBrains, совмещая это с основной работой. Затем я просто попросился к ним на работу.
Так выглядел мой разговор с генеральным директором GeekBrains.
Гендир: «А что ты умеешь делать? Ты на C# программируешь, а мне нужен Ruby».
Я: «Я не хочу программировать, я умею то, умею сё».
Через две недели я вышел на работу.
Наверно, вы представляете: «Я найду работу так: выложу резюме, на него откликнутся, я приду на собеседование, и всё получится». Но работа может найти вас совершенно другим способом. Например, вы зарегистрируетесь на фрилансерском сайте, выполните какой-то заказ, и у вас появятся постоянные клиенты. Или друг пригласит вас к себе работать. Не зацикливайтесь на способе достижения цели. Просто будьте открыты к предложениям, откуда бы они к вам ни пришли.
Не расстраивайтесь, если вас не позвали на собеседование после того, как вы откликнулись на вакансию. На начальных позициях предложение сильно превышает спрос. Я сам допускал эту ошибку, находил одно предложение о работе и думал: блин, мне это подходит, тут и компания недалеко от моего метро, и требования несложные. Мне кажется, что я им классно подхожу, а они, заразы, даже не посмотрели моё резюме. Ну что такое? Наверное, во мне что-то не так. Или они прочитали, но ничего не написали. Всё, резюме плохое, надо дорабатывать портфолио, что-то ещё делать. А на самом деле, может, им просто некогда. Они уже давно взяли кого-то на работу и просто не стали снимать вакансию, потому что у новичка ещё не закончился испытательный срок.
Не парьтесь, ребята. Отправьте 100, 200, 300 откликов, сколько найдёте. И законом больших чисел вы сообщите мирозданию, что реально хотите работу. Вас пригласят на пять собеседований, на одном из них вы устроитесь на работу — всё. Если вам посылают тестовое задание, не пренебрегайте им. По моему опыту, 90 % кандидатов отваливаются, когда получают тестовое задание.
На собеседовании очень важно настроение. Настраивайтесь, что это не вас тут оценивают, а вы пришли понять, подходит ли вам компания, нравится ли вам здесь работать, хороший ли коллектив — и так далее. В противном случае вы будете считать, что вас экзаменуют, и сидеть с трясущимися коленками. Вы — эксперт, специалист. Начинающий, но специалист. И вы тоже собеседуете работодателя: интересен ли проект, какие у него перспективы, как выглядит рабочее место? Вы чуть-чуть меняетесь местами, и работодатель думает: человек себя ценит, надо теперь мне его убедить, что моя компания достойна его присутствия. Это тоже важный фактор.
Не переживайте всё время о том, что вас выгонят сразу после испытательного срока. По моему опыту, испытательный срок — это символическая вещь, подстраховка для работодателя, чтобы можно было легко уволить накосячившего новичка. В подавляющем большинстве случаев к вам не применят никаких санкций. Работодатель обычно просто забывает об испытательном сроке. Он по таймеру посмотрел — прошло три месяца, можно человека оформить.
Если вас взяли на испытательный срок, то не надо всех заваливать вопросами, иначе подумают, что вы дурак. Но не надо кидаться и в другую крайность, когда начинающему разработчику дают задачку, и он уходит в себя на три дня, потому что сам пытается во всём разобраться. А работодатель думает: неужели вам мало трёх дней на такую простую вещь? Так что не стесняйтесь задавать вопросы. Если вы больше часа занимаетесь какой-то задачкой и у вас не получается, подойдите к старшему, спросите, он вам поможет, всё будет хорошо.
Друзья, и напоследок напутствие: не бойтесь экспериментировать. Ищите себя, находите то, чем вам нравится заниматься. Нет ничего хуже, чем десять лет просидеть на нелюбимой работе из страха, что не сможете устроиться на другую. Если вам нравится программировать — начинайте обучаться этому ремеслу, совмещайте учёбу с основной работой. Если хотите — приходите к нам в GeekBrains, и мы вам обязательно в этом поможем. Удачи вам, и до новых встреч!
«Часто на удалёнке платят больше». Где и как белорусскому программисту искать удалённую работу | Статья
Веб-программист Евгений Миротин, около 5 лет проработавший удалённо, рассказал dev.by о том, как находить интересные высокооплачиваемые проекты на условиях удалённого сотрудничества и что самое главное для развития программиста.
Читать далее…
Свою первую работу в ИТ Евгений Миротин получил, когда учился на втором курсе университета в 2004 году. Начинал как технический писатель, информационный архитектор, потом был менеджером проектов и бизнес-аналитиком, а с 2011 года — веб-программист. Сейчас он Team Lead в SkyWind Group. До этого работал в компаниях Red Graphic, EPAM и Oxagile, британско-американском стартапе resin.io, а также брал проекты как фрилансер.
— Первые удалённые проекты, связанные с программированием и управлением командами, у меня появились, ещё когда процветала социальная сеть МойКруг. Через неё меня и находили. Потом уже – через LinkedIn.
В 2011 году мне предложили сеньорскую позицию программиста в EPAM, и примерно полтора года я проработал в офисе. Потом получил приглашение удалённо работать в одном российском проекте, который просуществовал не так долго, и мне пришлось впервые самому искать работу. Skill set у меня был актуальный, качество кода высокое, но опыта поиска работы не было, потому что до этого компании меня всегда находили сами.
Понимал, что больше всего предложений в США, но смущала перспектива работать по ночам, а днём спать, поэтому решил искать западноевропейские компании. На сайте indeed.com обнаружил объявление о том, что английский стартап ищет JS-программиста. Меня очень привлекла эта вакансия, потому что предлагали проект, где можно было работать с Node.js, да ещё и связанный с IoT. И всё это удалённо с хорошим уровнем оплаты.
Я откликнулся и решил переделать своё CV таким образом, чтобы оно подходило к сфере IoT. Сделал сайт-визитку, стилизованную под LCD-экран, и отправил. Через две недели я уже работал там.
1. Профиль на LinkedIn обязательно должен содержать:
- ключевые скиллы;
- проекты, обязательно с названиями компаний;
- ссылка на github с активными репозиториями, в которых есть примеры кода, даже если это учебные проекты;
- кастомное CV в виде ссылки на сайт-визитку или свёрстанного одностраничного pdf-файла.
2. Завести профиль на stackoverflow.com, который известен как сайт с самой большой базой вопросов и ответов программистов. Здесь же есть и вакансии.
3. Искать вакансии на indeed.com. Почти во всех объявлениях работодатель сразу обозначает уровень оплаты.
4. Для тех, кому интересны стартапы, советую зарегистрироваться и регулярно обновлять профиль на angel.co, где сконцентрирована информация по многим европейским и американским стартапам.
5. Если рассматривается вариант фриланса, одна из самых тщательно модерируемых и серьёзных бирж — toptal.com. Здесь предусмотрено четырёхуровневое собеседование для кандидатов с обязательным выполнением тестового задания и трёх задач +/- олимпиадного типа, а также устной беседы. Жёсткая модерация есть и для заказчиков, поэтому попадают только адекватные проекты. Плюс сама фриланс-биржа обеспечивает все процессы оплаты и несёт ответственность своими средствами.
Для небольшого проекта с хорошим разделением обязанностей самое главное — уровень специалистов и их способность автономно работать, адекватно коммуницировать с командой и апдейтить её. Руководству надо уметь грамотно выстроить бизнес-процессы и подбирать людей с соответствующим уровнем самоорганизации.
В стартапе, где я работал, было 50 человек, из них 40 — удалённо. В среднем достаточно было одного регулярного часового митинга по Skype в рамках своей команды в неделю и одного часового созвона для всей команды с обсуждением свежих новостей и ключевых достижений. Плюс иногда спонтанные созвоны на несколько человек по актуальным вопросам.
Зачастую на удалёнке можно найти более высокооплачиваемые предложения. Арифметика простая: когда работаешь в офисе, над тобой несколько уровней менеджмента плюс прибыль компании, поэтому если человеко-час продаётся клиенту за условные 30-50 долларов, программист получит из них долларов 10-20. Если этот же программист находит удалённый проект, он может попросить 20-30 долларов. Выходит, что и ему больше перепадает, и клиент меньше платит.
Нередко в объявлениях о вакансиях указывают уровень оплаты. При этом совершенно нормально, если человек сам озвучит ожидаемую зарплату. Другое дело, надо понимать, что тестовое задание, которое дают на собеседованиях, чаще всего не оплачивается. Иногда, если это настоящий проект, могут оплатить при успешном и своевременном выполнении задания. Но это скорее исключение.
Был случай, когда мне во время собеседования на позицию бизнес-аналитика предложили расписать схему и все алгоритмы ухода в отпуск более чем ста сотрудников (и ещё одно задание примерно такого же объёма). То есть фактически составить детальный документ company policy, который потом можно использовать. Причём отметили, что на выполнение не должно уйти больше восьми часов. Я сказал, что восхищаюсь кандидатами, которые выполнят два таких задания максимум за восемь часов, и пожелал компании нанять кого-нибудь из них.
Удалённая работа имеет и свои недостатки: рабочий день размывается, бывает сложно остановиться и заставить себя не заглядывать в почту даже вечером. По возможности этому надо учиться и сдерживать себя, чтобы разумно распределять время на работу и другие дела.
Но с этими «проблемами» вы столкнётесь, когда уже станете частью команды. А для этого необходимо успешно пройти собеседование.
При первой же беседе или даже заранее по почте абсолютно нормально поинтересоваться, какая структура интервью, сколько сессий и часов, предусмотрено ли тестовое задание и будет ли это настоящий проект или упрощённая модель. Я, когда сам провожу собеседование с соискателями, всегда задаю теоретические вопросы и прошу примеры кода или предлагаю выполнить тестовое задание. Бывало, человек отказывается выполнять его, объясняет, что это отнимает много времени, и просит посмотреть код на github. Смотришь в репозиторий, а там ни одной нетривиальной строчки кода.
Кроме технической базы, не надо забывать и о soft skills. Их никто не меряет линейкой, но обращают внимание. Поэтому надо предупреждать об опозданиях, если такое случается, стараться опрятно одеваться, нормально себя вести и вежливо разговаривать.
Если собеседование прошло успешно, и вас взяли на работу, важно не забывать о необходимости постоянного развития. Решайте задачи со звёздочкой и следите за трендами в отрасли.
Лично я с детства занимался математикой, потом отучился на факультете прикладной математики БГУ. Вузовская учебная программа тогда, к сожалению, была очень далека от практических потребностей: общее понимание компьютерных систем давали, но никакой информации по техническим текстам, интерфейсам, бизнес-процессам в компании, психологии клиентов. Не было курсов по HTML, PHP, востребованным тогда .NET и Java.
Поскольку мне нравилось программировать, я самостоятельно выучил C#, потом — Perl, Python, JavaScript, HTML/CSS, OCaml.
Как получать и/или подтягивать знания самостоятельно? Вот несколько рекомендаций из личного опыта.
1. У каждого языка программирования есть свой сайт. Заходим туда, смотрим туториалы, разбираем кусочки кода и самое главное — пробуем применять знания на практике. Например, решили изучить Rust — попробуйте сразу написать генератор случайных чисел с высокой точностью и стохастичностью, проходящий все тесты. Возьмите готовый алгоритм из Википедии и реализуйте его. Или автоматизируйте какую-нибудь свою ежедневную рутину. Напишите трекер времени на React.js или напоминалку для iOS на Swift.
2. Важно читать актуальные статьи про общие подходы организации кода, нарабатывать свои шаблоны. Например, когда я понял, что мой практический скилл по JS сильно провисает по теории, я начал с классических текстов на сайте Дугласа Крокфорда.
3. Полезно фолловить аккаунты известных зарекомендовавших себя разработчиков, мониторить новые технологии и разбираться с различными фреймворками, находить их преимущества и отличия от других. Совсем не обязательно на каждом свежем фреймворке что-то написать, но если что-нибудь собирает кучу апов на HackerNews, уделите ему хотя бы минут 15, посмотрите, что же там такого привлекательного.
4. Очень помогают видеотуториалы. К примеру, на egghead.io собраны и систематизированы обучающие видео, продолжительностью до 15 минут. Захотел узнать о какой-то новой фиче – зашёл, потратил десять минут и готово. Видео объединены в тематические курсы. Много информации в свободном доступе, часть на условиях платной подписки.
Вот основные рекомендации.
1. Не игнорировать code review. Есть всемирно известные компании, которые не используют code review. Согласно их философии, это принижает разработчика. Но я с этим принципиально не согласен. Перед тем, как код появится в ветке репозитория и отправится на тестирование, он должен быть просмотрен и одобрен одним или несколькими коллегами. Проблем с реализацией такого подхода сейчас нет: в github и bitbucket есть удобные инструменты для review. Лучше потратить 15 минут, но сделать действительно аккуратный и красивый код. При этом разработчик получит много полезной информации, которую он не узнал бы без code review. Это очень важная практика. Например, в resin.io благодаря code review разработчики друг от друга узнавали о полезных модулях или функциях, о хелперах, которые могут быть в коде.
2. Читать исходники популярных проектов. Зайдите в туториалы по jQuery, Lodash или React. Найдите кусок кода, про который хочется спросить: как они это сделали? Залезьте в исходники и выясните это.
3. Регулярно ходить на собеседования, даже если не ищешь работу. Раньше я старался хотя бы 1-2 раза в год проходить собеседование, чтобы понять, подхожу ли я рынку, о чём спрашивают, сколько могут заплатить. Не зря Netflix рекомендует это собственным сотрудникам.
4. Посещать митапы, где люди с горящими глазами рассказывают о популярных технологиях.
Фото: из архива героя
12 шагов по поиску удаленной работы / Habr
Я могу работать с любым городом мира и откуда мне удобно. Теперь передо мной огромный выбор вакансий и я могу работать там, где мне нравится. Я без проблем сменил несколько мест работы, выбирая то, что мне по душе. На данный момент я уже несколько месяцев в медицинском стартапе и доволен всем: командой, и стеком технологий, и самим проектом.
К списку шагов, который я привел в этой статье, я шел долгих десять лет, читая статьи разных рекрутеров, рекомендации от Google, психологов и просто успешных людей. Свое резюме я заново переписывал раза четыре, а поправок и дополнений была просто тьма. У меня есть несколько резюме под разные вакансии: в каждом я делаю упор на то, что требуется в определенной вакансии. Еще есть два резюме на английском языке. Свои резюме я разместил на нескольких десятках сайтах с работой — как российских, так и зарубежных.
В последнее время меня часто просят помочь с составлением резюме и поиском работы родственники и друзья. Повторяя раз за разом одни рекомендации, я решил написать гайд и поделиться им с вами)
0. Написание каркаса резюме
Для того чтоб писать резюме, надо написать резюме 🙂 Это будут первые наброски вашего резюме. Для начала, укажите все свои места работы, какую должность занимали, какие задачи выполняли. Опишите ВСЕ действия, которые выполняли на каждом рабочем месте, даже если вам кажется это несущественным.
При устройстве на работу всегда следует фиксировать значимые события в вашей работе. Так как потом вы можете о них забыть, а в резюме они будут храниться на «черный день».Если вы в чем-то принимали участие — большое или маленькое — фиксируйте в резюме. Это может быть выполнение какого-то действия, (написание плагина для отправки почты\ организация собрания акционеров\ настройка почтового сервера и т.д.) или прохождение обучения, или участие в семинаре. Если вы до работы или во время нее проходили дополнительное обучение, то обязательно укажите его в резюме.
Укажите ваш личный опыт работы с какой-нибудь технологией, программой. Или книгу по Тайм менеджменту, которую вы знаете наизусть (последнее лучше указать в разделе О себе).
Хотите начать работать дизайнером и при этом закончили художку, ОБЯЗАТЕЛЬНО это укажите! Для творческих специальностей еще рекомендую набить портфолио из всех своих работ, абсолютно из любых, включая те, что рисовали от руки или делали ради развлечения на компьютере.
Большое внимание уделите разделу «о себе». Опишите, что вы ожидаете от нового места работы, какой размер команды, какое направление деятельности и что вы готовы предложить своему работодателю.
Сейчас напишите все так, как ВЫ все это видите.
Потом несколько раз перечитайте и оцените, насколько связный текст получился.
Маленькая хитрость, для того, чтоб было проще начать. На сайте hh.ru заполнить все поля, и уже получится более-менее приличная структура будущего резюме.
1. Анализ рынка
Я открыл сайт hh.ru зашел в вакансии.
Выбрал отрасль ИТ. Выбрал свой город. И указал язык программирования, который знаю, для поиска вакансий, где он требуется. Оценил пустой список и поняв, что живу «в глухой провинции», стал смотреть любые вакансии из сферы ИТ в моем городе. Вы можете выбирать смежные со своей вакансией. Пробуйте разные наименования одного и того же или что-то из вашей отрасли.
Потом глянул вакансии по краю. Потом по России.
Затем выбрал удаленные вакансии.
Зарплату советую не указывать, чтоб оценить сколько вообще готовы платить на должностях.
Открыл несколько десятков вкладок. Прочел какие технологии и какие требования к моей должности нужны. Составил небольшой список, для того, что надо изучить или опробовать.
Вообще советую всегда вести такой список, а при поиске работы он нужен, чтоб записывать туда все вопросы, на которые не смог дать ответ на собеседованиях. Говорю во множественном числе, так как попасть на вакансию по первому отклику крайне маловероятно.
Важным этапом моей карьеры я считаю прохождение около пятидесяти собеседований (включая и собеседования на английском, но об этом ниже)
Из этих вакансий стоит почерпнуть фразы и описание навыков для указания в своем резюме. Никогда не указывайте в резюме то, чем не занимались или хотя бы не пробовали технологию на ощупь.
2. Анализ конкурентов
Раньше на hh.ru чтобы посмотреть анкеты других кандидатов, надо было завести еще один аккаунт от лица фирмы. Сейчас там можно просто переключиться на поиск анкет.
Открываем поиск по анкетам и вбиваем то, что вас интересует в общий поиск (я вбил C#). Без привязки к региону или городу.
Выбрал анкеты, которые хотят получать максимально много (конечно, как и я), а это оказались ведущие специалисты и тимлиды. И начал сравнивать, чем они занимались и какими словами они это описали.
3. Написание резюме
Итак, у вас уже есть каркас резюме. Теперь более внимательно проработайте весь свой опыт работы. Если вы пишите резюме на конкретную вакансию, вспомните все ваши навыки и обязанности, которые как-то относились к этой вакансии. Для описания своих навыков используйте фразы из самих вакансий. Используйте фразы конкурентов. Главное, не пишите в несовершенном виде – «я делал», или «я делала». Пишите в совершенном – «я сделАЛ», «я завершИЛ», «я ПОМОГ фирме улучшить показатели» и т.д. Очень хорошо описан процесс написания самого резюме в этой статье.
3.1 Написание резюме для Канадского рынка
О написании резюме для Канады, лучше всего рассказал один из моих любимых каналов в Телеграмме МариКанада (ссылка) тут кардинально обратный подход!
4. Написание сопроводительного письма
Помните, что сейчас вы являетесь товаром на рынке труда, который надо хорошо прорекламировать и дороже продать. И сопроводительное письмо как раз является такой рекламой, которая цепляет взгляд рекрутера. Это первое, что видит рекрутер. До вашего резюме он может вообще не дойти, особенно если на ставку претендует много людей.
После приветствия и краткого описания того, кто вы и чем вообще занимаетесь, напишите, что вы наткнулись на их вакансию на таком-то сайте. Потом опишите, чем вы можете быть полезны именно на этой должности. В статье, на которую я ссылался выше, есть несколько отличных советов, как лучше это написать.
5. Написание рекомендаций
Тема в нашей стране довольно новая и непривычная. Но если хотите получить сразу несколько бонусных очков, то постарайтесь получить небольшой отзыв от своего прошлого работодателя. И предупредите его, что, возможно, с ним захотят поговорить.
Если руководитель сильно занят, а его труд мы тоже уважаем, то можете сами написать рекомендательное письмо и указать контакты начальника и дать ему на подпись.
6. Рассылка резюме
Рассылать надо много и часто, есть такой термин – веерная рассылка. Вообще, желательно записывать в столбик кому отправлял и что ответили. Тут опять же, на hh.ru можно просматривать кто читал резюме, а кто сразу отказал. Но одним сайтом совершенно не ограничен поток вакансий, этих сайтов просто валом, и на русском и на английском. В плоть до того, что можно просто в поисковике набрать свою должность и написать Вакансия. Если ищите в LinkedIn, то там лучше искать не только вакансии, но и самих рекрутеров.
Так же есть целый ряд Телеграмм-каналов с удаленной работой. Покажу несколько из моих подписок. На этих каналах бывает проскакивает реклама смежных каналов по разным отраслям.
Небольшой список рекрутинговых Телеграм каналовПри отклике на вакансию, в сообщении пишем сопроводительное письмо. Если отправляете на почту, то сразу крепим к письму резюме и все рекомендации.
Прелесть в том, что компаний, которые ищут кандидатов, каждый день только прибавляется и чаще всего им требуется примерно одно и тоже. Не надо бояться, что они вас |проигнорируют |отклонят заявку | ответят отказом|, потому что …. /подставить свою причину/. Не попробуешь — не узнаешь! Нет общего черного листа для всех компаний, куда они заносят кандидатов, которые им не понравились. Не подошли одним, значит ищите других!
У вас есть возможность выбрать компанию, в которой вам будет комфортно работать и развиваться как специалист. Чаще всего компании завышают требования к соискателям, чтобы в идеале найти того, кто соответствует им или немного слабее. Но, в любом случае, вас рассмотрят и есть высокая вероятность, что проведут собеседование, а это не только возможность попасть на желаемую работу, но и колоссальный опыт.
7. Прохождение первых интервью
ВАЖНО: записываем все интервью на видео. Я использую программу «iSpring Free Cam 8»
Это поможет сделать работу над ошибками. Выписываем все вопросы, на которые вы не ответили, или не уверены, что ответили правильно.
Подготовьте ответы на банальные вопросы, в стиле: «Почему вы ушли с прошлого рабочего места?» или «Кем вы видите себя через пять лет?» Вам поможет статья с самого hh.ru.
Постарайтесь не говорить негативно про прошлый опыт работы или прошлых начальников. Это выставит вас в дурном свете, и рекрутер может решить, что вы плохо ладите с коллегами.
Сами тоже не стесняйтесь спрашивать. Спросите про команду, про то, какие задачи перед ними стоят, что требуется от вас как сотрудника. Какие перспективы развития компании. Финансовый вопрос лучше оставить напоследок, чтоб работодатель понимал, что вам интересно способствовать развитию его бизнеса, чем просто брать деньги и сидеть на ставке.
Вообще, процесс собеседования я воспринимаю как возможность узнать, что-то новое! Например, сейчас программы\технологии\паттерны используют разные команды или что вообще востребовано на рынке (не по обзорам с серой статистикой, а напрямую у работодателей). Плюс, при решении тестовых заданий вы получаете кучу опыта.
Но бывают на собеседованиях и неадекватные вопросы и подходы к отбору. После нескольких собеседований вы будете чувствовать себя намного уверенней.
8. Подготовка к последующим интервью
Гуглим все свои вопросы. Ищем все требуемые технологии и пробуем развернуть их у себя на машине или смотрим видео уроки, как это работает. Это поможет не только на интервью, но и в дальнейшей работе. Выполняем тестовые задания. Освежаем все давно забытые знания.
Вообще получить фидбэк от компании — золотого стоит. У меня был всего один случай из всех, когда мне прямо на интервью рассказали, почему им не подошло мое решение тестового задания и как именно его надо было решить, чтоб им подойти. И то, это была не российская компания.
9. Подготовка к интервью на английском
Тут должна быть огромная отдельная статья. Но я расскажу вкратце, как прошли мои несколько интервью на английском. К сожалению, я начал по-настоящему готовиться к интервью на английском языке только после первого интервью на английском. Но хорошо, что у вас есть моя статья!
Скажу сразу, что между первым и вторым интервью у меня было три недели подготовки английского с учителем по скайпу.
Для того чтоб вообще не молчать, я сделал небольшой пересказ своего резюме на английском, стараясь убирать все сложно произносимые фразы. Максимально его выучил и попросил знакомую учительницу английского меня послушать и попытаться понять, что я имел ввиду.
Еще я нашел список стандартных вопросов на английском для собеседования на Dot.Net, и постарался часть из них запомнить. Это служило шпаргалкой, я мог подглядывать в нее, так как меня все равно было не видно на камеру.
10. Прохождение интервью на английском
Самое сложное – уловить, что от тебя хотят. Так как акценты у всех совершенно разные и скорость произнесения речи тоже. У меня было два интервью на английском, одно с парнем из Германии, второе с мужчиной из США.
В первый раз, со мной должен был говорить рекрутер на русском, но что-то пошло не так и его не было на интервью. Сотрудник, говоривший со мной, был с сильным немецким акцентом. Часть слов я понял правильно и даже ответил что-то, вспоминая резюме, правда я на тот момент его еще не переводил и пришлось импровизировать. А на часть я явно дал совершенно не подходящий ответ. К сожалению, им требовался хороший разговорный английский, и я им не подошел.
Во втором случае меня сразу предупредили, что плохой английский вообще не является проблемой (это потом я перевел запись разговора и понял, что мне сказали). Тут было уже немного проще, так как в первый раз я был совершенно не готов, а для второго раза у меня уже были шпаргалочки, включая мое переведенное резюме. Но, к сожалению, им я тоже не подошел, так как требовалось отличное знание Java Script’a, а у меня оно было на среднем уровне.
Еще не могу не упомянуть, что на нескольких русских собеседованиях, где после технического интервью, со мной просто говорили на английском на отвлеченные темы. Для этого стоит так же сделать небольшой словарик, для фраз о погоде, увлечениях, хобби и о том, как ты провел выходной.
Опять же, всегда записывайте на видео или аудио все собеседования — для работы над ошибками, и чтоб понять, что от вас хотели.
11. Прохождение финального интервью и дальнейшая работа
Вы долго шли к этому моменту. Сейчас вы уже без запинок отвечаете на любой вопрос, а если не знаете ответа — можете импровизировать с имеющимися у вас знаниями. Можете поговорить на английском и улавливаете, что от вас хотят.
Вы успешно проходите собеседование и получаете желаемую работу.
Выходите на свою новую работу и начинаете вникать в процессы и рабочую среду. Знакомитесь с командой. Через месяц получаете свои первые деньги.
Но в какой-то момент что-то может пойти не так. Работа вроде не плохая, и денег платят много, но все напрягает. Вы ушли от неадекватного начальника и ненавистной работы, чтоб изменить свою жизнь и зарабатывать деньги на том, что нравится, а попали совершенно в похожую ситуацию. Когда с вами обращаются плохо или неуважительно, и требуют, чтоб ты не прекращал работать даже по выходным «ты же все равно дома сидишь!» и т.д.
Тут важно понимать, что работать надо там, где вам будет комфортно. Современные реалии таковы, что рынок труда огромен и сейчас не компании выбирают кандидатов, а кандидаты выбирают компании, в которых им хочется работать.
И если вас не уважают за вашу работу, к которой вы подходите с душой, за ваш вклад в развитие компании, то грош цена такой компании.
Работу надо любить, и тогда вы ни дня не будете сожалеть, что вы на нее ходите. Будет мотивация для самосовершенствования и желание внести свой вклад в общий труд!
Удачи в поиске!
Как найти свою первую работу программистом? От резюме до испытательного срока / GeekBrains corporate blog / Habr
Все знают, что сейчас программирование — это супервостребованная и супероплачиваемая профессия. Но немногие знают, что вакансий для начинающих очень мало. Все работодатели хотят, чтобы к ним пришёл человек, который уже что-то умеет. Напишет код, который не надо выкидывать. Джуниорских вакансий (не требующих опыта работы) мало, и конкуренция здесь очень большая. С одной стороны, существует огромная потребность в программистах. С другой — в начале карьеры вы можете столкнуться со сложностями. Работодатели обращают внимание в первую очередь на тех, у кого в резюме уже есть строчка о прошлом месте работы. Если у вас её нет, будет сложно.
Из собственного опыта скажу, что я окончил хороший университет и ожидал, что меня сразу завалят предложениями о работе. Но моё резюме вызывало минимальный интерес. Я получил два приглашения на собеседования, и никто меня не отрывал с руками.
Итак, как же новичку получить первую работу?
Оно должно как-то называться. Существуют два варианта.
- Допустим, вы программировали на разных языках. В школе наверняка писали на Pascal, а потом что-то делали на C++. Если вы постарше, то, возможно, знакомы с Delphi. Поэтому в названии резюме можно указать все языки, на которых вы писали. Авось какой-то заинтересует потенциального работодателя. Например, так: «Программист: delphi, python, php, html, java, c#, ruby, scala».
- Можно указать, что вы специализируетесь на чём-то одном, например на Python. Обычно, если в названии резюме перечислена куча языков, то понятно, что вы не умеете ничего. Всего коснулись поверхностно. В глазах работодателя вы будете человеком-оркестром, который пришёл на прослушивание в консерваторию. Не надо так делать. Зачёркиваем длинную простыню и оставляем просто «Программист на Python». Повышайте свою самооценку, не акцентируйте в резюме неуверенность в себе, связанную с нехваткой опыта.
Из этого следует правило: выберите один язык программирования и специализируйтесь на нём. В университете я писал на С++, потом понял, что связанные с ним вакансии меня не очень прельщают, поэтому надо двигаться в другом направлении. Я выбрал для себя C# и Java. Мне они оба очень понравились, и я долго не мог определиться, какой мне больше по душе: тут есть такая-то фича, здесь такая, казалось бы, одинаковые. Я купил две здоровенные толстые книжки — по C# Эндрю Троелсена и по Java Брюса Эккеля. На каждую я потратил по две недели и начал откликаться на вакансии по обоим языкам. Думал, куда раньше возьмут — в тот язык и буду углубляться. Сейчас я понимаю, что переложил ответственность за выбор языка с себя на мироздание, на судьбу, на работодателя.
Приходя на каждое из собеседований, я чувствовал себя неуверенно. На обоих языках я писал одинаково слабо. Не надо было так делать. Надо было принять волевое решение. Не можете выбрать — киньте монетку. Главное, определиться с каким-то одним языком.
Какой язык лучше всего указать в резюме? Языков много, но они очень часто друг друга взаимозаменяют. Не все из них живые. Основное правило — выбирайте популярные языки, не надо брать экзотику. Не нужно слушать, что какой-то Haskel очень крутой, классный, умеет делать всё и вся, а функциональные языки программирования такие волшебные… Каждый хвалит свой язык.
Работодателям нужна не экзотика, а те технологии, по которым много специалистов. Решайте сами, нужно ли учить язык, по которому вы потом не сможете найти работу?
Так что при выборе языка обращайте внимание:
- на его популярность;
- на решение задач, которые вам интересны;
- на простоту освоения: на начальном этапе лучше выбрать попроще.
Сейчас по количеству вакансий наиболее востребованы следующие языки: Javascript, PHP, Java, C++, Python, C#, Ruby, Swift, Objective-C. Выбрав какой-то язык, скорее всего, вы на нём и остановитесь. Может быть, через два года разочаруетесь или решите перепрофилироваться. Но это будет немножко больно. С другой стороны, свой опыт вы сможете легко применить в другой сфере деятельности.
- Если речь пойдёт про frontend — то есть разработку визуальной части сайтов, — то здесь всё просто, нужны три языка: HTML, CSS, JavaScript.
- А вот для разработки серверной части вариантов много. Самый популярный язык — РНР. Мне на каждом докладе говорят, что про РНР плохо отзываются, какой-то он не такой. Многие высказывают гипотезы, что он умрёт. Но ничего подобного, половина сайтов написана на РНР, половина вакансий — на РНР, ВКонтакте — на РНР, как и многие другие крупнейшие проекты. Никуда язык не денется. Если в нём будут критические проблемы, то их просто исправят. Появился Ruby on Rails, классный движок — ну, ничего страшного, на РНР стали появляться фреймворки, в которые внедрили аналогичные фичи. Всё хорошо. Отдельно скажу, что Python многих прельщает простотой и универсальностью.
- С точки зрения мобильной разработки есть всего два варианта. Если хотите писать под Android — это Java. Если под iOS — Swift или Objective-C. И то и другое — хорошие решения.
- Разработка под desktop и серверы: Python, Javaб С++ или C#. Здесь есть простор для метаний. Python попроще, чем остальные. На Java можно писать под Android. На C# — углубляться в разработку игр и сайтов. C++ больше подходит для тех задач, где требуется высокая скорость работы. В остальном у них возможности совпадают, просто на Java сайты пишут реже.
Возникает резонный вопрос: если начинаешь с нуля, то имеет ли смысл изучать сразу новый язык? Например, в Apple перешли с Objectivе-C на Swift, потом появился Swift 2 и 3. Обычно я консервативен и считаю, что новое не всегда оправданно и действительно выстреливает. Появляется новый язык, по нему нет вакансий, но где гарантия, что они появятся потом? Может, на нём так и напишут с пяток проектов.
Что касается Objectivе-С и Swift, я давно присматриваю за этими языками, и буквально на днях количество вакансий на Swift сравнялось с Objective-C. Мое мнение, это очень серьезный показатель, что Swift будет только набирать обороты и со временем может вытеснить Objective-C.
Итак, мы выбрали язык и указали его в резюме. Далее перечисляем технологии, которые мы знаем. Давайте снова разбираться, что круче. Допустим, вы программируете на PHP. Имеет ли смысл писать, что вы знаете С, С++, Pascal, C# и так далее? Не надо перечислять все технологии, которые напрямую не относятся к вашей компетенции. Надо назвать вакансию «программист: РНР». В таком случае работодателю неинтересно, что вы когда-то писали на С и Visual Basic. Весь этот длинный хвост можете не указывать.
Есть и другой вариант. Допустим, я программист на РНР, но знаю все эти технологии, потому что они относятся к веб-разработке: и РНР, и YII2, и HTML, разные фреймворки. Если будете искать вакансию веб-разработчика, то наверняка увидите здоровенную простыню дополнительных требований с кучей умных слов. И многие этого пугаются, особенно в веб-разработке, страшно, что надо столько знать… К этому надо стремиться: знать Webpack, работать с разными БД и так далее.
Многие для повышения авторитета сразу пишут, что я и это знаю, и это примерно знаю, но я новичок и готов получать пока 15—30 тысяч, и опыта работы у меня нет. Какое будет впечатление у работодателя? То же самое: человек-оркестр.
Есть и другая проблема. Допустим, работодатель поверит, что вы всё это знаете. Он же на собеседование придёт с этим списком, ткнёт в любую технологию и скажет: «Теперь мы говорим про React, что ты знаешь про него? А это что? А это? Ясно, React мы не знаем».
Вычёркиваем.
«Хорошо, поговорим про MySQL, напиши мне транзакцию, которая делает то-то и то-то».
«Ну, я в MySQL установил только среду разработки, два select-а сделал…»
MySQL тоже вычеркиваем. Всё остальное он даже смотреть не будет. Работодателю уже будет неинтересно, что вы полгода жарили РНР: он поймал вас на вранье. Так что зачеркиваем всё перечисленное.
От джуниора никто не ожидает, что он сразу полетит в космос. Работодатель, как правило, адекватный человек. И он понимает, что джуниор будет знать один язык программирования и в лучшем случае поверхностно разбираться во фреймворках. Работодателя это устраивает, потому что ему нужен человек, который заберёт рутинные операции у ведущих разработчиков. Поэтому пишите о своих знаниях максимально честно.
Более того, даже не пытайтесь ознакомиться со всеми этими многочисленными технологиями. Если вы РНР-программист — так и напишите, что знаете РНР и немного HTML и CSS для верстки. Ещё знакомы с одним фреймворком — всё, работодателя это устроит. Он не будет вас гонять по YII, поскольку вы и не указали, что знаете его. Работодатель понимает, что вас можно гонять по РНР.
Если так получилось, что вы уже много чего потрогали, то честно напишите: поверхностное знакомство с такими-то технологиями. Может, для работодателя это будет плюсом.
Должно ли в вашем резюме быть подтверждение того, что вы окончили какой-то университет, получили какие-то сертификаты, прошли курсы и так далее? Это хорошая вещь при первичном отборе, на которую обращают внимание многие кадровики. Им сложно ориентироваться по другим критериям. Поэтому они смотрят на опыт работы и на образование, чтобы сделать какой-то вывод.
Когда я набирал в команду джуниоров по C#, мы опубликовали вакансию и в течение двух-трёх недель получили 50 откликов. У нас не было кадровика, поэтому мы пошли программерским путём: всем кандидатам выслали тестовое задание. Кто его сделал, проходил дальше. И мне как работодателю не были интересны сертификаты и диплом. Я даже на резюме не смотрел, пока человек не присылал мне решение тестового задания. Но для кадровика это может быть важно.
Очень важная вещь на этапе отбора. Если у вас есть портфолио, то работодатель-программист сможет понять, в состоянии ли вы решить задачу аналогичную той, которую вы уже решали.
Что можно написать в своём портфолио? Если вы хотите разрабатывать сайты, то просто придумайте себе задачку и решите её за необходимое время. Сделайте небольшой сайт и выложите его, лучше всего на Github. И напишите: я создал небольшой интернет-магазин, использовал такие-то технологии, вот код. Для работодателя это будет показателем, что вы ещё и про Git знаете. Он понимает: если я возьму этого новичка на работу, он мне за два дня сделает примерно то же самое, с чем сам разбирался месяц. И не надо будет ему платить за то, чтобы он выучил, что такое Bootstrap, познакомился со всякими нужными штуками. Он сам уже это изучил и теперь в состоянии решить задачу за пару дней. Поэтому не пренебрегайте портфолио. Вам оно очень сильно поможет.
Если он у вас есть, то опишите его. После этого вас будут отрывать с руками. После окончания университета я получил два отклика на своё резюме, а через год просто не знал, как его спрятать. Потому что всем нужны программисты, и кадровики видят: этого парня вытерпели год и не уволили, он не облажался, значит, толковый человек. Если я его возьму к себе на работу, то, скорее всего, я тоже смогу терпеть его как минимум год, его код не надо будет выбрасывать.
Резюме готово, что делать дальше? Прежде чем откликаться на вакансии, надо немного психологически настроиться, чтобы процесс пошёл правильно. Представьте свой идеальный рабочий день, что бы вам хотелось получить в итоге? Иначе мы просто будем белкой в колесе, станем бежать за какой-то мечтой, каким-то счастьем. Представьте, как выглядит ваш офис, ваши коллеги, какое у вас самоощущение, какими проектами вы занимаетесь. Просто настройтесь на то, какие эмоции вы будете испытывать, когда станете ходить на работу. Сделайте запрос мирозданию: «Хочу, чтобы было так, так и так». И успокойтесь, всё у вас будет хорошо.
Расскажу о том, как я устроился в компанию GeekBrains. В какой-то момент мне надоело программировать. Это классное занятие, я пять лет ему отдал, но меня не очень удовлетворяли цели компании, в которой я работал. Я подумал, что мне было бы интересно открыть свою школу и учить людей. Дать им возможность получить новую специальность, новую профессию. Потом я увидел вакансию и начал преподавать в GeekBrains, совмещая это с основной работой. Затем я просто попросился к ним на работу.
Так выглядел мой разговор с генеральным директором GeekBrains.
Гендир: «А что ты умеешь делать? Ты на C# программируешь, а мне нужен Ruby».
Я: «Я не хочу программировать, я умею то, умею сё».
Через две недели я вышел на работу.
Наверно, вы представляете: «Я найду работу так: выложу резюме, на него откликнутся, я приду на собеседование, и всё получится». Но работа может найти вас совершенно другим способом. Например, вы зарегистрируетесь на фрилансерском сайте, выполните какой-то заказ, и у вас появятся постоянные клиенты. Или друг пригласит вас к себе работать. Не зацикливайтесь на способе достижения цели. Просто будьте открыты к предложениям, откуда бы они к вам ни пришли.
Не расстраивайтесь, если вас не позвали на собеседование после того, как вы откликнулись на вакансию. На начальных позициях предложение сильно превышает спрос. Я сам допускал эту ошибку, находил одно предложение о работе и думал: блин, мне это подходит, тут и компания недалеко от моего метро, и требования несложные. Мне кажется, что я им классно подхожу, а они, заразы, даже не посмотрели моё резюме. Ну что такое? Наверное, во мне что-то не так. Или они прочитали, но ничего не написали. Всё, резюме плохое, надо дорабатывать портфолио, что-то ещё делать. А на самом деле, может, им просто некогда. Они уже давно взяли кого-то на работу и просто не стали снимать вакансию, потому что у новичка ещё не закончился испытательный срок.
Не парьтесь, ребята. Отправьте 100, 200, 300 откликов, сколько найдёте. И законом больших чисел вы сообщите мирозданию, что реально хотите работу. Вас пригласят на пять собеседований, на одном из них вы устроитесь на работу — всё. Если вам посылают тестовое задание, не пренебрегайте им. По моему опыту, 90 % кандидатов отваливаются, когда получают тестовое задание.
На собеседовании очень важно настроение. Настраивайтесь, что это не вас тут оценивают, а вы пришли понять, подходит ли вам компания, нравится ли вам здесь работать, хороший ли коллектив — и так далее. В противном случае вы будете считать, что вас экзаменуют, и сидеть с трясущимися коленками. Вы — эксперт, специалист. Начинающий, но специалист. И вы тоже собеседуете работодателя: интересен ли проект, какие у него перспективы, как выглядит рабочее место? Вы чуть-чуть меняетесь местами, и работодатель думает: человек себя ценит, надо теперь мне его убедить, что моя компания достойна его присутствия. Это тоже важный фактор.
Не переживайте всё время о том, что вас выгонят сразу после испытательного срока. По моему опыту, испытательный срок — это символическая вещь, подстраховка для работодателя, чтобы можно было легко уволить накосячившего новичка. В подавляющем большинстве случаев к вам не применят никаких санкций. Работодатель обычно просто забывает об испытательном сроке. Он по таймеру посмотрел — прошло три месяца, можно человека оформить.
Если вас взяли на испытательный срок, то не надо всех заваливать вопросами, иначе подумают, что вы дурак. Но не надо кидаться и в другую крайность, когда начинающему разработчику дают задачку, и он уходит в себя на три дня, потому что сам пытается во всём разобраться. А работодатель думает: неужели вам мало трёх дней на такую простую вещь? Так что не стесняйтесь задавать вопросы. Если вы больше часа занимаетесь какой-то задачкой и у вас не получается, подойдите к старшему, спросите, он вам поможет, всё будет хорошо.
Друзья, и напоследок напутствие: не бойтесь экспериментировать. Ищите себя, находите то, чем вам нравится заниматься. Нет ничего хуже, чем десять лет просидеть на нелюбимой работе из страха, что не сможете устроиться на другую. Если вам нравится программировать — начинайте обучаться этому ремеслу, совмещайте учёбу с основной работой. Если хотите — приходите к нам в GeekBrains, и мы вам обязательно в этом поможем. Удачи вам, и до новых встреч!
знать язык программирования или уметь решать бизнес-задачу? / Maxilect corporate blog / Habr
В обсуждениях задач бизнес и разработчики говорят на разных языках.
С точки зрения бизнеса совершенно не важно, на каком языке будет решена их задача. Бизнес не думает, а возможно, даже не знает о java, go, ruby и других языках и технологиях. Для разработчиков здорово, конечно, когда масштабный и интересный проект начинается с нуля и технологический стек выбирается командой. Но в реальном мире гораздо чаще происходит не так. Обычно в компании уже есть экспертиза в определенном стеке, от которой ИТ-руководству не хочется отказываться. Причины могут быть совершенно разные, от запрета на “зоопарк технологий” до личных предпочтений лиц принимающих решений. Встречаются и дополнительные факторы вроде потребности в интересных технологиях для команд, ради привлечения и удержания квалифицированных кадров.
Разработчики со своей стороны зачастую высказывают желание развиваться в определенном технологическом стеке. Подкрепляет это намерение большая разница между зарплатами для некоторых языков. Так и появляются люди, которые упорно живут, например, в рамках Java или Python (Go, Kotlin, Scala… список можно продолжать чуть ли не бесконечно) и даже Delphi, не пытаясь посмотреть, а что есть еще.
На мой взгляд, желание углубиться похвально. Но иногда “за деревьями теряется лес” — в процессе этого погружения специалист просто забывает о том, что для бизнеса технологии — лишь инструмент для решения своих задач. В итоге зашоренность на одном технологическом стеке в комплекте с врожденным перфекционизмом (“а давайте сделаем рефакторинг на полгода проекту, у которого нет серьезных планов по развитию, просто потому, что так будет красиво”) не самым лучшим образом отражаются на качестве принимаемых решений.
Моя точка зрения состоит в том, что конкретный язык программирования вторичен. Первичны общее понимание принципов разработки и умение решать проблемы бизнеса — знание подходов и паттернов, которые помогают систематизировать общую работу, опыт применения различных техник, в том числе командных. С таким багажом еще один язык, который нужен в данном конкретном проекте, освоить несложно. У меня перед глазами полно примеров того, как люди переквалифицируются на другие стеки в течении месяца — двух интенсивного обучения. Конечно, сложнее переключаться между языками с разными парадигмами, например с функциональных на объектно-ориентированные, но и здесь нет ничего невозможного, если человек не противится такому переключению “на уровне веры”.
Зная несколько языков, под каждую конкретную бизнес-задачу можно выбирать свой подход к решению — тот, что не просто подойдет, но будет оптимален в данном конкретном случае. И чем больше в арсенале разработчика база этих подходов (языков), тем получается шире взгляд на проблему и мотивированнее выбранный стек. Бизнесу, собственно, это и нужно — получать наиболее подходящее решение для своих задач.
А вот с глубоким знанием одного языка, но без способности решать бизнес-задачи специалист принесет пользу далеко не любой команде. Безусловно, в отдельных проектах глубокие знания “фишек” языка помогают команде в целом добиться большего перформанса. Но чаще член команды, знающий один язык, но не умеющий слушать бизнес, будет лишь тормозить коллег. И кстати, такой “ходячий справочник неочевидных возможностей” зачастую если и нужен в конкретной команде, то только один (делаем выводы о востребованности таких узких специалистов на рынке труда).
Умение решать бизнес-задачи — это на самом деле часть более глобальной сущности — всестороннего опыта работы. Получить его можно как с работодателем, так и в рамках домашних проектов. Правда, на мой взгляд, только бизнес-проекты (где есть заказчики, бюджеты, сроки) могут дать столь необходимую в подобных ситуациях обратную связь, оценивающую качество решения. А именно это определяет глубину полученного опыта. С домашними проектами такой обратной связи получить просто не от кого: ты сам что-то делаешь и в определенный момент решаешь для себя, что сделал хорошо. На этом все заканчивается. Но когда проект реализуется для бизнеса, недостаточно проработанное решение будет отправлено на доработку,
потом еще и еще раз, если это необходимо. И по ходу этих итераций ты неизбежно изучишь несколько подходов к задаче — получишь понимание более высокого уровня.
Одна из составляющих умения решать бизнес-задачи — понимание этой самой задачи. И поскольку довольно часто российские разработчики участвуют в зарубежных проектах, для этого понимания необходимо знание английского языка. В этом вопросе не всегда можно положиться на бизнес-аналитика, поскольку хороших специалистов по этому направлению на рынке не хватает.
Лучше понять бизнес помогает погружение в какую-то отрасль. Когда ты не просто делаешь абстрактный модуль, принимающий, обрабатывающий и отправляющий неизвестному адресату пакеты данных, а реализуешь, допустим, часть сложного биллинга или банковской системы, где есть разные типы пользователей, стандарты и прочие особенности. Знание этих деталей очень ценно. Такое погружение учит интересоваться тем, что происходит вокруг твоей части задачи. Это помогает искать оптимальное решение. Я знаю специалистов, которые никогда не пойдут работать на задачу, которая нужна непонятно для чего. А в некоторых направлениях развития бизнеса для разработчиков предусмотрено обязательное внутреннее обучение, потому что без погружения в принципе не получится эффективной работы.
В качестве небольшого дополнения для лучшего понимания проблем бизнеса я рекомендую посещать конференции, посвященные конкретной отрасли. Там спикеры делятся опытом, как они решили бизнес-проблему с помощью ИТ-технологий. Зачастую оттуда можно вынести полезную информацию о том, в каком направлении двигаться. Хотя, конечно, никто не требует в деталях повторять чужой опыт.
Я не говорю, что заботиться о бизнес-задачах должен каждый разработчик. Джун только входит в этот круг, на начальном этапе у него уходит слишком много времени на коммуникации с коллегами и изучение того, как решить конкретную проблему. Тут не до расширения кругозора. Но вот начиная с миддла предыдущий опыт формирует понимание, с какой стороны подходить к задачам определенного типа. На этом этапе уже не возникает вопросов по экосистеме разработки — когда и какие статусы выставлять, как реагировать на код-ревью и т.п. Специалист начинает быстрее справляться даже с незнакомыми задачами — здесь-то самое время “подтянуть” бизнес-составляющую. Фактически сениор от миддла и отличается этим пониманием подходов к решению распространенных проблем бизнеса. И стремление к такому пониманию помогает быстрее перейти на следующий уровень.
Таким образом, я призываю ставить себе цели по развитию одновременно в двух направлениях. С одной стороны, учить языки, а с другой — набираться опыта в решении конкретных задач бизнеса. И в этом развитии надо соблюдать баланс, иначе найти свое место в мире сениоров будет довольно тяжело. А вот куда именно развиваться — в сторону архитектора, очень сильного разработчика или тимлида, — зависит уже от амбиций и личностных качеств (умения работать в команде, ответственности, коммуникабельности и т.п.) конкретного специалиста.
А что вы думаете по этому поводу?
Автор статьи: Сергей Марина
P.S. Мы публикуем наши статьи на нескольких площадках Рунета. Подписывайтесь на наши страницы в VK, FB или Telegram-канал, чтобы узнавать обо всех наших публикациях и других новостях компании Maxilect.
Отправить ответ