Как прийти в IT (с чего начинать)

Как прийти в IT (с чего начинать)

Некоторое время назад в корпоративном блоге EPAM на dev.by была размещена статься в двух частях (первая и вторая), в которой мы с коллегами отвечали на наиболее частые вопросы о том, с чего начинать желающим построить карьеру в IT. Размещаю у себя полный (не порезанный на части) вариант.


Наверняка у вас есть знакомые, которые работают или получают образование в весьма отдалённой от IT сфере, но время от времени интересуются, как можно переквалифицироваться в успешного и достойно зарабатывающего IT-специалиста.

Сегодня на вопросы о том, с чего начать карьеру в IT, ответили представители тренинг-центра ЕРАМ: Евгений Пешкур, заместитель директора по подготовке персонала, Святослав Куликов, менеджер отдела по функциональному тестированию, Александр Барановский, руководитель образовательных программ по тестированию, и Светлана Захаренко, Java-тренер.

1. Хочу работать в сфере IT, но не знаю, с чего начать. Что посоветуете?

Евгений Пешкур:

Трудно советовать, не зная стартовых условий. Посоветую для среднего пользователя PC, уверенно овладевшего Counter Strike, форумами и социальными сетями.

Учите английский язык. Без шуток. Если вы не восприняли это серьезно, дальше можно не читать. Изучение английского до минимального уровня, применимого в компаниях, работающих на внешние рынки (уровень B1, если кому интересно) занимает год-полтора. Знание другого иностранного языка будет плюсом, но никак не заменой. Вам простят незнание какой-либо технологии, но не отсутствие языковой подготовки.

В основе всего лежит то, чему учат все ВУЗы, – способность самостоятельно искать и изучать материал. Многие, не осознавая этого, рассматривают курсы как место, где их «возьмут за руку и приведут к успеху». На самом деле, вас приведут к промежуточному финишу, дадут сертификат (оценку, диплом) и далее сделают в блокнотике пометку «профнепригоден». И это будет связано не с результатом финального теста, а с вашим образом мышления. И опытный преподаватель это очень быстро определит, проверяя и обсуждая с вами ваше задание. «Незагугленное» и осмысленное решение (пусть и не работающее, даже попытка его создания), отходящее от того, что он сам преподал днем ранее, для него будет очевидным.

Начните с азов. Смешно и нелепо, но добрая половина из тех, кто идёт на курсы, не знают, что такое бит и байт. Замечали возмущения типа «платил за винчестер на 40 GB, а дали всего на 38»? Почитайте, что такое сети и каковы общие принципы их работы. Познакомьтесь с базовыми понятиями типа ascii, heap, process & thread, прерывание.

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

Структуры данных и алгоритмы. Этого также не даст почти никакой из курсов, чаще всего предполагается, что это вы изучили в школе или вузе. Джентельменский набор терминов к изучению: дерево, стек, очередь, хеш. Алгоритмы… Не будем лезть в бутылку и советовать изучить теорию графов, но разобраться с различными алгоритмами надо. Как отсортировать массив (желательно знать и понимать несколько алгоритмов). Ваша цель – понять quick sort. Какие существуют способы обойти дерево.

Как видите, здесь почти не надо ходить на курсы, разве что на английский. Просто не игнорировать то, что вам преподают. Или суметь самостоятельно разобраться, если желание выспаться часто побеждало необходимость посещать скучные пары. Если мои намёки слишком туманны, то резюмирую: АНГЛИЙСКИЙ и немедленно! И понять все термины, упомянутые выше.

На мой личный взгляд, вы НЕ программист, если не способны в игрушке http://robocode.sourceforge.net/ создать танк, побеждающий стандартный набор примитивных танков.

Александр Барановский:

IT – достаточно широкая и объёмная сфера с десятками профессий и специализаций. Поэтому первым шагом является выбор и осознание того, чем именно вы хотите заниматься. Потому что для каждой профессии нужно обладать определённым набором навыков, умений и складом ума. После того как определились с выбором, берёте лист А4 и с одной стороны записываете, что необходимо знать и уметь для начала карьеры в выбранной позиции (программист, специалист по тестированию, бизнес-аналитик и т.д.), а с другой – те знания и навыки, которыми вы обладаете на текущий момент. Точками, на которые стоит обратить внимание и с которыми стоит работать, являются «недостающие» вещи из списка умений. А тут все средства хороши – тренинги, книги, форумы.

