Как стать разработчиком с нуля и устроиться на работу истории

Обновлено: 12.05.2024

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

Меня зовут Антон Ярков, я являюсь Senior Software Developer и Chief of Staff (руководитель распределенной команды разработки) из 100+ разработчиков в калифорнийской компании Access Softek Inc. На данный момент у меня больше 12 лет опыта в разработке, как в стартапах, так и enterprise.

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

На пути к профессии программиста

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

Советы начинающим программистам

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

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

  • Петцольд Ч. Код: тайный язык информатики.
  • Столяров А.В.: Программирование — введение в профессию. Том 1 — азы программирования.

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

3. В своём развитии найдите баланс между тем, что вас действительно интересует и увлекает (создание сайтов, программ, решение задач и т.д.) и изучением всей необходимой теории. Я советую 50% времени тратить на полезную практику и остальные 50% на теорию.

Например, всё ещё поверхностно зная язык программирования, можно уже начать создавать простые утилиты и выкладывать их на GitHub (попутно изучая как пользоваться системой контроля версий Git, или черпая хорошие примеры других похожих программ).

Создание чего-то работающего и полезного будет вас мотивировать и не даст бросить дело, а примеры ваших работ на GitHub дадут будущему работодателю понимания пути вашего развития.

Не стоит сразу и на 100% углубляться в языки, технологии или теорию без практического подкрепления, ведь теория сложна и часто не сразу можно её понять. Да и не вся она применима в жизни.

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

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

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

6. Без работы в компании над реальными жизненными задачами вы не станете программистом. Поэтому целью любого начального изучения программирования является поступление на работу в компанию.

Советы студентам

Итак, мы закончили с общими рекомендациями. Мои советы студентам будут следующими:

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

Книги для параллельного чтения:

  • Седжвик Р. Фундаментальные алгоритмы на С++
  • C. Скиена. Алгоритмы. Руководство по разработке.
  • Т. Кормен. Алгоритмы. Построение и анализ.
  • Лааксонен А. Олимпиадное программирование.
  • Скиена С., Ревилла М. Олимпиадные задачи по программированию.

Не помешает обращаться к курсам и видео, например, на платформах Stepik или просто на Youtube.

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

Все эти знания позволят вам проще и быстрее подготовиться к интервью в любую крупную компанию. При этом не стоит спешить. Лучше разобраться детальнее и порешать больше задач для лучшего понимания темы.

2. Постарайтесь найти несколько интересующих вас проблем и написать более-менее реальные приложения, которые:

  • Решают ясную поставленную задачу.
  • Имеют хорошо оформленный открытый исходный код на GitHub.
  • Можно описать в статье со схемами, графиками и картинками.

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

  • Попробуйте поучаствовать в хакатоне (как онлайн, так и офлайн) и заразиться идеей оттуда. Вы сможете даже продолжить проект, начатый во время ивента.
  • Прочитайте мега-список проектов тут.
  • Посмотрите список проектов тут.

3. Начинайте проходить интервью в компании. Выбирайте работу в компании, в которую:

  • Были сложнее и интереснее интервью.
  • Есть практика обучения молодых специалистов.

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

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

Как освоить профессию программиста специалисту из другой сферы

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

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

  • Я хочу создавать мобильные приложения?
  • Я хочу создавать классные красивые сайты?
  • Я хочу создавать бизнес-приложения (банкинг, инструменты расчётов или статистики, и т.д.)?
  • Я хочу программировать роботов, игры, базы данных, компиляторы, сложные приложения или искусственный интеллект?

Шаг второй состоит в изучении существующих на рынке компаний и технологий, которые они используют:

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

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

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

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

Далее, начинайте рассылать резюме в компании, и откликаться на предложения на LinkedIn. Удача может улыбнуться не сразу, но спрос на специалистов так высок, что я могу практически гарантировать, что вы устроитесь на работу в IT компанию.

Перспективы профессии программиста

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

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

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

Спросите себя зачем вы хотите стать программистом. Честный ответ позволит вам найти наиболее быстрый путь к мечте.

