что делает junior программист
Записки junior-программиста: как получить первую работу
Не только я в свое время, а многие мои приятели и однокурсники сейчас серьезно обеспокоены вопросом: хочу быть программистом, как начать?
Целью написания статьи послужили не только сомнения в себе моих знакомых. Подозреваю, что количество людей, которые в данный момент думают на этим же вопросом, достаточно велико, дабы моя первая в жизни статья смогла помочь каким-то планом более чем паре друзей.
В чем состоит проблема? Нужно составить резюме, закинув в раздел «Professional skills» пару технологий, соответствующих искомой вакансии, разослать по вакансиям и вроде как должно все получится. Но есть подводные камни:
1) Качество технического образования. Несмотря на то, что моя специальность носит гордое название «Компьютерные науки», в 70% учебной программы знания по предметам даются устаревшие, а преподаватели либо просто пожилые люди, давно отставшие от современных технологий, либо ко всему с крепчающим маразмом. А из этого следует проблема несоответствия требованиям рынку труда студента, желающего стать разработчиком, но имеющего пробелы в понимании современных технологий. Я уверена, что не единственная, кто столкнулся с этим.
2) Неуверенность в себе и сомнения. Начинающий разработчик зачастую элементарно боится пойти на собеседование, считая себя не готовым даже для попытки. Он может неверно оценивать степень своей подготовки. И наконец, этот же человек порой знает только один способ получить работу – например, курсы в той или иной компании. Но ограниченность выбора (у тех же курсов есть временные рамки набора, требования, собеседования) только порождают лишние препятствия и сомнения. Итог — упущенное время.
3) Наличие или получение диплома не по специальности. Хороший разработчик с техническим складом ума может не обязательно быть им по образованию. Но программист-самоучка часто делает то, нравится и то как видит сам. Отсутствие какой-либо системности в полученных им знаниях и пробелы в азах могут стать причинами отказов после прохождения интервью.
Немного о себе: я студентка пятого курса, работать начала с середины третьего, сразу на full-time на позиции Automation QA. В предыдущей компании отработала почти полтора года на двух проектах. В настоящее время работаю на позиции junior java developer в Luxoft. Текущий опыт работы с javа: около 2-х лет.
В сегодняшней публикации хочу предложить вашему вниманию обзор всех известных мне путей, итогом каждого из которых может стать желаемая работа разработчиком (проверенные на практике проиллюстрирую примерами). Все истории, упоминающиеся ниже курсы компаний соответствуют Киеву, камни в огород образованию — КПИ, факультету информатики и вычислительной техники (особо большой валун для моей кафедры).
1. Курсы в той или иной компании.
Luxoft, Epam, Yandex, Global Logic — далеко не весь перечень компаний, которые приглашают к себе на курсы, в интернатуру и тренинг-центры. Много учебных классов открыты в технических университетах.
Плюсы этого варианта очевидны:
• бесплатное обучение
• работа с востребованными на рынке труда технологиями на интересных реальных задачах
• последующее трудоустройство в этой же компании
• в случае смены работы – неспоримый плюс для других работодателей.
К сожалению, минусов не меньше:
• ограничение по времени набора слушателей (зачастую или с начала учебного года или весной). Для тех, кто не успел– ждать и терять время.
• требования к претендентам. Компаниям не выгодно набирать на курсы людей, далеких от IT, поскольку на их обучение и ввод в реальные проекты понадобится больше времени, а значит – больше затрат. Поэтому они предпочитают сотрудничать с определенными факультетами технических ВУЗов, а значит — меньше шансов попасть человеку “со стороны”.
2. Профильные курсы в образовательных центрах
По данному запросу Google услужливо подскажет массу центров, школ и курсов, которые готовы сделать из любого человека Джобса(зачер.) программиста. Главное — желание и серьезный подход к занятиям.
Плюсы данного варианта:
• обучение востребованным на рынке IT специальностям и технологиям
• высокая вероятность трудоустройства по окончанию (у меня было трое коллег в команде, прошедших одни и те же курсы Java в разное время. По окончанию двоих пригласили на интервью hr, а третий сам отправил резюме). В последствии, одному из них эти курсы стали хорошим подспорьем для работы над новым проектом (в котором мне, например, зная только Сore но не ЕЕ, приходилось разбираться походу).
• набирают всех желающих и готовых учиться
Минусы:
• они не бесплатны. Зачастую недоступны для студентов, чья стипендия раза в 2 меньше стоимости месяца обучения там.
• не все курсы одинаково качественные. При выборе центра ориентируйтесь на отзывы реальных людей, а не на рекламу и сладкие обещания гарантированного трудоустройства.
3. Первая работа на позиции automation QA
Начну, пожалуй, со своего примера, ведь это была моя первая работа в ІТ. В целом, практических знаний и минимального опыта для работы разработчиком мне катастрофически не хватало, а вот тестировщиком взяли (несложные вопросы по Java Core и сетям). Я попала на проект, в котором процесс тестирования клиента заключался в написании командой Automation QA Android приложения, отправлявшего по определенным паттернам много разных запросов на разные ресурсы. Так же у нашей команды был свой фреймворк с кучей утилит для анализа логов, tcp dump’ов, поведения девайса, а я получила первый дев-опыт в написании собственной утилиты для конфигурирования ip-tables. А еще понимание модели OSI, опыт работы с клиент-серверным приложением и наконец – пройденный production-проект, факт наличия которого помог в последующем поиске работы. Именно поэтому не считаю работу automation чем-то зазорным, примитивным или плохой ступенью к работе разработчика – прежде чем сказать «нет» нужно хорошо разобраться, в чем она будет заключаться. На втором проекте в этой же компании мне дали задачу покрыть старый функционал unit-тестами, разрешили немного порефакторить. Работа конечно скучноватая, но после нескольких месяцев пошли задачи фикса несложных багов. Таким образом, получила опыт работы с Unit тестированием (Powermock, Mockito) и навык быстро разбираться в незнакомых технологиях (тот же баг в JavaScript).
Выделю плюсы данного варианта:
• при правильном выборе проекта — работа и обучение в одном флаконе (никто ведь не мешает параллельно общаться с разработчиками на своем же проекте, получать от них практические знания, самому что-то читать и писать в свободное время)
• деньги. Очень мотивируют расти профессионально в работе с понравившимися технологиями. Ну и хочется жить не только на стипендию.
• опыт работы production (используя Scrum, системы контроля версий, системы трекинга задач (та же JIRA) и т.д). Вот в университете мне почти ничего такого не рассказывали (до середины третьего курса точно), что-то там о Scrum было на 4-м, C Git познакомилась только в этом году (спасибо преподавателю — Android-разработчику). Это преимущество при поиске следующей работы и во время выполнении задач на ней (когда только устроившемуся junior’у не придется в панике под ночь пересоздавать какой-то бранч, или искать, как поменять коммит потому что сегодня конец спринта, а с тем же Git’ом или пониманием планирования задач непорядок.
• опыт работы с технологиями, который потом можно выгодно подать и продать, рассматривая позиции разработчика. (Например, после своего первого проекта мне хватит знаний претендовать на позицию на проекте с клиент-серверным взаимодействием)
Без минусов, увы, никак:
• даже в случае глубокого погружения в программирование на позиции QA, потом нужно немало попотеть в правильном составлении резюме и подаче своего опыта, дабы пригласили на собеседование на позицию разработчика. Я не говорю, что это жесткое правило, читайте «такое часто бывает» а не «это жесткое правило». А теперь немного проиллюстрирую. Первый пример – мой коллега, Automation QA: без особых усилий нашел новую работу разработчиком в небольшой конторе, где предыдущий опыт не сыграл никакой роли. Второй пример – я. Действительно данный минус открылся мне неприятным фактом при поиске работы разработчиком(не хотели приглашать на интервью), но я правильно составила CV (указав предыдущую позицию, разумеется, но кратко описав все свои responcibilities на двух проектах и общий стаж работы с Java). А еще разослала его везде куда нашла, существенно повысив шансы попасть на как можно большее к-во собеседований.
• риск остаться тестировщиком. Не слишком обременительные обязанности, зарплата не ниже чем у разработчика и простой код расслабляют. В таком случае подумайте, чего вы вообще хотите – много денег, интересные задачи, или не делать ничего.
4. Университетская подготовка, учебные проекты, работа в лабораториях.
В ВУЗах есть масса возможностей чему-то научиться, хорошо поискав. Нравится делать сайты? Напиши\перепиши\саппорти факультетский или каферальный сайт. Хочешь кодить под Андроид? Напиши свое приложение, которым сам, как студент, хотел бы пользоваться. Поищи в университете лаборатории и образовательные центры – вот и первый опыт. Словом, нужно пересмотреть все возможные варианты в непосредственно своей в среде обитания.
Плюсы:
• технический опыт (в случае наличия технически подкованного руководителя качественное дополнительное обучение)
• умение самостоятельно обучаться новому. Мой нынешний преподаватель разработки под Android сделал в качестве своей дипломной работы приложение для студентов нашего университета с расписанием, преподавателями, картой корпусов и университетским радио. Несмотря на некомпетентного в данном вопросе руководителя, он разобрался сам, и после сдачи диплома устроился Android-разработчиком без особых проблем.
Минусы:
• будьте готовы к тому, что ответственность за начатый проект ляжет на ваши плечи, а преподаватель\руководитель может оказаться не компетентным помочь вам технически, но очень дотошным как заказчик.
• забудьте об оплате своего труда (надеюсь, не нужно объяснять, почему).
5. Open source проекты
Здесь уж каждому по способностям и предпочтениям. Выбрав понравившийся проект на том или ином языке, отличное начало — дописать в него несложный функционал либо отрепродьюсить и пофиксить несложный баг. Это возможность поработать над реальным проектом с опытными разработчиками, получая от них feedback и знания. Чтение чужого кода учит не только компилировать его в голове но и сходу находить “узкие места” или некорректную реализацию.
Плюсы: перечислила выше 🙂
Минусы:
• этот способ подготовки не может быть единым, а лишь как дополнение и закрепление знаний на практике.
6. Домашняя подготовка
К ней относится чтение технической литературы, онлайн — уроки, изучение документации, наконец целенаправленная подготовка к интервью. Лучший вариант домашней подготовки — параллельное ведение собственного небольшого проекта и чтение литературы. Придумать приложение, которым пользовался бы сам, разделить на задачи и каждый день по несколько часов разбираться с ними — не сложно. Главное начать. А как писать — Google в помощь, новичку сейчас там можно найти ответ практически на любую возникшую проблему.
Достаточно много плюсов:
• чтение книг и документации дает хорошую базу не только для прохождения интервью, но и на будущей работе
• первый проект можно и нужно выкладывать в открытый доступ, критика других покажет узкие места и возможные пути изменения, доработки, улучшения
• наличие готового приложения (пусть небольшого) — аргумент для работодателя и возможность для интервьюера оценить практический опыт претендента (большой плюс)
• умение самостоятельно планировать время и решать поставленные задачи (это умеет далеко не каждый разработчик, увы)
Минусы:
• первые ошибки, которым не удастся найти решение, и отсутствие опытного куратора, могут отбить желание продолжать вообще. В таком случае, стоит задуматься — а чего ты вообще можешь добиться в этой жизни, если опустил руки от мелкой проблемы? Хм, пожалуй, это больше плюс.
• отсутствие куратора может завести требования, архитектуру или реализацию проекта в “дебри”
7. Комбинация перечисленных выше.
Никто не запрещает работая Automation QA ходить по вечерам на курсы, или учась и делая какой-то проект в университете, дома пилить задачи в Open Source проекте и читать книги. Чем больше вы прилагаете усилий, тем больше имеете шансов получить желаемую работу. Думаю, что в любой комбинации плюсами будут выступать как раз все перечисленные выше варианты. Главный минус, который хочу здесь выделить – откладывание поиска работы «на потом». Постоянно мониторьте рынок, особенно те вакансии, которые касаются интересующего вас языка или технологии. Периодически ходите на собеседования, дабы понимать свой реальный уровень и прогресс.
Я допускаю, что во многих приведенных выше правилах найдутся свои исключения. Но, как известно, они лишь подтверждают правила.
Что значит быть junior-разработчиком
Автор фотографии: Максим Золотухин
Привет Хабр! Хочу рассказать вам о небольшом сообществе junior-разработчиков в Алматы и своём пути junior-разработчика в Казахстанском вебе.
Для начала расскажу немного сухих данных об Алматы. Алматы — по масштабам Казахстана очень крупный город, численностью 1,5-2 миллиона человек. Технических вузов не так много, тем более в которых нормально пытаются преподавать программирование. Очень много мелких веб-студий. Попадаются и крупные software конторы, ориентированные больше на банки и предприятия. В городе нет офиса Yandex, но есть его официальный представитель. Есть два coworking-центра и отстойный 4G интернет. Сейчас мне 20 лет (как и большинству моих знакомых/друзей программистов) и я junior веб-разработчик в студии.
Я бы строить дом пошел, пусть меня научат
За полтора года работы в студии, я научился большему, чем за 4 года в колледже, и 4 будущих года в университете. Не поймите превратно, но классическая схема образования в области IT в Алматы, настолько отстала от жизни, что “учиться” в средних специальных и высших учебных заведениях нет никакого смысла.
На фоне всего этого безобразия, студенты колледжей начиная со 2-3го курса начинают искать работу. Те кому везет, попадают в команды, где их выращивают в полноценных бойцов. Мне повезло. Я попал в лучшую студию, которую вообще можно найти. Всё что у меня было на тот момент, это голодный до знаний взгляд и 20 рублей на сникерс.
Что значит быть junior’ом
Быть джуниором, значит постоянно сомневаться в своих силах и способностях. Вот сидишь ты, молодой и зеленый, смотришь снизу вверх на парней с опытом больше 5-8 лет и удивляешься, как они так быстро находят решения, как они набирают этот чертов код со скоростью пулемета? Я джуниор и почти каждый день я сталкиваюсь с задачами, для которых я не могу сразу придумать готового решения. В тоже время, для других, это кажется не проблема. И часто я останавливаюсь, с мыслью, а всё ли я делаю правильно?
Быть джуниором — значит соревноваться. Когда кто-то из знакомых хвастается, что на проекте он использовал, скажем, Phalcon, невероятная буря эмоций возникает в голове. Интерес, зависть, разочарование в себе. “Блин, этот чувак уже потрогал Phalcon и Solr, а я сижу и всё плагин ковыряю”. Среди моих сверстников и знакомых, всё что я знаю или с чем я сталкивался — это норма. Мы все — постоянно что-то изучаем, пока у нас есть такая возможность. Мы собираемся в баре, или сталкиваемся на каких-то встречах, и постоянно обсуждаем что-то новое.
Быть джуниором — значит искать единомышленников. Любой разработчик из нашей сферы — это в первую очередь коллега и интересный собеседник, а потом уже боец из конкурирующей фирмы. Нам дай только повод поговорить о технологиях, разработке или проектах. Главная проблема в Алматы — это очень маленькое количество событий и небольшое сообщество. Есть конференции, есть какие-то семинары, но они все направлены больше на выжимание денег, пиар каких-то компаний и треп среди бизнес элиты или менеджеров. Событий касающихся именно технологий, где дают какие-то знания или делятся опытом — почти нет. Последним крупным событием, был BarCampCA в 2011 году. С тех пор конференций такого уровня и качества просто не наблюдалось. Есть небольшие тусовки, есть GTUG Almaty, но этого мало.
Быть джуниором — значит косячить. Вы видели когда-нибудь, что случается если джуниору дать доступ на сервер под рутом? А я видел. Мой знакомый в спешке случайно перезагрузил удаленный сервер. Ну а я случайно выгрузил неоттестированный скрипт. Последствия обычно тут же дают о себе знать.
Быть джуниором — значит работать овертайм. Просто потому что ты медленный, потому что что-то не понял, потому что что-то нужно прочесть. Иногда приходится приходить на выходных. И это нормально, потому что ты получаешь опыт и знания.
Быть джуниором — значит испытывать свои силы на соревнованиях и конкурсах. Пытаться сделать что-то важное. Врываться на Hackday с возможно бредовой идеей и ночевать в офисе на столе. Составлять список идей в аккуратную папочку “Будущие проекты”, и мечтать их сделать под лозунгом “Проект выходного дня”.
Быть джуниором — значит искать себе новых примеров для подражания. Стараться перенимать любой опыт и постоянно смотреть вверх. Задавать глупые вопросы на семинарах и ловить на себе насмешливые или снисходительные взгляды. Радоваться даже небольшому диалогу с SamDark’ом, смотреть онлайн трансляции с конференций в 3 часа ночи, сидеть в IRC на RadioT.
Без опыта в IT: как junior-программисту найти первую работу
Бизнес-процессы уходят в онлайн. Всем нужны удобные сайты и приложения, чтобы привлекать больше клиентов. Компании перебивают офферы друг друга — хотят заполучить нужного специалиста как можно быстрее. И не важно, что дорого. Спрос растет быстрее предложения. Дефицит кадров ощущается все острее. Именно так проживает 2021 год рынок труда в IT-сфере.
Исследование HeadHunter показывает, в России сохраняется низкая конкуренция и высокий спрос в IT: на одну вакансию претендуют до двух кандидатов. А программисты остаются самыми востребованными специалистами — 49% вакансий от общего числа в отрасли.
Зарплаты разработчиков увеличились на 30-80% за время пандемии, и рост продолжается. Все больше компаний соглашаются на условия самого кандидата — хотят быстро договориться с подходящим соискателем и не потерять его.
Когда на рынке высокий спрос, разработчику без опыта трудоустроиться легче. Но надо понимать, что профессия требует постоянного развития и обучения. Руководители ожидают, что junior-специалист быстро дорастет до следующего грейда, иначе тратить на него время никто не захочет. В статье расскажем, как начинающему программисту найти первую работу. Советами поделились опытные разработчики:
Константин Военков
Руководитель разработки онлайн-университета Skypro
Николай Субоч
Ведущий разработчик в Тинькофф Банке, ведущий эксперт курса онлайн-университета Skypro
Михаил Черемухин-Рерберг
Middle-разработчик в Альфа-Банке, ментор в онлайн-университете Skypro
Как попасть в профессию
Ситуации, когда работу выбирали один раз и на всю жизнь, остались в прошлом. Руководители реагируют уже не так остро, если встречают кандидата из другой сферы. А чаще даже не встречают — удаленный формат работы и найма стал привычной практикой, тем более в IT-направлениях. Начать карьеру в разработке можно разными способами. Остановимся на трех основных.
1. Учитесь в профильном вузе
Классическое образование отличается тем, что теории дают много, но как применять знания на практике понятно не всегда. Четыре года обучения пролетают, а выпускник даже не представляет, чем он будет заниматься на работе. Как студенту получить опыт в процессе учебы рассказал Николай Субоч:
«Типичный junior — выпускник университета или студент старших курсов. Он может поинтересоваться стажировками от крупных компаний. Обычно университеты сотрудничают с работодателями и дают такую возможность своим студентам. Например, устроиться на летних каникулах на интересную стажировку и попрактиковаться. Возможно, поступит предложение остаться в штате.
Другой вариант — выпускник готовит дипломную работу со своим научным руководителем по теме Computer Science. Тогда сам преподаватель может подтолкнуть студента выступить на профильных конференциях по своей теме. Мир IT узкий. Выпускник узнает о стажировке из таких мероприятий или от научного руководителя».
2. Учитесь на курсах
Онлайн-образование предлагает программы, в которые входит помощь в трудоустройстве. Вы учитесь до 10 часов в неделю, совмещая работу и личную жизнь. В конце курса представители онлайн-университета помогают вам подготовиться к собеседованиям и составить резюме.
Михаил Черемухин-Рерберг вспоминает, как получил первую работу программиста:
Главный критерий, который мне помог устроиться, и поможет другим — работодатель должен понять, собираетесь ли вы развиваться самостоятельно. Если вы способны обучаться сами, большой пласт проблем уходит — вы не бегаете с каждым вопросом к старшему, не отвлекаете его. Вы ищете решение и разбираетесь сами».
3. Изучаете программирование самостоятельно
Пожалуй, самый сложный и долгий путь. Выучить язык программирования нетрудно. Но для работодателя важнее, чтобы вы понимали процессы разработки, знали принципы и подходы программирования, разбирались в основах Computer Science. Все это сложно освоить без наставника. А когда в приоритете основная работа и семья, времени на обучение уходит больше: вас некому подгонять, вы начинаете и бросаете несколько раз.
«У работодателя будут дополнительные вопросы к junior-специалисту, если он во взрослом возрасте решил сменить профессию и освоить разработку самостоятельно. Все компании хотят брать новичка, который за год-два вырастет до уровня middle. А если человек долго остается на позиции junior, от него пользы меньше, чем потраченного времени».
Как проходит собеседование у новичка
Работодатель понимает, что обсуждать прошлый опыт с начинающим разработчиком бессмысленно. Практических кейсов либо нет, либо они не относятся к программированию. Разберем, что проверяют на собеседованиях у начинающего разработчика.
➤ Мотивацию и способность к обучению
Каждый руководитель понимает, в junior-специалиста придется вкладывать много времени и сил. Поэтому выбирает себе заинтересованного и самостоятельного сотрудника, чтобы быстро вырастить его до middle-разработчика.
«Я смотрю, какие знания у кандидата и их динамику. Если специалист получил свои знания за короткий период времени — для меня это хороший знак. Значит, он легко обучается и быстро дорастет до следующего уровня»
«Я спрашиваю, как человек развивается в профессии: что читает, слушает, интересуется ли смежными областями. Проверяю общую эрудицию в отрасли».
➤ Навыки общения
«Программист не просто пишет код, он решает проблемы. Поиск решения и определение проблемы — важные этапы разработки. Программирование — это про борьбу со сложностью. Чем проще вы решаете проблему, тем лучше. Чтобы выбрать оптимальное решение для конкретной задачи, приходится общаться и понимать людей с другим мировоззрением. Поэтому программисту важно развивать soft skills».
Не переживайте: в первый рабочий день вам не поручат вести переговоры и защищать проект перед советом директоров. Первое время вы работаете в основном со своим руководителем. Он ставит перед вами задачи и помогает адаптироваться в компании. Со временем вы освоитесь, познакомитесь с коллегами и поймете, как улучшить свои навыки коммуникации.
➤ Фундаментальные знания
Процесс найма программистов сильно отличается от компании к компании. Одни работодатели задают теоретические вопросы по чек-листу и фиксируют, правильно вы ответили или нет. Другие — выводят на простой разговор, чтобы разрядить обстановку. Иногда вам дают тестовое задание, вы делаете его в указанные сроки и отправляете на проверку.
«Junior-разработчика любят спрашивать про базовые алгоритмы и структуру данных. Проверяют мыслит ли он в терминах Computer Science. Просят реализовать несложную задачу на языке программирования. Если хотите подготовиться к алгоритмическим секциям, заходите на сайт leetcode.com. На нем весь мир тренируется решать алгоритмические задачи».
➤ Практический опыт
От начинающего разработчика не ожидают успешных рабочих проектов, но учебные кейсы лучше иметь. Так вы на практике покажете свой уровень знаний. У работодателя будет меньше вопросов — процесс трудоустройства пройдет легче.
Программисты используют хранилище кодовой базы, куда сохраняют свои проекты. Одно из них — GitHub. Это хороший способ показать работодателям, что вы умеете, и как развивались ваши навыки.
Три главных совета junior-разработчикам от опытных коллег:
✔ покажите заинтересованность и желание развиваться самостоятельно — руководитель должен быть уверен, что вы быстро станете middle-разработчиком;
✔ подготовьте практические проекты, они могут быть учебными — работодатель поймет ваш уровень знаний и количество вопросов к вам сократится;
✔ соблюдайте культуру общения — проявляйте уважение к собеседнику, будьте вежливы и открыты. На старте карьеры soft skills ценятся высоко.
Где учиться на разработчика
Если вас привлекает IT-сфера, вы хотите быстро развиваться, работать удаленно и оставаться востребованным специалистом, за которого борются компании, — присмотритесь к курсам онлайн-университета Skypro.
Вы закончите программу уверенным junior-разработчиком: создадите практические проекты для портфолио, разберетесь в индустрии, поймете, как работать в современных IT-командах. Наставники и кураторы курса поддержат вас в процессе учебы. А HR-специалисты подготовят к собеседованиям и помогут найти первую работу.