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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Продолжение следует...

Крупнейший ресурс Superjob уже 17 лет помогает работодателям и соискателям найти друг друга. По статистике, IT-специальности уже не первый год входят в пятерку самых востребованных и высокооплачиваемых. Если вы мечтаете об успешной карьере, хорошей зарплате и интересной работе, этот вариант для вас! Учитесь, осваивайте сложный и увлекательный мир IT-разработок и программирования.

Популярных метода 4:

  • окончить вуз;
  • заниматься самостоятельно;
  • найти IT-гуру и напроситься в ученики;
  • окончить онлайн-курсы

У каждого из этих способов есть существенные преимущества. Но все больше людей отдает предпочтение онлайн-обучению. Клиентами обучающего ресурса GeekBrains стали около 2 млн человек.

Онлайн-обучение и вуз

Главное преимущество обучения в вузе - диплом. На некоторых предприятиях такой документ необходим: на работу без него не возьмут.

  • Вам придется потратить много времени на изучение теории, а вот практики будет мало. Ее придется нарабатывать либо самостоятельно, либо после вуза.
  • Обучение длительное, не менее 5 лет, а в программе много посторонних предметов, нужных для общего развития, но бесполезных в профессиональной деятельности. Зачем IT-специалисту нужна история или культурология?
  • Самое важное: понять, нравится вам специальность или нет, вы сможете только на последних курсах, когда начинается специализация. Изменить что-то будет очень трудно.

У онлайн-курсов нет минусов обучения в вузе:

  • Вы сами выбираете области знания, которые вам важны и интересны. Если вы считаете, что какой-то курс вам не нужен - не проходите его. Но если вы передумаете, всегда можно вернуться к нему.
  • Вы можете сразу оценить привлекательность профессии и понять, нашли вы свое призвание или нужно искать дальше. К примеру, на ресурсе GeekBrains есть курсы по 18 специальностям. Базовые знания по этим специальностям бесплатные: вы выбираете профессию после того, как «попробуете» ее. К примеру, вы мечтаете стать программистом. Проходите по ссылке https://geekbrains.ru/basics_intensive , изучаете основы программирования и понимаете, что ошибались. Вам это не интересно, зато интересен веб-дизайн. Вы переходите к другому курсу и занимаетесь тем, что вам нравится. Потерянного времени - минимум, потерянных денег - 0 рублей 0 копеек.

Онлайн-обучение или самоподготовка

Самоподготовка абсолютно бесплатна. К тому же вы делаете только то, что считаете нужным и правильным. Но:

  • Вы теряете много времени на поиски нужного материала. К тому же вы толком не знаете, что вам нужно, а что нет. Самостоятельно составить план занятий, если вы совершенно не разбираетесь в теме, сложно.
  • Если у вас возникает какой-то вопрос, обратиться за помощью не к кому. Можно поспрашивать на форумах, но не факт, что вам ответят. Никто не любит учить новичков.

Онлайн-курсы стоят денег. Зато:

  • Вы получаете структурированную информацию, изложенную в нужной последовательности.
  • Вы экономите время. Которое, как известно, деньги. Вы нормально высыпаетесь, общаетесь с семьей и друзьями, а не превращаетесь в угрюмого затворника.
  • На сайте GeekBrains есть форум. Там можно задать любой вопрос, посоветоваться, если нужно. На форуме общаются такие же ученики, как и вы. Они охотно помогут, если смогут. И всегда можно обратиться к наставнику. Он поможет решить сложную проблему, объяснит, если что-то непонятно.

Онлайн-обучение или общение с опытным IT-специалистом

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

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

А что после обучения?

Главная проблема начинающего специалиста - найти работу. Работодатели предпочитают нанимать сотрудников с опытом. Учеба на GeekBrains - это практические проекты, которые пойдут в портфолио: вам будет что показать работодателю.

Многие компании ищут сотрудников на GeekBrains. На странице https://geekbrains.ru/career вы найдете список вакансий. Этим работодателям не нужны люди с дипломами. Им нужны сотрудники, умеющие решать конкретные задачи за достойную зарплату. Вы сможете стать как раз таким человеком.

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

