Поиск работы в московском IT: Junior Developer

В этой статье я решил поделиться своим опытом в решении одного из самых интересных и животрепещущих вопросов, который
возникает перед каждым начинающим специалистом в области IT, а именно “поиск первой полноценной работы по специальности”.
Сразу отмечу, что под “полноценной” в данной статье воспринимается постоянная работа с гибким графиком на неполную неделю.
Данная статья предназначена, прежде всего, студентам очных отделений московских ВУЗов. Ее цель – показать, что карьеру
специалиста в области IT можно (и, имхо, нужно) строить уже в студенческие годы.

Я ориентировался на позицию Junior .NET Developer'а.
Итак, начнем.

Первоначальный опыт

Начните действовать! Первоначальный опыт разработки — ключевой этап на пути к профессиональному росту. Получение
данного опыта – вопрос весьма интересный. За весомые вехи в вашей начинающейся карьере могут сойти интересные институтские
наработки: курсовые проекты, практика на кафедрах, рефераты и т.д. Кто-то участвует в удаленной разработке, кто-то участвует
в реализации OpenSource проектов, кто-то пишет для себя. Имхо, самый выгодный вариант – удаленная разработка. К минусам
можно отнести жутко низкую оплату труда в начале трудового пути и отсутствие возможности учится у коллег по работе. К плюсам
относится тот факт, что сегодня удаленная разработка defacto – стандарт для входа на рынок начинающих специалистов,
соответственно данный опыт расценивается работодателем весьма положительно. Если повезет, то навыки, полученные при удаленной
работе, смогут занять достойные позиции в вашем резюме, например, умение работать с VSS. Программы, которые пишутся для
себя, тоже могут привнести интересные факты в резюме и также являются плюсом. Только не переборщите с выбором “примеров”
своей деятельности в резюме – можете вызвать в лучшем случае насмешку, в худшем – непонимание. Еще один факт, который будет
ставиться вам в плюс – умение грамотно доносить информацию и излагать свои мысли в печатном виде, поэтому хорошо припомните
все написанные рефераты и оцените их привлекательность с точки зрения работодателя. Читать ваше сочинение вряд ли кто-то
будет, но на язык, стиль оформления и тематику внимание обратят.
С точки зрения полезных и важных навыков также следует уделить особенно внимание различным общим алгоритмическим
задачам, в частности, работе со структурами данных: списками, деревьями и т.д. Часто возникает необходимость применения
побитовых операций с целочисленными переменными. В эту же кучу знаний, которую желательно иметь перед собеседованием, стоит
кинуть понятие машин Тьюринга, конечных автоматов, регулярных выражений и т.д. Вообще, на собеседованиях в крупных серьезных
компаниях в качестве задания не редко предлагаются задачи на умение построения алгоритмов, например проверки корректности
расстановки скобок в арифметическом выражении. Здесь есть два важных момента. Первый заключается в том, что в своей
профессиональной деятельности с задачами подобного рода вы можете не сталкиваться в принципе. Это, скорее, тот опыт, который
можно получить только на студенческих олимпиадах по программированию, при выполнении курсовых работ или при чтении книг,
посвященных алгоритмизации. Скорее всего, в большинстве контор, ориентированных на разработку, некоторые из этих знаний не
потребуются в качестве базиса для начинающего специалиста, но для крупных организаций ваше владение данными методологиями,
понятиями и алгоритмами может являться потенциальным знаком вашего приоритета перед остальными соискателями. Второй момент
заключается в отношении работодателя к подобного рода задачам как таковым. Цель каждой из них – проверить ваши аналитические
способности и знание общей алгоритмической базы.
Резюмируя, отмечу, что очень многое зависит от типа конторы, в которую вы идете. Кто-то понимает, что для быстрой
интеграции в процесс разработки для вас важны одни навыки, для других эти навыки не сыграют определяющей роли без наличия
других.

Плацдарм

