Как быстро начать
Многие знают — чтобы быстрее развиваться, нужна работа. Это и деньги и мотивация, и самый что ни на есть источник навыков. Первую работу программистом я даже не искал — просто сперва устроился прожектом в интернет-магазин, потом изучил программирование на PHP и по чуть-чуть выдавил удаленных фрилансеров-разрабов, когда через 3-4 месяца уже «в полный рост» занялся существующим проектом, которым и занимался более года. Рост был моментальным: сразу и боевой проект, и куча кода, и задачи реальные. К примеру LEFT JOIN через связующую таблицу научился делать до того, как узнал как делать банальный INSERT или что такое нормальные формы, просто нужно было «тут и сразу».
Подготовка. На самом деле попытки я делал и ранее, но это больше было не про «делать», а про «хотеть». Понятное дело, дальше «развернуть сервер» дело то и не доходило.
Потому прежде, чем я взялся за изучение чего-либо в PHP, я насильно себя пересадил за Linux, вдоль и поперек наигрался с хостами Nginx и сносил всю ОС по 3-5 раз в день и освоил виртуальные машины. И это очень здорово меня выручило, так как с самого начала вокруг меня был уже нужный контекст для развития.
Изучение. Первое изучение языка было через видеокурс на ютубе. На каком-то канале было два огромных курса, по часов 30 каждый, наверное. Первый был про основы языка, второй про ООП. И тут самое главное — основы благополучно не стал изучать (зачем?:) и сразу взялся за ООП-курс, попутно изучая те конструкции и особенности языка, с которыми сталкивался по ходу изучения и были непонятны мне (то есть абсолютно всё, но уже не как следующий пункт в программке, а как то, что нужно было кровь из носу). На самом деле это были адовые трое суток без сна — пытался сделать осознанно буквально все не так, отступал от каждого примера в видео и даже проектик писал совершенно не такой и не по предлагаемым шагам.
И после этой бойлерной через неделю я смог делать первые задачи на работе, так как появилась осознанность и понимание устройства всего проекта, а через 3-4 недели я уже взялся за фреймворк Yii2 и начал разрабатывать на нем свой личный сервис записи в спортзалы.
Набор советов:
- Форсируйте по возможности вопрос с работой и боевым проектом;
- Форсируйте темы, не изучайте поступательно, сделайте некоторые темы жизненно-необходимыми — как с иностранным языком, попав в инородную среду, вы быстро адаптируетесь;
- Изучайте Linux и другую инфраструктуру по возможности сразу, мне это сильно помогло;
- Всегда отступайте от материала, который вам дает преподаватель. Это опаснейшая ловушка — просто смотреть и улавливать причинно-следственную связь подаваемого материала, вы на самом деле понимаете не материал, а лишь хорошо связываете закономерности;
- Постарайтесь попасть в боевой проект как можно раньше, вырасти получится сильно быстрее, мне повезло — работал с нулевого дня; создайте себе похожую ситуацию и не нужно будет ходить по десяткам собеседований и унижений;
Самостоятельно к хорошим практикам
У компании было 3 проекта, очень похожих проекта (оптовый магазин, розничный и еще проектик). Очень не хотелось копипастить и делать одно и тоже, кроме того очень не хотелось вести разработку на реальном сервере и мне пришлось хорошо прокачаться в девопсе и вынести все проекты в 1 кодовую базу. Сразу освоил GIT, развернул удобную разработку в своем окружении и сделал даже простую систему деплоя, понятное дело не все сразу, но довольно быстро. Очень сэкономил по времени и силам.
Параллельно проекту делал свой проектик на фреймворке Yii2 и делал эксперименты с Symfony, некоторые компоненты которого перекочевали в проект на работе. Фреймворк Symfony в дальнейшем принес мне очень много очков при поиске (именно хорошей) первой работы в Москве, хоть я и делал на нем простые контроллеры. Не буду сравнивать этот фреймворк с другими и делать его как окончательный выбор, но опыт с ним должен быть у каждого. Этот фреймворк и подходы, которые идут параллельно с ним, сильно поднабрали из фреймворков и практик других языков (Java, C#), конечно, не без минусов. И он используется во многих топовых компаниях, где есть стек на языке PHP (Lamoda, «Яндекс.Еда», «Авито» и много др.).
Небольшой совет:
- Даже если вы один, если у вас проект «на кошечках», стремитесь делать с максимальным изучением инженерных штук (подходы, фреймворки, ORM, паттерны, популярные архитектурные приемы).
Практика с другими людьми
Лучшее, что со мной произошло, — попасть в команду издательства Condenast. Несмотря на то, что это издание и популярные мнения о специфики работы журналов, практики и подходы в этой команде были неплохими. Так как проектов у издательства много, то было много кода, который нужно переиспользовать, а тк много различий — нужно было код делать настраиваемым и гибким. Короче, было очень много хорошего абстрактного кода. Первый месяц я обалдевал от сокрытой сложности и ковырял лишь одни YAML конфиги в Symfony приложениях. Хочу отметить, что многие практики были куда «кучерявей», чем на следующем месте работы — Яндексе.
Наконец устроился в Яндекс.Еду. Параллельно был оффер в Ламоду и еще штук 5 других компаний. При первом звонке от HR честно засомневался и заявил, что скорее всего мне позвонили по ошибке и что не потяну, но в итоге прошел все собеседования и получил оффер. И в работу довольно легко втянулся, но из-за сильных разногласий и сложной обстановки в команде ушел вскоре после успешно закрытого испытательного срока.
?Одна из кухонь в Яндексе. Больше фото офиса тут
В этой компании получил потрясающую пользу: код-ревью было организовано таким образом, что каждый разработчик ревьюит других. Чтобы твой код попал в релиз, нужно получить несколько подтверждений от коллег. Приходится узнавать новые детали, замечать свои ошибки самому анализировать чужой код.
Как это работает. В целом сам по себе человек имеет много недостатков: невнимательность, короткая память, плохая моторика, плохая стрессоустойчивость и при внешних обстоятельствах допускает много неточностей. Кроме того каждый разработчик в большом проекте не знает весь контекст проекта, потому перед каждым СТО и архитектором стоит постоянная задача — уменьшить сложность. Код-ревью — отличный инструмент исправить ошибки замыленного глаза и уточнить контекст, а также быть самому в курсе работы коллег и помогать другим снизить сложность, сделать код проще и надежнее.
Сейчас работаю в крутой команде одного банковского сервиса. Основной стек компании на других языках, в основном Ruby. Но наш внутренний сервис написан на PHP, у нас небольшая команда, тонны бизнес-логики и благодаря ревью мы боремся со сложностью, помогаем друг другу и держим стройным наш код.
Рецепт:
- даже если вы один, найдите коллег или проект, на котором вы бы могли анализировать код других людей и найдите тех, кто бы анализировал ваш. Если вы один — начните помогать в опен-сорсе и на сайте вопросов-ответов;
- не уходите из Яндекса через 3-4 месяца:) Хапнете говнЫ на собеседованиях и этот уход будет центральной темой всех собеседований;
Рассказал = закрепил
Невероятную услугу мне оказали проекты вопросов-ответов типа «Тостера» (Habr.QnA) и Stackoverflow.
До начала всей этой истории я уже вел какой-никакой блог и потому практически сразу решил помогать другим программистам на профильных сайтах. Сперва это выглядело так: какой-то человек задает сообществу вопрос, я его разбираю и если достаточно разобрался — пытаюсь выдать ответ. По итогу совет либо помогал, либо хватал кучу критики и советов, что заставляло меня разобраться глубже в предмете.
Тут все тот же элемент внешнего ревью. И попытка объяснить простые/сложные вещи другим другим ребятам невероятным образом укладывает материал в вашей голове.
Помогай другим. Пиши, рассказывай и объясняй и… получишь веточку: ) Шутка, получишь кучу опыта и глубину понимания некоторых тем!
Кроме того такие сайты дают взрыв тем: в своих задачах у вас один вид проблем, а десятков и сотен других программистов их очень много. Это разнообразие проблем и их решений у других программистов даст вам очень хороший кругозор. Если просто читать — забудете быстро (помните, память человека никчемная), объясните — запомните навсегда или хотя бы надолго.
Надеюсь, эти скромные советы помогут вам настроить свои подходы к обучению и развитию. По любым вопросам можете писать мне лично или тут в комментариях.
Всегда можно позвать меня на Habr.QnA: Maksclub
И увидеть больше моих статей (не всегда профильных) в блоге: maksfedorov.ru/blog
Bavashi
По поводу ухода из Яндекса, то у нас все еще сильны стереотипы, что если ты уходишь меньше через пол-года из компании, да еще такой именитой, то это обязательно в тебе проблема и это ты не понравился компании. А то, что тебя может что-то не устроить во время испытательного срока, который между прочем является испытательным сроком и для компании, которая может много чего хорошего рассказать о себе на собеседовании, а на деле все будет «не совсем так» — то это почти что нонсенс. Однако, потихоньку этот стереотип уходит.
skyeff
Человек за 3 года сменил 4 места работы. При этом у него всего 3 года опыта коммерческой разработки. Что же могло насторожить рекрутеров? Загадка!
Maksclub Автор
не понимаю, какими цифрами вы аппелируете?
skyeff
Статья опубликована 05-05-2020 в 15:00 по МСК. Т.е. не может никак быть опыта больше 3 лет, я взял верхнюю границу. Но если вы говорите что опыта разработки еще меньше, то что это меняет, у рекрутеров к вам станет больше доверия?
1 — интернет-магазин;
2 — издательство Condenast;
3 — Яндекс.Еда;
и при устройстве на 4 у рекрутеров возникли вопросы. Или были еще промежуточные места работы, которые опущены в статье? Если их больше, то опять же что это меняет, рекрутеры должны проникнуться большим доверием к человеку, который меняет работу раз в пол-года?
Вот только те кто проводят собеседования видели толпы таких скоророслых, у которых амбиции значительно превышают способности и навыки, поэтому и вопросы и недоверие.
fougasse
Только для вас, так как база слишком низкая и кажется что вот сегодня я знаю в три раза больше чем месяц назад.
Для того чтобы понимать куда стремиться нужен опыт и кругозор, наработка опыта и формирование кругозора требует времени, большого времени. На старте максимум что формируется — это мысль: не, тут мне скучно, работать заставляют, пойду куда-нибудь еще, там вон, говорят, гораздо интереснее и денег больше платят.
Maksclub Автор
Кругозор формируется не только с момента изучения программирования и не только по теме программирования — я пришел в программирование относительно взрослым человеком, и когда:
— тебя обвиняют ежедневно в каких-то косяках запуска нового продукта (к запсуку которого не имеешь отношения),
— публично высмеивают в том, что ты не понимаешь, в чем проблема (а ее нет!, кроме того, что ее в голове нарисовал обвиняющий)
— гнило в лицо заявляют о том, что «ну вообще-то от меня зависит, будешь ли ты тут дальше работать» и «ты слишком стараешься понравиться всем»
— делают с пристрастием ревью на 300 комментариев за час, когда ты сделал АДЕКВАТНЫЙ рефакторинг, пока все болели и ты сидел без тасков
— когда разраб из соседнего отдела прямо в лицо спрашивает «а че твой тимлид с вами разговаривает как с говном?»
начинаешь понимать, что кругозора не работать с мудаками достаточно
И на вопрос «почему в другую команду не пошел» довольно понятен: «какого черта я не ушел раньше?!»
Bavashi
Обычно для этого и ведутся задачи через TMS, чтобы было всем понятно кто чем занимается, кто за что отвечает, кто какую компетенцию имеет.
Так бывает с новичками, которых в новом, состоявшемся коллективе тяжело иногда принимают. Однако, сегодня это выглядит странно, потому что такая «атмосфера» будет сказываться на качестве разработки и ее продуктивности.
Так и хочется спросить: а чё нанимали то?)
Ревью то ладно.
Кажется, что тимлида не спросили когда кого-то нанимали. Иначе как же он так, видел человека при найме, нанял его, а потом он «говно»?
Итог такой: с таким коллективом далеко не уедешь. Обычно бывают hr'ы, которые, помимо обязанностей найма, следят еще и за ситуацией в коллективе и работают над выстраиванием командной работы, а не терок-разборок. Делают они это, например, в виде регулярных анонимных опросов, где просят заполнить поля типа «как у вас дела, что нравится, что не нравится, что стоило бы улучшить» и т.д и т.п. Понятно, что это не везде так, но часть доли ответственности и вины за такой сложившийся коллектив, на мой взгляд, здесь есть и у hr'ов.
skyeff
Тут сложно, вы считаете что проблемы нет, обвиняющий считает что проблема есть, без конкретики и аргументов обоих сторон принять чью либо сторону затруднительно.
Опять же сложно что-то говорить без какой либо конкретики с обеих сторон. С одной стороны должна быть политика компании как брать задачи в работу и, если разработчик следуя этой политике сделал рефакторинг, то он имел на это право. С другой стороны что такого в 300 комментариях к рефакторингу? Какого объема был код, насколько критичный функционал, что с покрытием тестами, автоматизацией тестирования? В общем куча вопросов, и ответ на каждый может изменить позицию в пользу одной либо другой стороны.
Вот только люди, проводящие собеседование, не экстрасенсы. Все что они видят: 3 года опыта, 3 предыдущих места работы, 3 месяца на последнем месте работы — и желание понять, а что же не так с вами абсолютно естественное.
Maksclub Автор
так я же и написал «Не уходите из Яндекса через 3 месяца»
в данной статье исключительно полезные советы
Pavel1114
fougasse
А что тут такого, в принципе?
Даже 20 лет назад было вполне нормальным, на старте картеры менять работодателей даже чаще, ведь скилл с 0 растёт очень быстро, как и понимание, что есть куда стремиться.
То, что сейчас рекрутер носом воротит от аж 4 мест за всего 3 года — лишь показывает, что что-то неладно во всём процессе.
Maksclub Автор
Не воротит, все хорошо…
Если не считать историю у кандидата с уходом из Яндекса через 3 месяца и 10 дней :) и некоторых компаний
fougasse
И что такого в уходе через 3 месяца?
Или уход именно из Яндекса?
3+ месяцам- значит не выгнали с ИС.
Что с компаниями не так? Блин, вас послушать, так вообще страх работу менять.
Maksclub Автор
Именно из Яндекса :)
Ну это были компании Мейл.ру и Ситимобил, плюс еще парочку (в одной вообще гнилой тип был) — огромный акцент сделали на обсасывании проблемы ухода «из рая», в Мейле до техинтервью даже не дошли
Просто автор ветки завел тему сюда…
Maksclub Автор
Если всмотреться в статью, то видно, что некоторые моменты, сопряженные с очень большой скоростью роста. Особенно на первом месте я работал в Новосибирске и в одного
Bavashi
У вас бывало так, что после подписания оффера ваш новоиспеченный тимлид говорит: «А вот теперь я тебе расскажу как у нас тут все обстоит на самом деле»?