Антон Ярков — Senior Software Developer and Chief of development staff. Инженер-программист и руководитель команды из 100 разработчиков в компании Access Softek Inc., занимающейся разработкой банковских продуктов для рынка США. Последние 8 лет играет ключевые роли в приятии инженерных и управленческих решений, работая над высоконагруженными и инновационными приложениями. 10+ лет опыта в разработке в стартапах и enterprise. LinkedIn.


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

Программирование – это удовольствие, а не деньги

Зачем вам изучать программирование? Если эта сфера привлекает только деньгами и возможностью бросить текущую работу, то придется нелегко. Ведь эту сферу надо любить. Любой разработчик скажет, что срок становления программиста – вся жизнь. Языки программирования, библиотеки, методологии – все меняется, и новые технологии появляются если не ежемесячно, то ежегодно.


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

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

Как быстро вы сможете заработать?

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


Что влияет на скорость обучения:

  1. Образование. Если у вас хорошая математическая база, то понять логику языка программирования получится гораздо быстрее. В среднем, искать заказы можно уже через четыре месяца обучения.
  2. Количество занятий. Увольняться с работы без четких перспектив – слишком опасно. Если совмещать офис и учебу, то понадобится больше времени — вплоть до года.
  3. Талант. Абстрактный фактор, но с врождённым талантом к программированию или математике постигнуть азы и устроиться на работу получится быстрее.
  4. Предметная область. Можно программировать сайты, десктопные программы, искусственный интеллект. Естественно что, время на освоение минимальных навыков в разных направлениях будет разным. Если веб-разработчиком можно стать за несколько месяцев, то изучение нейросетей потребует больше времени. Во многом из-за необходимости в глубоких познаниях математики.

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

3 этапа становления разработчика


Обучение программированию условно можно разделить на три этапа:

  1. Знакомство. Самостоятельное изучение программирования с нуля довольно сложно, поэтому мы рекомендуем наш базовый курс по Java. Он сэкономит много времени и даст необходимый объем знаний, чтобы претендовать на позицию стажера или джуниора.
  2. Основной этап. Если программирование вызывает интерес и приносит удовольствие, то самое время набивать руку. Пройдите продвинутый курс, найдите учителя или работайте с Open Source – это ваш путь к высокооплачиваемой должности.
  3. Вся жизнь. Когда вы уверенно будете разбираться в программировании и его логике, найдёте работу, то останется только углублять свои знания и становиться узкоспециализированным специалистом.

Заключение

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

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

Как найти работу программисту, даже новичку без опыта?

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

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

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

Несмотря на высокую конкуренцию на рынке ИТ, крупные компании готовы брать в команду талантливых новичков. Потому что:

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

Где и как искать вакансии начинающим разработчикам?

6 вариантов, как найти первую работу начинающему программисту:

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

Как устроиться на работу программистом: 5 шагов для достижения цели

Итак, вы нашли подходящую вакансию, на которую хотите устроиться, что делать дальше?

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

Смело отправляйтесь на собеседование.

Рассмотрим каждый шаг подробнее.

1. Как определить необходимые знания и навыки для получения первой работы?

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

Например, если компании требуется Web-разработчик (fullstack), то, скорее всего, от вас ждут навыков в PHP, HTML, CSS, JavaScript, Python, SQL. В описании задач упор идет на frontend-разработку — нужны три языка: HTML, CSS, JavaScript.

Уверены, что объема ваших знаний достаточно? Откликайтесь на вакансию, предварительно состав хорошее резюме.

2. Как подготовить резюме?

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

Что нужно обязательно включить в резюме:

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

Что сыграет против вас:

3. Как правильно откликаться на вакансии?

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

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

4. Как подготовиться и пройти собеседование?

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

5. Что делать, если не взяли?

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

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

Может потребоваться пройти несколько собеседований, чтобы получить первую работу. Это нормальная практика и она не говорит о том, что устроиться на работу программистом сложно. Знайте, что каждое собеседование, даже если вас не взяли, приближает к получению работы.