Итак, вы уже обладаете небольшим опытом работы и интересными разработками. Отлично! Теперь самое главное – создать
свое портфолио. Нужно четко определиться с тем, что войдет в список ваших достижений, навыков и опыта. Определитесь с
технологиями, с которыми вам приходилось работать, и с которыми вы бы хотели работать дальше (т.е. повышать квалификацию).
Это даст работодателю почву для размышления и выбор вашего потенциального направления применительно к своим текущим/будущим
разработкам. Четко опишите реализованные проекты: дайте им общую характеристику и выделите 3-4 ключевые задачи, которые вы
решили в рамках проекта. Соберите информацию о своих институтских достижениях. После этого вы сможете детально спланировать
свое резюме. Про написание резюме не скажу ничего нового и только посоветую – ОЧЕНЬ внимательно изучите ВСЕ материалы,
доступные на RSDN по этому поводу. Имхо, очень важный момент подготовки портфолио – создание своего сайта-визитки. Этот этап
может оказаться лишним, но, если вы его реализуете, ваша цена несомненно возрастет. Смысл в сайте есть: там можно выложить
всю информацию потенциально интересную работодателю, начиная от картинок реализованных проектов, заканчивая диаграммой
предполагаемого рабочего графика. В любом случае – пафос нравится людям, но… будьте сдержаны — лучше выдержать максимальную
строгость (ваших стихов и фоток любимого кота там быть не должно), информативность и наглядность информации. Кроме сайта
можно задуматься о личных визитках – на первый взгляд вещь ненужная, но, поверьте, когда они у вас будут, ваше мнение
кардинально поменяется.

Поиски

Итак, портфолио создано, необходимые технологии изучены, хостинг оплачен, визитки в печати. Отлично! Полпути уже
пройдено. Теперь необходимо переходить к непосредственным поискам будущего места работы. Но перед этим надо определиться вот
с чем. Реалии рынка таковы, что при желании/возможности/необходимости нанять на работу начинающего специалиста любого
работодателя интересуют, прежде всего, два вопроса:

* Сколько времени вы готовы уделять работе? При этом имеется в виду количество часов, которые вы готовы посвящать работе в
рабочую неделю (ваше желание поработать в субботу и воскресенье обычно (но не всегда!) совершенно никого не интересует), а
также рабочий график. Имхо, работодатель будет рассматривать вашу кандидатуру при условии, что ваше рабочее время будет в
районе 30 + (бонус) часов в неделю, т.е. как минимум 3 полных рабочих дня + гибкий график по другим дням.

* На какую зарплату вы рассчитываете? Безусловно, вопрос логичный. В среднем по Москве зарплаты на Junior начинаются с 500$
и продолжаются до 1000$. Все что между, четко зависит от вашего рабочего графика, опыта и того, как вы себя продадите.

Определившись с этими ключевыми вопросами можно переходить к непосредственному поиску работу. Искать, ясное дело, надо
в Интернете. Идем на сайт hh.ru, job.ru и т.д., поиском находим схожие с нашими возможностями вакансии (Junior Developer,
программист-стажер, от 20-21 лет, опыт работы от года и др.) и отсылаем резюме по указанным адресам. Чем больше пошлете писем
с просьбой рассмотреть вашу кандидатуру, тем выше шансы, что вам ответят. Я, отослав резюме по 33 электронным адресам, в
течение последующих трех дней договорился о пяти собеседованиях, а три отклонил из-за долгой дороги до работодателя. Также
свое резюме можно разместить на популярных программистских форумах в Интернете, на том же RSDN’e, например.
Резюме ваши будут попадать к людям трех типов: 1) работники кадровых агентств 2) работники отдела кадров компаний 3)
менеджерам проектов. 1) и 2) тип – существа сугубо женского пола, по телефону или почте будут задавать два главных вопроса,
описанные выше и приглашать на собеседования. Работники кадровых агентств могут предложить сразу несколько вариантов и
подержать ваше резюме некоторое время у себя. С ними нужно говорить крайне вежливо и учтиво – велика вероятность, что они
подберут под вас вакансию и сообщат вам о ней со второго или третьего звонка. 3) тип обычно представляют мужчины, могут сразу
задать несколько вопросов технической направленности по резюме. Кроме того, они обычно и проводят собеседование.
Кто-то считает, что три собеседования в день – это жесточайшая жесть. В нашем случае рисковать также не стоит –
максимум можно назначать два собеседования на первую и вторую половину дня, а лучше всего – одно. Поэтому еще один совет:
планируйте свои дела и встречи на бумаге, заведите блокнот или ежедневник. В пользу одного собеседования в день играет и тот
факт, что очень часто нельзя точно предположить, сколько по времени будет длиться собеседование. По моему опыту собеседования
делятся на три типа: короткое (менее часа), обычное (около часа), долгое (около трех часов и более).

Собеседование