Светлана Захаренко:

Мне кажется, начать нужно с понимания, почему вы хотите работать в сфере IT. Чем именно эта сфера привлекает вас, и что является основным мотивирующим фактором. Понимание позволит правильно расставить приоритеты и выбрать нужное направление.

Очень важно понять, чем именно в сфере IT вы хотите заниматься. Говоря о работе IT-специалиста, я бы рискнула провести аналогию с медициной. Медицина – большая область знаний, которая включает в себя множество направлений и профессий, и когда люди решают связать свою профессиональную деятельность с медициной, они скорее исходят из понятия «Я хочу быть врачом-стоматологом» или «Я хочу быть врачом-терапевтом».

2. У меня гуманитарное образование. Можно ли переучиться на программиста?

Евгений Пешкур:

Да. Кто такой «строитель»? Это архитектор, прораб, каменщик, маляр или сторож? А кого вы подразумеваете, говоря «программист»? Работа в IT – это не обязательно именно написание кода. Есть масса специализаций, где гуманитарий найдет себя: тестирование, бизнес-анализ.

Святослав Куликов:

Можно. Сложность переучивания, его скорость, эффективность и иные показатели будут индивидуальны для каждого человека. Стоит честно признать два факта:

  • чем вы старше, тем сложнее вам переучиваться (не только на программиста, а переучиваться вообще);
  • вы будете долгое время проигрывать в степени профессионализма тем, кто посвятил IT всю жизнь.

Но эти факты – не приговор, и я лично знаю тех, кто пришёл в IT из «гуманитарных профессий», но благодаря своей целеустремлённости добился ощутимых успехов.

Александр Барановский:

Каждый конкретный случай надо разбирать под микроскопом, так как я не могу сказать «каждый гуманитарий может стать программистом», это было бы неправильно. В нашей практике прецеденты были. Но нужно понимать, что это далеко не просто и требует огромных усилий, терпения и упорства.

Светлана Захаренко:

Ничего невозможного нет, переучиться можно всегда :), вопрос в конечной цели и затрачиваемых ресурсах. Если вы решили стать программистом именно потому, что программирование вам интересно, переучиться будет не очень сложно, так как скорее всего интерес возник не спонтанно, вы его поддерживали, вы уже имеете представление о программировании, возможно, читали литературу, форумы, пробовали решать задачи.

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

Прежде чем принять решение о смене профессии, стоит соотнести своё желание с уже имеющимися навыками и знаниями. Очень сложно стать космонавтом, имея слабый вестибулярный аппарат.

3. Как выбрать «своё» направление обучения?

Евгений Пешкур:

Посоветоваться с теми, кто достаточно долго работает в IT и сам успел попробовать много различных ролей или тесно работал с представителями различных специализаций. Т.е. это специалист уровня Team Leader или выше. А далее пробовать.

Святослав Куликов:

В последнее время участились случаи «перепрофилирования в IT» с единственной целью – получением высокой зарплаты. Аргумент понятный, честный и имеющий право на существование. Но если деньги – единственное, что интересует вас в IT, то дальше вы рискуете столкнуться с серией сложностей и разочарований, так как заниматься нелюбимым делом – это всегда насилие над собой (даже при хорошей зарплате).

К тому же, «мир IT» очень обширен и многогранен, а многие новички даже не представляют, какие бывают «IT’шные профессии и специальности». Тут неплохо бы почитать сайты с описаниями IT-вакансий, а про заинтересовавшее спросить знакомых, работающих в этой сфере.

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

Светлана Захаренко:

Попробовать направление «на вкус». Например, если вы выбираете между программированием и тестированием, можно взять задачу и решить её с точки зрения программирования, затем можно взять ещё одну задачу и решить её с точки зрения тестирования, остаётся только сравнить результаты и ощущения. Используйте давно известный способ проб и ошибок. К сожалению, не существует такого рецепта, чтобы сразу правильно и без «шишек».