Как может развиваться карьера программиста?

В программировании есть два пути развития:

    Горизонтальный. Специалист расширяет компетенции, становится экспертом в своей области, формально оставаясь на той же должности. Происходит нишевание. Чем выше экспертность, тем выше востребованность разработчика и, соответственно, зарплата. Это развитие по вектору от Junior к Middle и далее к Senior.

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

Отличия между Junior, Middle и Senior

Границы тут условные. Нельзя сказать, что отработав условные 5 лет, человек точно перейдет в категорию Middle — некоторые и за 10 лет могут не нарастить скиллов для этого уровня.

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

Знания и навыки

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

Задачи, которые решает

  • Технические задачи, четко описанные в конкретных рамках.
  • Юнит-тесты.
  • Правки мелких багов.
  • Бизнес-задачи, закрывающие конкретный бизнес-функционал или проблему.
  • Самые сложные и нестандартные бизнес-задачи.

За конкретный проект или функционал, которые написал сам.

Отвечает за архитектуру, скорость и эффективность всего кода проекта или компании.

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

Приведенная классификация не означает, что позиция Senior — вершина карьеры программиста. Всегда есть, куда расти.

Куда может расти Senior-разработчик?

После нескольких лет работы на позиции Senior программист может вырасти до:

  • Software Architect. Архитектор ПО проектирует программные решения и продумывает, как именно будут взаимодействовать между собой компоненты системы.
  • Team Lead. Рост идет в менеджмент: организация процесса работы по проекту, распределение задач, ответственность за результат всей команды.
  • Project Manager. Функционал расширяется еще больше: управление командой, распределение задач, риск-менеджмент, знание смежных отраслей.

Delivery Manager. Такой специалист совмещает функции Software Architect и Project Manager. Это относительно новая позиция и встречается пока редко.

Советы, как программисту быстрее найти работу

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

Список полезных сайтов для поиска работы

Биржи для фрилансеров:

Сайты, где программисты могут искать работу:

Группы в Facebook:

Группы в сети ВКонтакте:

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

Организация рабочего места: как создать комфортные условия для работы?

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

Как планировать рабочий день? 10 советов по тайм-менеджменту

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

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

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

Единого алгоритма включения тумблера не существует. Любое образование – школьное, среднее специальное, высшее, платные и бесплатные курсы – не гарантирует, что лампочка загорится. По моим скромным подсчётам, второе рождение случается у 1-5% получающих подобное образование. Хотя, написать какой-то код способны большинство выпускников.

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

Я расскажу 12 сочетаний мотива и подачи, под действием которых случилось второе рождение, и на свет появились 12 программистов. Всё из жизни, разумеется.

1 - Я сам

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

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

Ну и всё, с тех пор никак напрограммироваться не могу.

2 - Ирина

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

Подачу нашёл начальник, случайным перебором. Он отправил её на несколько дней к клиенту в офис – там как раз шёл запуск системы в эксплуатацию (до того Ирина работала только удалённо). Увидев клиентов, поняв их проблемы, посидев с ними несколько дней, вместе разбираясь с проблемами запуска, Ирина стала вдруг программистом.

Когда вернулась в офис, изменилась навсегда. Показатели стали одними из лучших в команде. Всё стало получаться.

3 - Дмитрий

Дмитрий стал программистом под действием одного из самых распространённых мотивов. Дмитрий взял ипотеку.

Ипотека дала мотив. Подача не потребовалась.

4 - Толик

Толик учился с другом в институте, пытались стать инженерами. У друга тумблер уже щёлкнул, он много и успешно программировал – и для себя, и мастерил за деньги однокурсникам лабы, курсовые и т.д. В том числе – Толику, который не спешил вникать в программирование. Ему больше нравились более фундаментальные предметы – вышка, сопромат, ТОЭ, численные методы, стат. анализ и т.д.

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

