Написать пост

Как из гуманитария стать программистом — отвечают эксперты

Аватар Никита Прияцелюк

Как кардинально сменить свой род деятельности и из нетехнического специалиста стать айтишником? Эксперты делятся опытом и дают практические советы.

Живёт себе человек спокойно, никого не трогает, и вдруг приходит ему мысль: «Хочу быть программистом!». Спрашиваем у экспертов, с чего начать.

Как из гуманитария стать программистом?

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

Предположим, страсть есть. Что дальше?

  1. Определитесь, чем именно вы хотите заниматься. В IT куча направлений и специализаций, и с повсеместной цифровизацией становится только больше. Кроме собственно программирования можно попробовать себя в профессиях на стыке IT и гуманитарных дисциплин: например, в UX-дизайне или SEO-оптимизации текстов. Если вы и раньше работали с текстами или картинками, переход в новую профессию будет проще. Если хочется именно программировать, рекогносцировку провести все равно придётся: создавать «мозги» для гаджетов, писать сайты или делать мобильные приложения – разные вещи, нужно их различать. Отталкивайтесь от конкретных прикладных задач. Это поможет определиться, какие навыки прокачивать, а на что не тратить время. Например, если вы всегда мечтали создать боевого робота, вам не придётся учить HTML.
  2. Подтяните «базу». Какое бы направление вы ни выбрали, вам в любом случае понадобится фундамент из математики, логики, знания алгоритмов (и хорошо, если у вас хоть немного математический склад ума). Как минимум – скачайте пару учебников для первых курсов вуза. Нужные легко найти в учебных планах популярных «компьютерных» направлений, их как правило выкладывает в открытом доступе любой университет. Ещё полезно хотя бы немного знать английский – во-первых, большинство языков программирования построены на его основе, во-вторых, на нём идет вся коммуникация в глобальном IT-комьюнити и публикуется самая свежая литература.
  3. Изучите профильные вакансии. Так вы составите формальное представление, каким «должен быть» программист. В вакансиях всегда указаны требования к необходимым скиллам: знание такого-то языка, владение такой-то технологией. Выделите список «минимум», который встречается в большинстве описаний, и начинайте его осваивать. Затем посмотрите на «тусовку» изнутри: читайте профильные сайты, общайтесь на форумах. Так вы будете в курсе актуальных проблем, которые волнуют профессиональное сообщество, а ещё заручитесь поддержкой «старших товарищей». Не стесняйтесь задавать вопросы старожилам этих площадок – на многих ресурсах для этого есть специальные разделы Q&A. Там новичку подскажут и литературу, и полезные курсы, чтобы освоить необходимый навык, а то и способы решить конкретные задачи.
  4. Учитесь, учитесь и ещё раз учитесь. И будьте готовы, что процесс обучения будет бесконечным. IT развивается быстро, чтобы не пропустить новый тренд, нужно постоянно держать руку на пульсе и совершенствовать свои навыки. И легких путей здесь нет – даже если начать учить условно «простой» язык Java, чтобы затем конкурировать на рынке, придётся освоить массу сопутствующих технологий. Но это не повод опускать руки. Удовольствия от процесса будет больше, если новые знания сразу переводить в практику. Напишите свой условный «Hello world» – когда вживую увидите, как работают ваши знания, мотивации продолжать прибавится в разы.

Расскажу, как я из гуманитария стал программистом. Мне было 25 лет, и я работал специалистом по связям с общественностью. В какой-то момент понял, что буквально ненавижу то, чем занимаюсь, недоволен зарплатой и готов сменить место работы как можно скорее.

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

  1. Мне должно нравиться, что я делаю.
  2. Хочу поменьше общаться с людьми.
  3. У новой профессии должна быть возможность развития.
  4. На новом месте должна быть достойная зарплата.

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

Я начал свой путь с вёрстки. Примерно два месяца потратил на прохождение интерактивных онлайн-курсов, после чего устроился в компанию, которая занималась только вёрсткой. Первое время моя зарплата составляла всего 8-12 тыс. рублей (Ульяновск, 2015 год) – совсем немного, потому что опыта у меня было мало и нужно было еще многому учиться. Отсюда совет: если будете кардинально менять сферу деятельности, подготовьте сначала денежную «подушку».

В этой компании я проработал полтора года, став за это время уверенным верстальщиком. Освоил Git, Webpack и Gulp, LESS, Sass, БЭМ, Jade, он же Pug, Bootstrap и простые задачи по JS (подключить плагин, настроить его, добавить классик и т.д.).

После этого устроился верстальщиком в компанию, где работаю и сейчас. На какое-то время забросил изучение JS (не делайте так! Это моя главная ошибка на пути из гуманитария в программисты), но потом вернулся к этому. Для этого прошёл ещё один онлайн-курс по специальности frontend разработчик и освоил онлайн-учебник по JavaScript. Кстати, советую начать изучение не с самого JS, а с основ программирования, чтобы понимать, как всё работает внутри.

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