Вызов на собеседование – это приятно. Прежде всего, это тот же опыт, только в области психологии общения. К собеседованию
стоит подготовиться. В принципе, есть несколько вариантов. Первый заключается в том, чтобы пролистать любимые книги и
документы по заявленным технологиям и повторить то, что вы редко использовали в своей практике. Приведу пример. Мне было
назначено собеседование в 10:30. Просыпаюсь в 6:30, завтракаю, затем открываю Троэлсена и начинаю листать книгу со второй
главы. Если вижу незнакомый или позабывшийся термин, выписываю его на листе бумаги. В итоге составил список из 15 важных
моментов по языку. На собеседовании у меня спросили 4-5 вопросов по повторенной тематике с техническими подробностями. Кроме
того, в Интернете существует масса сайтов с вопросами для собеседований по разным направлениям. Вполне вероятно, что
работодатель также воспользуется представленной там информацией.
В любом случае, у любого молодого специалиста в любой области есть огромный бонус, данный самой природой его положения
– никто не требует от него глубокого опыта в определенных областях. Если он есть – то это очень хорошо, если его нет – то
работодатель должен об этом узнать или из ваших слов или по ответам на свои вопросы. Кроме того, эта фраза не означает, что,
прочитав несколько книг, вы легко найдете работу программистом, при этом ни разу не реализовав проект средней сложности. Суть
в другом. Когда вы будете декларировать свои знания, никто не будет проверять то, как четко вы владеете данной
технологией/утилитой/подходом и т.д. (кроме, возможно, самой базы – в нашем случае – языком программирования). Главное – это
понимание. Понимание основных концепций, а не кристальная техника реализации возможностей технологии интересует работодателя.
Важно! Мысли, изложенные в этом абзаце не всегда совпадают с мнением работодателя Иногда, вас будут спрашивать о том с чем
вы в своей деятельности не сталкивались – это момент не приятный, но терпимый. Если попали в такую ситуацию, говорите
просто: “Не готов ответить”. И все, ни оправданий, ни извинений… не надо. Ведите себя достойно и уверено. Если собеседование
полностью состоит из таких вопросов, то варианта два: либо у вас отшибло память, либо, по какой-то непонятной причине, вы
идете не на ту позицию… Анализируйте и будьте готовы к этому психологически.
Приведу еще один пример. Мое первое собеседование. Начинаю с описания предыдущего опыта работы: что за проект, тип
реализации (у меня была удаленка), выполненные в рамках проекта задачи и подходы к их решению. По ходу повествования получаю
встречные вопросы, отвечаю сходу, так, как думаю, предлагаю и анализирую различные решения (если уже был опыта реализации
задач, достойных портфолио, то эта беседа будет протекать крайне непринужденно). Далее следует беседа о заявленных мной
технологиях: как и где использовал и на каком уровне. Я отвечаю, где-то говорю о том, что практического опыт работы не имел,
но хочу развиваться в данной области, где-то упоминаю базовые концепции. Далее несколько общих философских вопросов, после
чего следует блок технических вопросов по языку C#.
Перед собеседованием очень важен ваш настрой. Вы даже можете пойти на некоторую хитрость: если у вас несколько
предложений, выберите для первого собеседования наиболее территориально удаленную от вас контору. Смысл в том, что вы заранее
будете знать, что вакансия в данной конторе вам не подойдет и цель данного собеседования – не получение рабочего места, а
получение опыта разговора. Если этот опыт будет удачным, вам будет проще при следующих встречах с работодателем. В случае
если вам откажут, не тушуйтесь и четко проанализируйте свои ошибки, что бы не повторить их вновь. Также отмечу, что
собеседование – это не экзамен, а именно беседа, зачастую с очень интересными в профессиональном плане людьми.

Теперь самое интересно – типы людей, которые могут проводить с вами собеседование. Тип собеседника в данном случае
характеризуется манерой вести разговор, структурой собеседования, и некоторыми другими деталями. Все изложенные ниже факты
действительно имели место, но не в коем случае не относитесь к ним как к догме – это лишь часть моих субъективных наблюдений.