О том, где программисту получить базовые знания, с чего начать обучение, поговорим с Алисой Антроповой, менеджером по работе с клиентами IT-Академии Сухорукова.

Алиса, сделай, пожалуйста, небольшой обзор по тем курсам программирования, которые проводятся в Академии.

У нас около 15 курсов по программированию. Их можно по-разному классифицировать: есть курсы для начинающих (основы программирования, Java с нуля, С# с нуля, С++ с нуля, верстка), есть уже для опытных (С++ и Java, JavaScript, PHP, Андроид, iOS), а есть для продвинутых (Java EE, PHP Advanced, продвинутые iOS и Андроид). Есть курсы по веб-технологиям, есть обучение классическим языкам программирования, есть разработка мобильных приложений. Немного особняком стоит курс по тестированию ПО – это одно из самых востребованных уже не первый год направлений.

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

Если же говорить о курсах, ориентированных более предметно, то среди них можно перечислить:

– крайне популярный язык программирования, который специально разработан для написания web-приложений (скриптов, сценариев), исполняющихся на Web-сервере. PHP не зависит от скорости компьютера пользователя или его браузера, он полностью работает на сервере.

Объектно-ориентированный язык, предназначенный для разработки разнообразных приложений, выполняемых в среде.NET Framework. С его помощью можно создавать обычные приложения Windows, XML-веб-службы, приложения «клиент-сервер», приложения баз данных и т.д.

Один из самых сложных языков, и, тем не менее, с него очень здорово начинать знакомство с IT вообще и программированием в частности. Используют его для создания:

  • операционных систем;
  • конструкторских, например, САПР «Компас», приложений;
  • текстовых редакторов;
  • бухгалтерских программ (1С) и многого другого.

Кроме того, C++ применяют при:

  • разработке других языков программирования;
  • написании драйверов, позволяющих «железу» правильно работать в системе;
  • создании высокопроизводительных веб-серверов (например, nginx);
  • создании игр и всевозможных развлекательных приложений.

– является основой практически для всех типов сетевых приложений и всеобщим стандартом для разработки и распространения встроенных и мобильных приложений, игр, веб-контента и корпоративного программного обеспечения. Сейчас этот язык программирования используется чрезвычайно широко, и Java-специалисты крайне востребованы на рынке труда.

Язык программирования, с помощью которого веб-страницам придают интерактивность. С его помощью создают приложения, которые включаются в HTML-код (например, анкеты или формы регистрации, заполняемые пользователем).

(Java для опытных) - набор спецификаций и соответствующей документации для языка Java, описывающей архитектуру серверной платформы под задачи средних и крупных предприятий.

– кроссплатформенный объектно-ориентированный язык, который позволяет написать ту же программу, что и на С++ или Java, но с меньшими временными затратами. Его часто изучают в качестве второго языка, это существенно упрощает проверку сценариев. Он универсальный, с его помощью можно автоматизировать рабочие процессы, создавать сайты, а также настольные приложения и игры. Наш курс в основном посвящен использованию Python для создания сайтов.

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

А что относится к направлению разработки приложений для мобильных устройств?

Операционную систему корпорации Apple, включает знакомство с основными библиотеками и интерфейсами, а также принципами тестирования таких приложений. Сначала с вами будут плотно работать наставники – они помогут вам написать вашу первую программу. А по окончанию курса вы сможете уже создать приложение под iOS на языке Objective-C самостоятельно.

– это наиболее распространенная на сегодня операционная система для мобильных устройств. На курсе разработки под Android вас познакомят со всеми этапами создания приложения, а еще подготовят к собеседованиям с работодателем – это поможет вам найти работу своей мечты!

– это многофункциональный и интуитивно понятный язык программирования от Apple, c помощью которого можно создавать приложения для iOS, Mac, Apple TV и Apple Watch. Swift дает специалистам практически неограниченную свободу в реализации собственных идей. Сегодня данный язык считается одним из наиболее современных и перспективных направлений в области IT-разработки.

Какие курсы еще могут заинтересовать тех, кто решил стать программистом?

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

На (грамотному проектированию интерфейсов) преподаватели Академии научат вас создавать по-настоящему удобные для людей приложения.

– это курс, где вам дадут базовые знания о процессах и методах тестирования, познакомят с наиболее часто используемыми инструментами тестирования мобильных, десктопных и веб-приложений.

У нас также есть . Строго говоря, к программированию он не относится, но очень к нему близок. В ходе этого курса вы научитесь настраивать линукс-сервера, предназначенные для работы самых разных сайтов.

Алиса, расскажи, пожалуйста, какими особенностями обладают курсы по программированию, проводимые в Академии?

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

Во-вторых, все курсы Академии имеют четко выраженную практическую направленность. Понятно, что без теоретической подготовки тоже не обойтись, но основное внимание наши преподаватели уделяют именно решению прикладных вопросов, наработке навыков программирования. Они с удовольствием делятся со студентами своим собственным опытом, секретами и тонкостями работы.

В-третьих, обучаясь в Академии, слушатели всегда имеют возможность задавать преподавателю интересующие их вопросы, просить его выделить больше времени для освещения тех или иных аспектов. То есть, следуя программе курса, в то же время влиять на сам процесс обучения, концентрируясь именно на том, что им интересно.

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

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

Кому какие курсы больше подойдут?

Если вы не имеете особенного опыта и пока еще окончательно не определились, в каком именно направлении хотите работать, то рекомендую записаться на курс “Основы программирования”. Если вам интересны сетевые технологии, вы хотите создавать сайты и зарабатывать на этом, то выбирайте веб-направление. Если вы стремитесь научиться создавать приложения и программы для компьютеров, ваш выбор - курсы по Java, С++ и другим языкам программирования. Хотите заниматься разработкой игр - записывайтесь на курсы С++ и C#. Если вас привлекает создание мобильных приложений - то начните с основ программирования, потом прослушайте курс по С++, а потом - iOS. Либо, если вам больше нравится Android, основы программирования - Java - Аndroid.

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

У желающих пройти обучение уже должны быть какие-то знания или навыки в выбранной области?

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

Алиса, расскажи про выпускников, которые уже окончили курсы по программированию. Сколько их было, какие цели они перед собой ставили, приходя в IT-Академию?

Программирование – наиболее популярное направление обучения в нашей Академии. Точное количество выпускников так сразу назвать сложно, но на сегодня оно уже превышает 2 тысячи человек.

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

И не было пока у нас человека, который бы ничего не получил от курсов. Так что без знаний вы от нас не уйдете! ☺

Были ли слушатели, которые окончили несколько курсов?

Конечно! Были люди, которые целенаправленно шли сначала на курсы по С++, потом на курс iOS-разработки, потом на курсы по РНР-программированию. Было и такое, что студенты меняли свои интересы и предпочтения прямо в ходе обучения. Часто после окончания курсов по тестированию ПО слушатели желают освоить какой-нибудь язык программирования – это очень помогает в практической работе тестировщика.

Работают ли ваши выпускники сейчас по той специальности, которую они получили в Академии?

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

Алиса, какой совет ты можешь дать тем, кто решил пройти курсы по программированию в IT-Академии?

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

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

С чего начать

Есть несколько вариантов развития событий, в результате которых человек становится программистом. Первый - родители-программисты, которые всему научили своих детей. Таким детям даже не нужно идти в университет. Второй вариант - модная профессия программиста. После школы нужно было выбрать, куда пойти учиться, и выбрали модное направление IT, вроде бы понравилось. И последний вариант - хобби, которое переросло в работу.

Если с вами ничего из вышеперечисленного не произошло, значит, у вас есть выбор из четырёх вариантов:

  • Самообразование . Этот вариант можно использовать как самостоятельно, так и в паре с другими методами. В интернете полно , и приложений , которые помогают изучать различные языки программирования и технологии. Но это самый тяжёлый путь для начинающих.
  • Университет . Если вы оканчиваете школу и хотите быть программистом, тогда идите в университет. Если не за знаниями, тогда за корочкой. Она может послужить бонусом при устройстве на работу. Хотя и какие-то знания вы тоже получите. Но не забывайте заниматься и самообучением. К выбору вуза стоит подойти очень ответственно. Внимательно изучите программы обучения и выбирайте лучшие технические вузы.
  • Ментор . Будет очень неплохо, если вы найдёте человека, который согласится помочь вам и направит вас в правильную сторону. Он подскажет подходящие книги и ресурсы, проверит ваш код, даст полезные советы. Кстати, мы уже писали о , где вы сможете найти ментора. Наставника можно искать среди знакомых программистов, на IT-тусовках и конференциях, на онлайн-форумах и так далее.
  • Специализированные практические курсы . Попробуйте поискать в своём городе курсы, где вас обучат какому-нибудь языку программирования или технологии. Я был приятно удивлён количеством таких курсов в Киеве, в том числе бесплатных и с последующим трудоустройством.

Какой язык, технологию и направление выбрать

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

  • Наличие на рынке вакансий . Конечная цель этого пути - найти работу программистом. А это будет трудно сделать, если на рынке вакансий никто не будет искать разработчиков на вашем языке программирования. Проверьте сайты с вакансиями, посмотрите, кого больше ищут, выпишите десяток языков. И переходите к следующему критерию.
  • Низкий уровень вхождения . Если вам придётся потратить длительное время на изучение языка, это может отбить у вас охоту к программированию вообще. Почитайте о тех языках, которые вы выбрали выше. Просмотрите литературу, которую нужно будет прочитать, чтобы изучить эти языки. И выберите те, о которых пишут, что они лёгкие, или которые вам показались лёгкими. Такими языками могут оказаться PHP, Ruby, Python.
  • Кайф от процесса . Если вам не нравится писать код на выбранном языке, вы не будете получать удовольствия от этого процесса, от работы и от жизни. А оно вам надо? Делайте правильный выбор.

Также вам придётся определиться с направлением программирования. Мобильное, десктопное, игры, веб, низкоуровневое программирование и так далее. Самые популярные и относительно лёгкие отрасли - разработка под веб, мобильные и десктопные клиенты. Под каждое направление может подходить один язык и совсем не подходить другой. То есть при выборе языка программирования также стоит отталкиваться и от этого фактора.

В любом случае изучите веб-технологии. Это язык разметки , стили и , который позволит сделать вашу страницу динамической. На следующем этапе изучите серверный язык (Python, PHP, Ruby и другие) и подходящие для него веб-фреймворки. Изучите базы данных: практически в каждой вакансии программиста это упоминается.

Как получить начальный опыт

Без опыта вы не получите работу. Без работы вы не получите опыт. Замкнутый круг реальной жизни. Но ничего страшного, мы из него выберемся.

Во-первых, не стоит ждать, пока вы прочитаете все книги по выбранному языку программирования. Начинайте писать свои первые строки кода уже после второй главы книги. Выполняйте все задания из книг, перепечатывайте примеры, разбирайтесь в них. Усложняйте примеры и задания из книг своими идеями. Создавайте свои задачи к пройденному материалу. Решайте эти задачи.

Во-вторых, вам нужно найти свои первые проекты. Это, наверное, самый сложный вариант, но рабочий. Вам придётся самому искать заказы, выполнять их, заморачиваться с оплатой. Для новичка это архисложно, но зато затем все остальные варианты покажутся плёвым делом. Выполненные проекты можно будет записать в опыт и показать вашему будущему работодателю. Реальные проекты являются большим плюсом в вашем резюме.

Если вы знаете английский язык, регистрируйтесь лучше на англоязычных биржах. Рынок там больше. Если не знаете английского, учите его. А пока что вам доступны русскоязычные биржи фриланса. Ищите небольшие проекты, которые соответствуют вашему уровню знаний или чуть выше него. Подайте заявку на пару десятков таких заданий. И приготовьтесь получить море отказов. Но если одна-две заявки выстрелят, у вас будет шанс получить реальный опыт.

Ещё одним неплохим вариантом для получения реального опыта является open source. Таким проектам всегда нужны новые люди, пусть даже и новички. Вы можете поискать в проекте баги или посмотреть в баг-трекере и предложить методы их решения. Найти такие проекты легко на GitHub или . Не стесняйтесь задавать там вопросы.

Четвёртый вариант получения опыта - помощь знакомым программистам. Попросите их передать вам маленькие и несложные задания. Если что-то не будет получаться, у вас всегда будет к кому обратиться. И при этом вы будете участвовать в реальном проекте.

Последний способ - собственные проекты, различные хакатоны или работа в коворкинге. Свои проекты сложно начинать самому, лучше поискать знакомых или друзей.

Почему стоит выбрать Python

Давайте немного подробнее поговорим о выборе первого языка программирования. Первый язык должен быть простым и популярным на рынке. Таким языком является Python . Я очень советую выбрать именно его в качестве первого языка программирования.

Код программы на Python читабелен. Вам даже не нужно быть программистом, чтобы в общих чертах понять, что происходит в программе. Из-за несложного синтаксиса Python вам понадобится меньше времени для написания программы, чем, например, на Java. Огромная база библиотек, которая сэкономит вам кучу сил, нервов и времени. Python является высокоуровневым языком. А значит, вам не нужно особо думать о ячейках памяти и о том, что там разместить. Python - язык широкого назначения. И он такой простой, что даже дети могут его выучить.

Справедливости ради стоит упомянуть и о других языках программирования. Java может стать неплохим выбором для новичка. Этот язык популярнее, чем Python, но и немного сложнее. Зато инструменты для разработки гораздо лучше проработаны. Стоит только сравнить Eclipse и IDLE. После Java вам будет проще перейти к работе с низкоуровневыми языками программирования.

PHP - ещё один очень популярный язык. И, мне кажется, он даже проще, чем Python. Очень легко найти себе ментора или решение какой-нибудь проблемы на форуме. Всё потому, что в мире существует огромное количество PHP-программистов разного уровня. В PHP нет нормального импорта, есть множество вариантов решения одной и той же задачи. А это усложняет обучение. И PHP заточен исключительно под веб.

Языки C и C# очень сложны для новичка. Ruby - хороший выбор в качестве второго языка, но не первого. JavaScript - очень простой язык, но ничему хорошему он вас не научит. А задача первого языка программирования всё-таки научить вас чему-то правильному, задать какую-то логику.

Важен ли английский язык

Важен! Не знаете? Учите. Знаете? Совершенствуйте. Учитесь читать, писать, слушать и говорить на английском. Делайте упор на техническую литературу. Слушайте англоязычные подкасты. Читайте англоязычные учебники по программированию.

Что нужно знать, кроме языка программирования

Конечно же, кроме языка программирования и английского, нужно знать что-то ещё. А вот что - зависит от направления, которое вы выберете. Веб-программист обязан знать HTML, CSS, JavaScript. Десктоп-программист учит API операционной системы и различные фреймворки. Разработчик мобильных приложений учит фреймворки Android, iOS или Windows Phone.

Всем нужно выучить алгоритмы. Попробуйте пройти курс на Coursera или найти подходящую для себя книгу по алгоритмам. Кроме этого, нужно знать одну из баз данных, паттерны программирования, структуры данных. Стоит также познакомиться с репозиториями кода. Хотя бы с одним. Обязательно знание систем версионного контроля. Выбирайте Git, он самый популярный. Вам нужно знать инструменты, с которыми вы работаете, операционную систему и среду разработки. И главный навык программиста - уметь гуглить. Без этого вы не проживёте.

Последние шаги

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

Успех - паршивый учитель. Он заставляет умных людей думать, что они не могут проиграть. - Билл Гейтс

Здравствуй, %habrauser%!
Долго думал как получить инвайт, чем я могу быть полезен для IT-сообщества, и вот, наконец-то, нашел, чем поделиться. Опытом! Именно он отличает меня от моих одногодок и не только, так как в свои 23 у меня есть 4-х летний опыт в сфере IT. Был ли он полезен? Да, ведь это опыт. Какой он был? Всё под катом.

Данная публикация будет интересна, в первую очередь, начинающим IT-специалистам (я не разделяю на более узкие специализации, хочу обобщить) и, надеюсь, послужит некой мотивацией к осознанию сущности бытия своих истинных целей и способа их достижения (в части карьеры, конечно).

В публикации я постараюсь осветить этапы в начале IT-карьеры и золотые правила, которые я вынес из них.

Всех, кто умеет учится не только на своих ошибках, прошу под кат.

Этап 0. Подготовка

В первую очередь немного расскажу о себе для более полного понимания общей картины. После окончания техникума (специальность «Обслуживание компьютерных систем и сетей») встал выбор дальнейшего пути: дневное отделение в институте или «заочка» и работа. В силу того, что я изрядно устал протирать штаны на парах (далеко не все предметы вызывают интерес) и захотелось какой-то свободы и взрослости, выбор пал на второй вариант. Посему, когда мои сокурсники наслаждались весной и большими сроками на дипломную работу, я «денно и ношно» корпел над дипломом. Это дало следующие плоды:
а) я получил бесценный опыт (т.к. взял не первую попавшуюся тему из списка дипломного руководителя, а предложил свою и сделал её не для «галочки», а практически внедрил на прототипе);
б) выиграл время на поиск работы благодаря тому, что начал это процесс в тот момент, когда большинство выпускников почуяли скорый deadline и уселись за свои дипломы. Проще попасть на собеседование, пока волна выпускников еще не начала штурмовать работодателей.