В текущей компании я первое время занимался вёрсткой. Постепенно стали появляться задачи на JS, которые становились всё сложнее, с некоторыми я справлялся сам, с другими помогали советом более опытные коллеги. Затем мне доверили мелкий внутренний проект на Vue.js, с которым я справился, потом крупный проект на Vue.js, и на нём за год работы я вырос до полноценного frontend разработчика.

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

Что я могу посоветовать людям, которые решили кардинально сменить сферу деятельности и устроиться в IT?

  1. Не затягивайте с обучением и устраивайтесь на работу как можно раньше: опытные программисты из числа новых коллег подскажут, что подучить, и таким образом ускорят ваше развитие.
  2. Не бойтесь идти на собеседования: многие IT-компании готовы брать людей с минимальной подготовкой и обучать их.
  3. Как можно больше практикуйтесь.
  4. И самое главное – получайте удовольствие от своей новой работы!

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

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

Если с английским языком всё хорошо, и есть мотивация и/или огромное желание этим заниматься дальше (что тоже немаловажно!), то сперва надо пройти один или несколько курсов по основам программирования. Знание английского не ограничивает вас в выборе площадки для обучения. Лучше, если это будут онлайн-курсы: Coursera, Udemy предлагают отличные варианты. Некоторые по завершении курса и после успешной сдачи тестов дают сертификат – пригодится при трудоустройстве.

Далее придётся изучить хотя бы один классический язык программирования: например, Java или Python. Надо уже на примере конкретного языка понять, как реализуются алгоритмы на языках высокого уровня, какие основные языковые конструкции бывают, как используются и т. д. Изучать язык надо обязательно в какой-нибудь среде разработки – они очень помогают как новичкам, так и профессионалам: IDEA, Eclipse, NetBeans, JDeveloper и т. д.

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

  1. Стоит начать с изучения Computer Science – то есть программирования, архитектуры ЭВМ, операционных систем, компьютерных сетей и других областей в качестве научных дисциплин. Для этого можно изучать профильную литературу, смотреть лекции университетов. Программистом можно стать и пропустив этот пункт. Однако он позволит стать более востребованным и профессиональным специалистом.
  2. Далее стоит приступить к выбору первого языка. В данном случае отлично подойдут Python, PHP, JavaScript за счёт низкого порога входа и большого количества бесплатных образовательных материалов. На этом же этапе будет полезно сделать пару тестовых проектов – и для них можно найти очень много примеров. Конечно, самый простой способ – записаться на платный курс. Но к этому моменту лучше уже понимать базовые вещи и уметь писать hello world на выбранном языке.
  3. После этого можно найти сообщество программистов – например, в Telegram, чтобы начать общаться с будущими коллегами: задавать вопросы, делиться своим опытом. Там же можно подписаться на каналы разработчиков. Это поможет окружить себя культурой, в которую человек планирует попасть.
  4. Главное – это понять, какая именно сфера интересует больше всего. Ведь кому-то интереснее делать сайты, а кому-то – участвовать в разработке софта для анализа небесных тел.

Мой короткий ответ – никак. Но если вы продолжаете читать, то я советую использовать вашу сильную сторону: гуманитарные знания и понимание людей. Проанализируйте вашу мотивацию, задайте себе вопрос: «Как стать product-менеджером?» или «как стать руководителем проектов?» – возможно, эта область подойдёт вам лучше. Но если вы уверены, что хотите стать программистом, то тогда рецепт прост: подписывайтесь на курс по программированию на Python. Готовьтесь к железной дисциплине: выписывайте каждый новый термин, который вам непонятен, ищите ответ на вопросы «что это?», «зачем нужно?», «почему это так работает?». Спустя время у вас в голове начнёт возникать связная логическая система понятий и определённый образ мышления. Сможете продержаться 2 месяца в таком режиме обучения – значит, у вас есть шанс стать успешным в этой области.

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

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

Таким образом, вряд ли будет разумно стремиться именно в разработку, не имея технического образования или сопутствующей базы. Скорее имеет смысл найти близкое вам направление и переквалифицироваться. К примеру, экономист может достаточно просто стать бизнес-аналитиком, статистик — специалистом по Data Science, менеджер любого направления — тестировщиком, графический дизайнер — UX/UI-дизайнером, специалист из любой сферы, хорошо разбирающийся в своей отрасли и бизнес-процессах своей компании, потенциально может стать руководителем проекта и так далее. Для этих целей как раз подойдут относительно кратковременные курсы.

Однако отнеситесь к подбору курсов максимально серьезно. Спросите совета у знакомых, работающих в этой сфере. Задайте вопрос о курсах HR-специалистам IT-компаний, спросите, есть ли возможность дальнейшей стажировки.

Делая первый шаг, будьте готовы постоянно учиться. IT — очень подвижная среда. Чтобы быть здесь профессионалом, надо всё время осваивать что-то новое.

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

Для начала необходимо определить, в какую сторону вы хотите развиваться. Сейчас в сфере IT довольно много направлений, поэтому нельзя просто выбрать быть программистом. К примеру, нужно определить язык. Backend/frontend? Может быть, вы не хотите быть «чистым» программистом, и ваше сердце принадлежит DevOps? Чтобы увериться в правильности вашего выбора, обязательно посетите сайты поиска работы и посмотрите, какие специальности востребованы и оплачиваемы более всего. Это важные вопросы и им стоит уделить пристальное внимание.