4. Какие технологии нужно в первую очередь изучить новичку? (Какие базовые знания в программировании и использовании ПК нужны новичку в IT-мире)?

Святослав Куликов:

Сначала – просто выйти на уровень уверенного пользователя. Если кто-то, читая этот ответ, стал криво усмехаться и подумал про «вот, опять про гуманитариев», то смею вас разочаровать: технарь, не умеющий скопировать файл по сети, пропинговать хост или построить график в Excel – явление столь же частое.

Далее есть три пути:

  • Быстрый: сразу изучать то, с чем вы собираетесь работать на своей первой IT-должности. Это быстро потому, что позволяет (временно!) пропустить огромный пласт «фундаментальных знаний», но побочным эффектом является способность решать только узкий круг очень чётко описанных задач. Уйму недостающих знаний придётся накапливать по мере наработки опыта.
  • Медленный: начать с базы – от основ алгоритмизации к паре языков программирования (сейчас, как правило, – Java/C# + что-то из серии JavaScript/Python/Ruby/PHP) и изучению конкретных технологий (я затруднюсь назвать «универсальные примеры», слишком уж много вариантов).
  • «Универсальный путь для сферического ученика в вакууме»: JavaScript + HTML + CSS, Java или C# + базы данных.

Светлана Захаренко:

Мне кажется, что самыми базовыми будут хорошие навыки пользователя ПК и обязательно очень качественное владение иностранным языком. Также неплохо понимать операционные системы, желательно иметь опыт использования разных ОС, понимать командную строку.

Если говорить о технологиях, то было бы неплохо иметь знания по базам данных, языку SQL, понимать XML, иметь представление о UML.

5. Что лучше: изучать интересующие технологии самостоятельно (книги, интернет) или записаться на тренинг или к репетитору?

Евгений Пешкур:

Идеально сочетать оба способа. Суть IT’шника – постоянное САМОразвитие. В начале пути посещение тренинга или репетитора сэкономит массу времени, укажет правильный путь и сделает нужные акценты. Ну и в личной работе скорректирует именно ваши отклонения от курса. Но не надо заблуждаться – самостоятельное изучение первично. «Я бы в … пошел, пусть меня научат» – это в корне неверный подход. «Пойду учиться, пусть мне помогут» – вот так надо.

Александр Барановский:

Оптимальный вариант – совместить приятное с полезным :). Книги расширяют кругозор и дают точку зрения на проблему/технологию. Тренинги позволяют закрепить знания на практике под присмотром тренера.

Светлана Захаренко:

В данном вопросе я бы не отделяла одно от другого, чтение большого числа книг/форумов/статей не принесёт пользы без чётко заданной траектории. Правильно направить, подсказать наиболее удачные источники информации сможет тренер либо специалист, имеющий большой практический опыт в выбранной области. С другой стороны, посещение тренинга без изучения дополнительной литературы тоже не принесёт должного результата. Ещё все очень зависит от того, как человек привык усваивать материал: в группе студентов, в одиночестве и с книгой либо один на один с преподавателем. Возможна комбинация обучения по книгам, с преподавателем и группой студентов :).

6. Какие тренинги в сфере информационных технологий сегодня пользуются популярностью среди студентов (по технологиям и местам проведения)?

Александр Барановский:

Популярны как и давно существующие «Введение в функциональное тестирование», Java, .NET, так и новые области – Mobile Development, BI.

Святослав Куликов:

Самыми популярными направлениями тренингов EPAM в Минске являются Java, .NET, тестирование – обучение по этим направлениям проводится, в основном, на базе БГУ, БГУИР, БНТУ. С перечнем направлений подготовки, осуществляемой тренинговым центром ЕРАМ на базе ведущих вузов РБ, вы всегда можете ознакомиться на нашем сайте. Стоит особо подчеркнуть, что мы проводим подготовку не только программистов и тестировщиков. Следите за открывающимися наборами на тренинги.