Идите на опережение и самообучайтесь
Почему это важно перед первым трудоустройством? Да потому, что это будет огромным плюсом в конкурентной борьбе за работу. А в случае, если конкуренты такие же выпускники, как и вы, это может стать фактором для принятия решения в вашу пользу. Сравните сами: выпускник с хорошими оценками, но без практики и каких либо практических навыков (даже для себя, попробовать) или вы - тот, кто много чего пробовал, спотыкался, но изучал (а это многое значит). Думаю, даже сравнительная таблица не нужна, чтобы сделать выбор. И работодателю не приходится выбирать только на основании престижности ВУЗа или доверии к нему. Он уже видит, кто учился, как все, а кто знал, что ему нужно и двигался в этом направлении.

Этап 1. Поиск работы.

Дьявол в мелочах

Этот этап придется разделить на 3 подэтапа в попытке осветить эти вопросы в полной мере.
Этап 1.1. Резюме
Есть куча сайтов с примерами, описаниями и рекомендациями. Их дают и психологи, и HR-менеджеры, и все, кому не лень. Но как написать резюме, когда тебе нечего писать в опыте работы? Многие мои знакомые начинали туда лепить все, что только могло как-то наполнить резюме. Использовал Photoshop для убирания эффекта «красных глаз»? Добавляем информацию о владении данным инструментом. Делал чертежи для курсового в AutoCAD? Его сюда же.