Следующим этапом должно идти прочтение множества книг и форумов, посвящённых выбранному направлению. Вашим любимым местом должно стать StackOverflow. Книги должны быть самые начальные (for dummies, для детей) с нарастанием сложности. Форумы должны быть как русскоязычные, так и иностранные. Иностранные более дружелюбные для новичков. И на этом шаге важно владеть английским языком. Минимальный порог вхождения в IT — умение читать техническую литературу на английском языке. Идеально, если вы учитель английского ?.

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

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

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

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

Если говорить про книги, то подойдёт любая, где есть задания и примеры кода. Отличный пример — «Код» от Чарльза Петцольда. Это книга-тест, и если человек осилит все биты-триггеры-сумматоры-регистры — значит есть выдержка и есть смысл развиваться в программировании дальше.

Хороший вариант — курс Harvard CS50 «Основы программирования». Он бесплатный и доступен, как на русском языке, так и на английском. Правильнее будет проходить второй.

После закрепления основ, можно выбрать конкретный язык программирования и развиваться в нём.

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

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

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

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

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

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

Для гуманитария подойдет то же самое, что и для любого другого начинающего программиста.

Нет каких-то особенных когнитивных отличий гуманитария от технаря; дело сугубо в том, куда направлен интерес конкретного человека.

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

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

Для получения базовых знаний я бы рекомендовал классику вроде Кнута, а также какую-нибудь фундаментальную книгу по конкретному языку программирования (Блох или Эккель по Java, Шилдт по C++ и т. д.).

Чтобы выбрать в самом начале какую-то технологию, нужно понять, что же вообще интересует в сфере IT. С техническим бэкграундом это несложно сделать, но и люди с гуманитарным прошлым точно хоть раз да восхищались какой-нибудь технологической фишкой. С неё лучше и начать, это позволит держать мотивацию на нужном уровне. Скорее всего, большинство изысканий приведут в лоно Java, C++, Python или JavaScript. Возраст, склад ума, релевантность опыта – в деле обучения разработке ПО эти вещи не имеют решающего значения. Решает всегда упорная и обстоятельная работа, с постоянством и хорошей длительностью, умение не опускать руки при ошибках и делать правильные выводы из любого опыта. Лучше, если в этом тяжелом процессе будет конкретная цель, которая будет вдохновлять.

Если считать гуманитариями тех, кому хорошо даются такие предметы, как философия, история и экономика, то для таких людей есть определённые пути в программировании.

Если вы в состоянии осилить «Логику» Аристотеля, то с освоением программирования не должно быть проблем. Для умения писать программы логика важнее всего, даже важнее математики, которую, кстати, многие программисты не особо-то и любят. Немалая часть программ состоит из выражений: «если A, то B», «продолжать выполнять действие до тех пор, пока выполняется условие X», «если верно A и верно B или не верно C, то …».

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

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

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

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

Начать программировать сегодня легче, чем когда-либо: в Сети есть огромное количество курсов, издаётся куча книг, а мастер-классы и воркшопы проводят чуть ли не каждый день. В таком разнообразии информации легко потеряться, поэтому я бы советовал сфокусироваться на одной области, а в ней — на конкретном технологическом стеке. На примере выбранной технологии легче будет понимать остальные субдисциплины, так как концепции и идеи часто переходят из одной информационной дисциплины в другую. В качестве первых книг для знакомства с предметом я бы порекомендовал «Искусство программирования для Unix» Эрика Реймонда и «Практику программирования» Кернигана и Пайка. Эти книги не только дают массу практических советов, но и вдохновляют тех, кто решил заняться таким непростым делом, как программирование.

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

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

Как из гуманитария стать программистом?

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

Для начала определитесь с направлением. Вдруг вы хотите не просто программировать, а, например, заниматься Data Science. Для успешного обучения важно иметь мотивацию, иначе всё желание быстро пропадёт.

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

Далее можно пройти какой-нибудь курс (или несколько) по основам программирования, например, Harvard CS50 «Основы программирования».

Затем нужно определиться с языком программирования, который вы планируете изучать. Обычно выбор останавливают на одном из следующих: Python, JavaScript, Java, C++. Не переходите сразу к фреймворкам языка, уделите достаточно внимания его основам. Основные концепции у многих языков достаточно схожие, изучив их сейчас, вы сэкономите время в будущем.

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

Копайте глубже, если вам что-то непонятно. Различные форумы, чаты в Telegram, StackOverflow, Google — ваши верные помощники в этом деле.

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

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

Напоминаем, что вы можете задать свой вопрос экспертам, а мы соберём на него ответы, если он окажется интересным. Вопросы, которые уже задавались, можно найти в списке выпусков рубрики. Если вы хотите присоединиться к числу экспертов и прислать ответ от вашей компании или лично от вас, то пишите на experts@tproger.ru, мы расскажем, как это сделать.

Следите за новыми постами
Следите за новыми постами по любимым темам
22К открытий23К показов