1. Менеджер проектов. Назовем этого человека именно так, поскольку его основная профессиональная функция – управление. Эти
люди встречаются как в крупных, так и мелких конторах. В полнее вероятно, что в данной компании этот человек новый,
привносящий современные тенденции менеджмента. Обычно такие люди сразу смотрят вам в глаза, ведут себя уверено и, возможно,
немного нагловато, оценивают вас по всевозможным критериям, в том числе и по вашему внешнему виду. Эти люди очень грамотно
ведут беседу, располагаются напротив вас, любят задавать много встречных вопросов и получать четкие, информативные ответы.
Эти люди готовы слушать, но заговорить себя они не дадут. Они всегда проводят структурированные собеседования: сначала вас
спросят про ваше прошлое место работы или указанный опыт, затем побеседуют по всем упомянутым в резюме технологиям, после
чего последует блок технических вопросов. Собеседование обычно заканчивается фразой: “Есть ли у вас к нам вопросы”? Если вы
подходите на данную позицию, вам, скорее всего, сообщат об этом сразу и, что очень характерно, рассчитают до центов вашу
предполагаемую зарплату. Также этот человек четко опишет ваше рабочее место, упомянет о самых мелких деталях – обедах,
минеральной воде в офисе, возможности покупать книги за счет компании и т.д. В крупных компаниях вам будут говорить, что
результат собеседования будет известен в течение двух-трех рабочих дней и в случае положительного решения вам перезвонят.
Могут дать проверочное задание на дом. Имхо, данный тип собеседника самый предпочтительный, поскольку такие люди проводят
настоящие “true” собеседования и сильно закаляют на будущее.

2. Колоритный программист. Представьте, что вас разбудили ночью и с просони попросили описать “программиста”. Вот именно
этот, первоначально всплывший в вашем сознании, образ и есть представитель данного типа. Это, чаше всего, старший программист
с приличным опытом работы, возможно стоявший у истоков компании. Обычно таких людей можно распознать по поведению и внешним
чертам. Они очень часто носят очки. Установка визуального контакта – лично ваша пререготива: ваш собеседник может на
протяжении всего разговора смотреть вам на руки, в сторону или на резюме. Обычно, такие люди напряжены. Они редко садятся
напротив вас, а чаше всего располагаются сбоку на ближайшем стуле. Беседа протекает вяло и обычно начинается со стандартного
вопроса о предыдущем месте работы. Вот теперь внимание! Следующие 5-7 минут самые важные! Если вы будете четко говорить,
грамотно использовать терминологию и интонацию, то на этом ваше собеседование может очень скоро завершиться, причем с
положительным результатом. Понять это можно по следующим признакам: сначала вам зададут несколько общих вопросов по
технологиям, а потом ваш собеседник, возможно неожиданно, решит рассказать вам о компании, разрабатываемых проектах и планах
на перспективу. А могут и просто спросить, о том, какие у вас есть вопросы и все это на 10-15 минуте разговора. Вас
спросят про желаемую зарплату и рабочий график; никаких деталей про рабочее место, бонусы и т.д. вам не сообщат, поэтому либо
сами задавайте такие вопросы, либо оставьте эти детали на потом. Не знаю насколько реально попасть на данный тип собеседника
в современных коммерческих конторах, но в конторах с гос. заказами это вполне вероятно.

3. Фанаты. Да… эти люди действительно фанаты своего дела, и с профессиональной точки зрения – настоящие волшебники, хакеры в
лучшем понимании этого слова. Собеседование с такими людям (обычно двумя-тремя) надолго оставит у вас впечатление. Обычно это
средняя контора с неформальной атмосферой, пропитанная духом творчества. Здесь вы не встретите людей старше 30, возможно
сразу заметите студентов. Эти люди, прежде всего, – команда, часто нацеленная на новые “startup” проекты, соответственно, для
них одна из приоритетных задач – узнать, что вы за человек и как быстро вы вольетесь в командный процесс. Будет очень много
общих вопросов, начиная от ваших оценок в школе, заканчивая предпочтениями в музыке. Разговор будет крайне живой, с нотами
юмора, возможно к вам сразу будут обращаться по имени или на “ты”. Будут и алгоритмические задачи, и вопросы технического
плана. Возможно, спросят про последнюю прочитанную книгу и про книгу, которую вы считаете для себя наиболее важной с
профессиональной точки зрения. Возможно, перед собеседованием или после вам предложат реализовать несколько задач в виде
программ на любом языке программирования и дадут на это 2-3 дня. Кстати, могут особо обратить внимание, что новые проекты
рассчитаны на крупные сроки от двух и более лет. Обратят внимание и на то, что придется много и усиленно работать. В общем,
постараются максимально вас понять и оценить с точки зрения перспективы.