Показывайте в резюме в первую очередь те стороны, которые необходимы для конкретной вакансии.

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

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

Есть еще один спорный вопрос, мнение о котором я знаю с обеих сторон: и соискателя, и работодателя. Отправлять ли резюме, если ты не полностью подходишь по требованиям? Работодатель говорит - нет. Я говорю - ДА! И вот почему:
а) Требования иногда пишут HR-менеджеры. И когда ищут специалиста могут скопировать с другой вакансии, не понимая что это значит;
б) Некоторые требования могут оказаться косвенными. Т.е. несоответствие им не помешает взять тебя на работу;
в) Бывают ситуации, когда соискателю требуется сотрудник «на вчера» (случается и такое). Тогда тебя могут взять для выполнения каких-то базовых задач, а недостающие навыки уже «прокачают» в рабочем процессе;
г) Великое и могучее «А вдруг»(с)! (правда, тут может возникнуть неприятная ситуация на собеседовании, но ведь «А вдруг»(с) не возникнет?).

Этап 1.2. Выбор вакансии
Главное - выбирайте то, что по душе именно вам. Не нужно выбирать по престижности, советам знакомых и прочим, не относящимся к вашим желаниям критериям. Работа должна приносить удовольствие (в идеале и хороший доход, но для старта - удовольствие тоже важно). Она будет формировать ваше представление о работе, ведь она первая.

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

Этап 1.3. Собеседования
Я изучал много статей по этому поводу (и вам советую это сделать) и даже сам проводил собеседования, поэтому могу привести некую «выжимку» правил, которые помогут пройти его более эффективно:
а) Не волноваться. Многие сейчас подумали «Ага, на экзамене тоже говорят не волноваться, но не получается!». А нужно. Связная и последовательная речь всегда располагает к соискателю;
б) Готовьтесь к собеседованию. И это относится не только к внешнему виду. Следует «отрепетировать» рассказ о том, что вы уже знаете и умеете, рассказать об этом подробно. Лучше даже с описанием проблем, с которыми пришлось столкнуться во время реализации. Так вы сможете завязать диалог и чувствовать себя уверенней, повествуя о том, в чем вы разбираетесь. Если работодателю будет интересно что-либо другое - он сам направит разговор в нужное русло;
в) Узнайте побольше о компании, куда вы идете на собеседование. Работодатель должен понять, что вы идете не наобум, а целенаправленно к ним. Это так же располагает;
г) Почитайте и ПОЙМИТЕ теорию по тем направлениям, которые указываются в требованиях. Я сам часто «забивал» на теорию, думая, что главное - это быстро разобраться при наличии проблемы. Работодатель так зачастую не думает. И в некоторых ситуациях он прав. Если у вас нет опыта работы - вы можете знать только теорию. И вы должны её знать.

Этап 2. Работа

При счастливом положении звёзд правильном выполнении предыдущих этапов вы устроились на работу. Но это не повод расслабляться. Не буду давать советы, как себя вести в коллективе и в выполнении трудовых обязанностей, т.к. это очень сильно разнится в зависимости от коллектива/руководства.

Но есть «железобетонные» советы как НЕ нужно делать, работающие везде:
а) Не отлынивайте от работы. Таких людей никто не любит. Работу необходимо расценивать как опыт, коего у вас на данный момент еще нет;
б) Делайте свою работу качественно. Казалось бы банальность, но нет. Есть люди, которые по незнанию или из-за лени вместо правильного решения задачи «лепят костыли». Не надо так (с). Никто не любит переделывать за другими. Так же как никто не любит, когда банальную задачу решают долго путем переделывания своих же «костылей»;
в) Если у вас все-же остается свободное время - не тратьте его на социальные сети, игры и прослушивание музыки. Как бы это грубо не звучало: вы еще никто. И только от вас зависит, станете ли вы кем-то или так и будете специалистом «самого среднего звена». Обучайтесь постоянно , будь то какая-то информация о внутренних сервисах компании, которые касаются ваших должностных обязанностей или какая-то более общая информация о том, что вам понадобится в дальнейшем для развития (раз уж вы в своей работе достигли «дзена»). И не нужно откладывать обучение. «Потом» может не настать. Как случилось и у меня: работал, в ус не дул и игрался в свободное время, радуясь тому, что все работает, все обучены на выполнение рутины. И тут - БАЦ! Ликвидация компании, банкроты. С чем мы идем искать работу? С опытом игры в последние месяцы вместо полезных знаний. Не самый удачный багаж.
г) Проявляйте инициативу. Это может поспособствовать как расширению вашего опыта, так и продвижению по карьерной лестнице. Изучайте работу других сервисов, вдруг вы в процессе работы найдете более подходящее и интересное место для себя. Помните, что вы еще не сформировались как специалист и можете попробовать найти себя в другом, родственном направлении. Но это ни коим образом не значит, что нужно «метаться» и сдаваться при первых трудностях. Они будут везде.

Для первой статьи и для понимания как начать свою карьеру в IT, думаю, достаточно. Если у кого-то возникнут вопросы - с радостью отвечу на них в комментариях и в личной переписке.

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

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

UPD: Всем новичкам советую