Часто можно услышать вопрос о том, куда лучше пойти – в тренинговый центр той или иной IT-компании или в независимый (коммерческий) тренинговый центр. Ответ прост: любая IT-компания, проводя бесплатный для слушателей тренинг, хочет видеть их в числе своих будущих сотрудников. Потому такие тренинги максимально адаптированы к бизнес-процессам конкретной компании и идти на них лучше в том случае, если вы хотите работать в этой компании. Коммерческие же тренинговые центры предоставляют, как правило, более «универсальную» подготовку, но поскольку невозможно за разумное время «научить всему», при таком подходе могут быть упущены моменты, важные для трудоустройства в конкретную IT-компанию. Это не вина тренинговых центров, это объективная реальность. Итого: в «фирменных» центрах – «уже, но глубже», в коммерческих – «шире, но мельче». К слову, можно совместить оба подхода :).

7. Какие сайты, форумы и сообщества стоит посещать, чтобы быть в курсе последних событий в IT-сфере?

Святослав Куликов:

www.habrahabr.ru, www.dev.by, www.stackoverflow.com + 2-3 более узкоспециализированных ресурса по вашему IT-направлению.

8. Какими профессиональными и личными качествами должен обладать сотрудник, работающий IT-специалистом?

Евгений Пешкур:

Самостоятельность.

Святослав Куликов:

Умение и желание учиться, учиться и ещё раз учиться – всю жизнь. Умение и желание ставить перед собой всё более и более смелые цели и сложные задачи. Понимание, что IT – это не столько работа, сколько «способ мышления».

Светлана Захаренко:

На мой взгляд, это любопытство (всегда хочется попробовать что-то неизвестное и новое или залезть в самую глубь уже знакомого), желание постоянно развиваться и учиться, ответственность (за себя и за команду), умение решать задачу в срок, чувство юмора :).

9. Как вести себя на собеседованиях (на работу или тренинг), чтобы не провалить их?

Евгений Пешкур:

Надо начать ДО собеседования. Для начала подготовиться: почитать о будущей профессии, работодателе, собрать информацию. Если пришёл человек и говорит «хочу у вас работать», но при этом не поинтересовался вышеуказанным, то это означает, что, скорее всего, и работать он будет так же. Если нет острой потребности в таком человеке, то опытный рекрутёр такого «завернёт».

Ну а на самом собеседовании всё обычно: вежливость и воспитанность. Вы приходите в свой потенциальный коллектив, в котором вам не только работать, но и проводить треть своего времени. Учитывая сон, вы часто с семьей будете общаться меньше. Запах, речь, одежда, жвачка, выброшенный за собой стаканчик, в котором вам предложили воду.

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

Светлана Захаренко:

Быть естественным, не пытаться копировать либо изображать некоторую манеру поведения. Быть достаточно открытым, вежливым, искренним, заинтересованным. А ещё очень важно иметь соответствующие квалификации знания :).

Святослав Куликов:

Об этом написана уйма статей (например, поищите на Хабре – там относительно недавно этот вопрос рассматривали со всех сторон). Универсальный ответ – быть честным и не притворяться тем, кем вы не являетесь. Да – это не самый популярный совет, да – так вы рискуете провалить не одно собеседование, и да – это почти единственный способ оказаться «на своём месте».

10. Сколько времени потребуется, чтобы из новичка сделать толкового ценного сотрудника?

Евгений Пешкур:

Год на минимально приемлемый уровень и ещё два для стабильной отдачи. Каков вопрос, таков и ответ :).

Святослав Куликов:

Всё зависит от того, что мы вкладываем в понятия «новичок» и «толковый ценный сотрудник» :). В среднем – от 1-2 до 3-5 лет.

Подводя итог, можно сказать, что «нет ничего невозможного для человека с интеллектом» (©). Если есть желание стать IT-специалистом, потрудиться, безусловно, придётся: выучить английский язык, познакомиться с ООП и структурами данных и алгоритмов, постоянно работать над собой и своими навыками. И помнить, что «если вы работаете над поставленными целями, то эти цели будут работать на вас».