4. Девушка-собеседник. В крупных компаниях обычно приняты двухэтапные собеседования: сначала вы общаетесь с работником отдела
кадров, обычно девушкой, а затем отправляетесь к менеджеру проектов. Ну, с девушками всегда все просто. На них можно и нужно
производить впечатление с помощью четкой размеренной грамотной речи, уверенного, но не наглого, поведения. Хорошо применить
некие моральные козыри, например, при ответе на вопрос о том, почему вы хотите стать программистом, свести ответ к семье,
детям, будущей жене и прочей синтементальной байде. Обращается так же пристально внимание на ваши успехи в учебе, поэтому
прикиньте на досуге свой средний бал в институте. Со всем сказанным соглашайтесь и будьте любезны, постарайтесь понравиться.

Теперь я бы хотел привести список заданных мне вопросов и предложенных к решению задач.

Общие вопросы:
1. Расскажите о предыдущем месте работы. Почему вы ушли оттуда?
2. Расскажите о своих родителях.
3. Каков ваш средний бал в институте?
4. Каковы были ваши оценки в школе?
5. Каковы ваши предпочтения в музыке?
6. Как вы обычно проводите свое свободное время?
7. Какой город Европы вам понравился больше всего?
8. Какую последнюю книгу вы прочитали?
9. Какая книга оказала на вас самое большое впечатление?
10. Сколько времени вы готовы уделять работе?
11. Каков ваш возможный график?
12. Когда вы готовы выйти на работу?
13. Вы курите? Как часто колитесь?
14. Как насчет полного рабочего дня по субботам?
15. Как вы относитесь к необходимости поддерживать корпоративный стиль?
16. Готовы ли вы на 10 часовой рабочий день?
17. Кем вы видите себя через три (два, один) года?
18. Когда вы заканчиваете институт?
19. Какую компанию вы ищите?
20. Что вы готовы сделать для компании, в которой будете работать?

Общие технические вопросы:
1. Как вы представляете себя обязанности Senior Developer’а?
2. Почему вы хотите работать программистом?
3. За счет каких свойств современные средства разработки компании MS способны повысить производительность программиста?
4. Каковы отличия между технологиями ADO и ADO.NET?
5. Каковы отличия между технологиями ASP.NET, PHP и Perl?
6. Что такое полиморфизм?
7. Каковы основные концепции ООП?
8. Насколько хорошо вы знаете ту или иную технологию?
9. Готовы ли вы разбираться в том-то и том-то?
10. Какие направления вас интересуют больше (реализация серверной логики, реализация алгоритмов, использование WinWorms, БД)?
11. Почему вы выбрали именно такое-то направление (например, .NET, а не С++)?
12. Какие эвристики вы применяли при решении этой и этой задачи? Что такое эвристика в принципе?

Технические вопросы:
1. Модификаторы private и protected. Отличия.
2. Какова разница между выражениями: a++ и ++a. Привести пример кода.
3. Что такое Generics и какие проблемы они решают?
4. Рассказать о модификаторах параметров методов класса: in, out, ref.
5. Написать процедуру удаления произвольного элемента из односвязанного списка.
6. Написать процедуру реверсирования строки.
7. Поменять значения двух переменных типа int, не используя третей переменной.
8. Приведение типов в C#.
9. Что такое sealed class?
10. Что такое abstract class? Отличия от интерфейса.
11. Виды типов в С#.
12. Для чего нужен интерфейс IDisposable?
13. Можно ли переменной типа int задать значение null? Привести пример кода.
14. Как установить в единицы самый правый нулевой бит в произвольном целом числе не используя циклов и рекурсии?
15. Написать SQL запрос, который выбирает ФИО всех студентов у которых не менее 5 двоек и количество полученных ими пятерок
из двух таблиц Students(ID, FIO), Marks(StudID, Mark).
16. Написать программу на любом алгоритмическом языке, проверяющую правильность расстановки круглых “()“ и квадратных скобок
“[]” в арифметическом выражении (возможны модификации задачи).
17. Чем машина Тьюринга отличается от конечных автоматов?
18. Что такое сериализация? Для чего она применяется?
Также будьте готовы к применению UML и паттернов проектирования.

Резюмируя, отмечу, что двух одинаковых собеседований, наверное, не бывает. Часто попадаются одни и те же задачи,
звучат одни и те же вопросы, но большая часть разговора – вещь не предсказуемая.

Заключение

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

Удачи в поисках! Верьте в себя.
Автор: Vikont    Оценить