Договора было два, отдельно на каждую методику управления качеством. Соответственно, программы надо было написать две. Друг Толика, естественно, предложил свою помощь – хотел сделать оба продукта. Но Толику, впервые в жизни, стало стрёмно от своей неспособности самостоятельно программировать – всё-таки, это была не лаба, а НИР. Из которой потом вполне мог получиться неплохой диплом.

Вот Толик и решил сделать всё сам. Заморочился настолько, что поставил себе цель – сделать принципиально не так, как его друг. Например, друг считал, что данные надо хранить в виде типизированных файлов – Толик вынужден был дружить свой продукт с БД. Друг не парился с рисованием диаграмм, и выводил их на форму – Толик сел изучать Fast Report. И т.д.

В итоге, всё лето Толик просидел за компьютером. К осени стал программистом.

5 - Русская жена Надя

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

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

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

6 - Вова

Вова учился на инженера, но ни черта не мог понять программирование. Больше всего ему нравилось всё, связанное с железом – аналоговая электроника, проектирование приборов, расчёт площади радиаторов и т.д. Программирование железа не касалось – было абстрактное, оторванное от производственных задач изучение C++, Builder, СУБД, MatLAB и т.д. Вова всего этого не понимал.

Программирование стенда стало той подачей, которую Вова понял. Дальше всё пошло, как по маслу – и C++, и СУБД, и всё, что попадалось под руку.

7 - Игорь

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

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

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

Поэтому собрал волю в кулак, сжал булки и стал программистом. Вынужденно, в жутком стрессе, но тумблер щёлкнул.

8 - Виктор

Виктор работал программистом 1С, но ни черта не понимал, что и зачем делает. Как и большинство его коллег, решал задачи методом гугл-программирования. Искренне пытался понять, что написано в коде типовых конфигураций 1С, но чем дальше, тем меньше понимал. Благо, и конфигурации становились всё сложнее – там, где раньше хватало 100 строк кода, теперь было 3000, да ещё разбросанных по куче мест.

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

Виктор послушался, и через месяц стал другим человеком – программистом. И всё заколосилось.

9 - Сёма

Сёма хотел быть лучше всех. В принципе, ему не особо было важно, в чём именно – лишь бы лучше всех. В школе и институте он выделялся оценками – учился лучше всех. Потом пришёл работать программистом. Знания были только академические, никакой особой практики.

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

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

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

10 - Лена

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

Были варианты пойти работать инженером на завод, но Лена не хотела – видела на примере мужа, насколько это бесперспективно. Хотелось быть программистом. Но, как поняла Лена, программист из неё никакой.

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

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

Очень быстро поняла, что не может объяснить детям программирование. Формулировки из учебника не заходили – ни ей самой, ни детям. Лену это не устраивало – переживала, что выгонят за профнепригодность. Поэтому сидела вечерами, ночами и в выходные в интернете, искала способы подачи программирования детям. Нашла несколько вариантов – и конкретные методы, задачи, и принципиальные подходы в педагогике, перечитала несколько диссертаций с экспериментами над детьми. Что смогла – попробовала применить.

Пока пыталась объяснить программирование детям – поняла его сама. Через пару лет ушла из школы, уехала из города и устроилась программистом.

11 - Рома

В начале 2000-х, когда всё это происходило, компьютеров на заводах было не очень много. Там, где работал Рома, почти весь парк находился в бухгалтерии. Где бухгалтерия – там и 1С. Где 1С – там вечно что-то не так. Ну и стали просить Рому помочь. А ему, в принципе, не очень-то охота.

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

Рома очень быстро увлёкся. Брался за всё подряд. Как говорили тётеньки-бухгалтеры, ему только полслова скажи, что где-то проблема – уже сидит, строчит что-то. Не исключено, что за годы работы Рома написал очень много избыточного, ненужного кода. Но зато набил руку.

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

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

Я пытаюсь создавать эти обстоятельства искусственно. Пробуешь одно, если не получается – другое, и т.д. Верю, что вариант обязательно найдётся. Просто я знаю далеко не все сочетания мотива и подачи.

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

Читайте также: