Всем привет. Меня зовут Костя, я студент 4 курса ХНУРЭ кафедры программной инженерии (ПИ). Год назад я попал на стажировку в Sigma Software, а по ее успешном завершении стал Junior .NET разработчиком.
Расскажу немного о себе. Я поступил в ХНУРЭ в 2013 году и тогда еще практически не умел программировать. Я был знаком c Pascal, который мне преподавали в школе. Это примерно уровень bubble sort.
Мне очень нравилась учеба в университете, и практически все свободное время я уделял ей. Программирование поначалу давалось очень тяжело. Мне было сложно во всем: первые циклы и ifы, Python, С#, ООП казались чем-то страшным и непонятным. И самое ужасное, что я совсем не знал английский язык. Я забивал на него в школе и почти все, что мог сказать, это: «London is the capital of Great Britain». При этом я не понимал, что значит is в этом предложении...
В университете я понял, что в IT без иностранного никуда, и пошел на курсы. Они здорово мне помогли, и за год я смог достаточно хорошо освоить английский. Было очень круто чувствовать, когда идешь с занятий, что у тебя мысли потихоньку формулируются на английском вместо русского.
Я смотрел на IT-компании и мечтал работать в одной из них. Красивый большой офис, крутое рабочее место с интересным проектом. На тот момент это казалось недостижимым. Где-то в начале второго курса я начал рассылать своё резюме, но второкурсника со слабыми техническими знаниями, без опыта и с не самым лучшим английским никуда не брали.
Помню, я отправил резюме в какую-то компанию, и мне прислали тех. задание. Нужно было сделать WPF-приложение — текстовый редактор. Я не очень понял детали поставленной задачи и задал в письме вопрос, который оказался очень нелепым. Ответ пришел достаточно быстро, после которого мне захотелось провалиться под землю: «После такого вопроса вам нет смысла продолжать тестовое задание». Я был очень подавлен. Если честно, то вопрос реально был дурацкий и лучше бы я его не задавал, но тем не менее я все-таки доделал задание. Спустя несколько дней мне ответили и сказали, что решение слабое.
Прошел еще один год, я подтянул знания и после завершения второго курса устроился на свою первую работу в маленькую продуктовую компанию Mocoding. Она стала отличным стартом для меня, там я получил свой первый опыт работы на небольших проектах.
Мое знакомство с Sigma Software произошло на третьем году учебы. В ХНУРЭ преподают предмет «Анализ требований программного обеспечения», цель которого — изучение методологий разработки ПО и в частности Scrum. Кафедра ПИ сотрудничает с многими IT-компаниями в Харькове, одной из них была и остается Sigma Software.
Особенностью этого предмета было то, что в течение семестра группе студентов необходимо разработать учебный проект под руководством специалистов компании. Они выступали в роли product owner и помогали студентам изучить Scrum.
Во время совместной работы я проникся атмосферой компании и познакомился с классным тренинг-менеджером «Сигмы» — Андреем Сомовым. По окончании работы всех студентов, успешно защитивших свои проекты, наградили призами.
Нашей команде достался довольно строгий ментор, с которым мы смогли найти общий язык и получить хороший результат от совместной работы. Затем нас пригласили в офис. На этой встрече я узнал от Андрея об интернатуре и о том, как в принципе студент может начать свой профессиональный путь в Sigma Software. После рассказов дружелюбного и открытого тренинг-менеджера Андрея Сомова мне безумно захотелось стать частью команды.
Через некоторое время Андрей сообщил о наборе в Xamarin интернатуру. Я имел туманное представление о Xamarin и мобильной разработке. Было немного страшно, потому что мне казалось, что я даже не пройду техническое интервью, но тем не менее решил попробовать. Я отправил резюме, и через неделю со мной связался рекрутер и пригласил на первое собеседование.
Отбор
Процесс отбора в Sigma Software проходит в два этапа: техническое собеседование и собеседование с HR и Department Manager.
К техническому собеседованию я не готовился, потому что времени учить Xamarin просто не было. К середине третьего курса у меня сформировался хороший фундамент из теоретических знаний и полугодового коммерческого опыта. Пусть на небольших проектах и в небольшой компании, но тем не менее этого хватило с головой, чтобы успешно пройти интервью.
На собеседовании присутствовали два технических специалиста. Все прошло гладко. Ничего сверхъестественного не спрашивали: различия между интерфейсами и абстрактными классами, инкапсуляция, наследование, полиморфизм, базы данных и SQL, базовые знания про типы в .NET, упаковку и распаковку типов и все в этом духе.
Если честно, я даже получил удовольствие от собеседования. Мы разговорились, это не было похоже на экзамен, все прошло в приятной и дружеской атмосфере. В ходе собеседования про Xamarin меня спрашивали совсем немного. Если быть точным, то есть ли у меня хоть какой-то опыт работы с ним и вообще имею ли я представление о том, что это. Мне объяснили, что опыт в Xamarin это плюс, но далеко не самый важный критерий отбора, т. к. Xamarin я и буду изучать в интернатуре.
Я ушел со встречи довольным. Мне пообещали перезвонить в течение четырех рабочих дней и объявить результат. Через 3 дня меня пригласили на следующий этап отбора.
Во время встречи с нашей университетской командой Андрей Сомов говорил о том, что в компании ценятся не просто хорошие технические специалисты, а зрелые люди с конструктивным подходом. Он рассказывал про случаи, когда достаточно сильные ребята после успешного первого собеседования не проходили второе, и что собеседование с department manager очень серьезное, и его не стоит недооценивать. Поэтому я особо не расслаблялся и не напрасно.
Второе собеседование прошло куда сложнее, чем первое, потому что теперь ребята пытались максимально раскрыть мои персональные качества, соответственно, было много личных вопросов. Это не были глупые вопросы вроде «Почему вы выбрали „Сигму“?». Они максимально раскрывали мой характер, темперамент, стрессоустойчивость, что мною движет по жизни, командный я игрок или нет, как я веду себя в критических ситуациях и все в этом духе.
При этом собеседование проходило в достаточно непринужденной форме, но меня, студента-третьекурсника, вопросы очень настораживали, и я боялся ляпнуть что-то не то. После собеседования мне сказали, что ответа, как и прежде, стоит ожидать в течение
Совсем скоро мне перезвонили и сказали, что я успешно прошел интервью и меня принимают в интернатуру. После звонка я получил письмо со всей необходимой информацией и датой, когда мне нужно приехать в офис.
Интернатура
Интернатура продолжалась 3 недели, в ходе которых по пять часов ежедневно мы проводили в офисе. В первый день я познакомился с еще одним интерном. Он тоже учится в ХНУРЭ, но на курс младше. На момент старта интернатуры он был на втором курсе, а я на третьем. «Сигма» обычно проводит групповые интернатуры, но наша стала небольшим исключением, хотя ее тоже можно назвать групповой.
Наш ментор оказался прекрасным наставником, который смог дать нам качественные знания, необходимые для работы на будущем проекте.
В ходе обучения мы разрабатывали мобильное Xamarin Android приложение просмотра данных о курсах валют.
Рабочий день начинался с лекции, а заканчивался практическим заданием. Учебный материал покрывал много тем: юнит-тестирование, мобильная разработка, S.O.L.I.D., обзор библиотек, которые удобно использовать с Xamarin, некоторые базовые шаблоны, такие как MVVM, который мы в будущем использовали для разработки Android-приложения, Scrum и т. д.
После каждой лекции мы выполняли различные практические задания. Почти все они прямо относились к проекту, который мы разрабатывали. Например, после лекций по ASP.NET мы начинали делать backend для нашего мобильного приложения, а после лекции по юнит-тестам — покрывать наш код тестами. Лекции продолжались примерно 1,5 недели, а оставшиеся время мы посвятили разработке проекта.
Очень полезными были код ревью от нашего ментора, в результате которых нам порой приходилось переписывать результат трехдневной работы. Но именно такие строгие формальности сформировали видение и понимание качественного софта.
Кроме того, мы усвоили Scrum. Работа была разбита на три спринта, и сформирован небольшой беклог, в котором были прописаны требования к проекту. Учеба в интернатуре максимально приближала нас к реальной разработке и позволила прочувствовать все краски настоящей работы.
Очень важным критерием отбора было умение быстро разбираться с новыми технологиями и это то, за что ментор был нами очень доволен. Также понравилось, что практика была объемной, т. к. нам пришлось заниматься full stack разработкой.
В конце обучения мы презентовали наш проект специалистам Sigma Software. Демо прошло успешно, и все остались довольны результатом. Честно говоря, в интернатуре было достаточно сложно из-за большого объема новых знаний.
Результат
По итогам учебы в интернатуре мы получили хороший фидбэк от нашего ментора, нас взяли на один проект.
Во время интернатуры мы волновались, что можем завалиться и не попасть в компанию. В этот момент нас здорово поддержал Андрей Сомов, рассказывая о политике компании. Он говорил, что Sigma всегда старается набирать ровно столько студентов в интернатуру, сколько в будущем планирует взять на работу. Для компании очень важна репутация, поэтому основной отбор происходит при поступлении. Первые рабочие дни были пугающими, но к нам сразу пришли на помощь ребята с нашего проекта и дали возможность быстро вникнуть в происходящее. Сейчас я уже полноценный разработчик, и хочется сказать, что я рад быть частью именно этой компании. Очень приятно работать с умными и сильными людьми, в уютном не open space офисе и в теплой, дружеской атмосфере.
Когда я заканчивал второй курс, я не мог представить, что через год буду сотрудничать с крупной IT-компанией и заниматься разработкой сложных и интересных проектов. Мне казалось это чем-то заоблачным, но все оказалось куда проще. Все что нужно — это работать над собой и учиться каждый день. Год назад я только мечтал о таком, а сейчас это реальность. Эта победа дала мне понять, что границ нет и человек, который по-настоящему жаждет чего-то и много работает, сможет добиться всего.
Поработав уже больше года, я могу с уверенностью сказать, что один из самых важных навыков хорошего программиста — это способность быстро изучать новый материал. Но этот навык тоже развивается со временем, и если у кого-то сейчас уходит несколько вечеров, чтобы разобраться с новыми вещами — то это нормально. Потом, на основании полученных знаний и опыта, будет гораздо проще сформировать новый образ и выучить что-то новое.
Любому человеку, который давно программирует, кажется очевидным, что класс — это ссылочный тип и его экземпляр можно модифицировать с разных мест, просто имея ссылку на него. Когда я разбирался с этим на первом курсе, я потратил много времени. Новые знания всегда даются с трудом, особенно если они требуют другого образа мышления. Поэтому, если у вас что-то не получается, не расстраивайтесь и продолжайте учиться, у вас обязательно все получится.