Пути становления разработчика: университет, самообразование, фриланс. Размышления об эффективности

Translated into:ua

Итак, ты захотел стать разработчиком — квалифицированным специалистом, мастером своего дела. Родственники авторитетно говорят, что нужно оканчивать вуз, друг с огнём в глазах рассказывает о заработке на биржах фриланса по $100 в час, на глаза попадается вакансия на должность программиста, где требуется студент, в социальной сети взгляд цепляется за рекламный баннер онлайн-курсов, после которых гарантированно станешь чуть ли не senior-developer`ом, браузер открыт на блоге академии Binary Studio… Знакома ли тебе, читатель, эта неопределенность? Если ты прямо сейчас находишься в такой ситуации, то, надеюсь, тебе будет полезна эта обзорная статья на различные пути становления разработчика, основанная на моём субъективном опыте.

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

Что-то так много текста... И картинок нет. Не хочу читать, короче можно?

Университет

Мой опыт

Еще не так давно высшие учебные заведения были чуть ли не единственным местом, где наши родители могли получить качественное профессиональное образование. Для тех, кто хотел стать специалистом, алгоритм был достаточно линеен — закончить школу на отлично, получить красный диплом, а работа хорошая тоже найдется. В современном мире алгоритм стал намного более запутанным, разветвлённым, зависящим от многих переменных (может быть, даже уже стоит его отрефакторить?). Университет теперь не является единственным источником знаний, более того, за такими сферами, как IT, он часто не успевает.

Когда я учился на первом курсе, мой университет был в рейтинге топ-5 вузов Украины, а значит, высока вероятность того, что и многие другие учебные заведения на тот момент не были лишены таких недостатков. Закончив пару курсов на отлично, пройдя производственную практику, поучаствовав в олимпиадах по программированию (интересный факт: на одной из них я и услышал впервые о Binary Studio), я был огорчен несовершенствами университетского образования . Родственники настаивали на важности получения диплома, но судьба решила внести свои коррективы и после череды неприятных событий и необходимости подумать о заработке я безнадёжно отстал от программы обучения и, на текущий момент, так и не получил заветный диплом.

Требования к студенту

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

Плюсы и минусы

Сразу о минусах, с которыми я столкнулся:

  1. Устаревшие программы, делающие акцент часто даже не на базовые вещи, а на ныне тупиковые ветви в развитии отрасли.

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

  3. Торжество бюрократии и бесполезных формальностей.

  4. Большинство студентов лишены мотивации и интереса. Будто выбор, на какую специальность поступать, делал за них кто-то другой.

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

Итак, о плюсах высшего образования:

  1. Оно разносторонне и системно. Пытается преподать основательный подход к изучаемым предметам.
  2. Иногда попадаются преподаватели, которые очень любят своё дело и много знают о нём. Знакомство с таким человеком может очень помочь в жизни.
  3. Непосредственно диплом. Некоторые работодатели считают его обязательным требованием в вакансиях; доказательством, если не знаний, то усидчивости, дисциплины, терпения.

Фриланс / удаленная работа

Мой опыт

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

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

Требования к студенту

Здесь главным требованием станут развитые soft skills — умение договориться с клиентом и понять его, составить портфолио, быстро принимать решения. Также важны скорость работы и обучения, самоорганизация и самодисциплина. На первых этапах — пригодится терпение и немного удачи.

Плюсы и минусы

Очевидные плюсы:

  1. Это опыт работы, с помощью которого можно применить свои знания и заработать деньги. Более того, это может стать постоянным видом заработка в будущем, если не прекращать развиваться в этом направлении.
  2. Знакомство с актуальным состоянием IT — становится очевидным, что сейчас модно, что востребовано заказчиками, а что является узкой нишей или выходит из моды.
  3. Возможность создать портфолио, получить соответствующие знания.
  4. Для этого не надо ничего, кроме компьютера — нет жесткой привязки к месту работы, месту жительства, графику работы.

Но и у этого подхода есть существенные минусы:

  1. Требуется сильная самоорганизация. Необходимо знакомиться с новыми веяниями в сфере IT, оставаться конкурентоспособным, контролировать время и силы.
  2. Острая необходимость разбираться в вещах, не касающихся специализации. Это и общение с заказчиком, изучение финансовых и юридических тонкостей работы, понимание основ дизайна, умение рекламировать свои способности, показывать себя с лучшей стороны.
  3. Высокая вероятность сильно замедлить своё развитие как профессионала. Работа на скорость, пробелы в базовых знаниях, проекты с ужасным кодом, написанным другими фрилансерами, не позволят вырасти качеству навыков.
  4. Отсутствие возможности развить навыки командной работы и использовать соответствующие инструменты.

Постоянная работа в офисе

Мой опыт

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

Требования к студенту

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

Плюсы и минусы

Плюсы:

  1. Стабильный заработок.
  2. Реальный опыт командной работы над долгосрочными проектами.
  3. Строчка в портфолио (а по-хорошему — не одна, а полноценное описание того, над чем работал, какие проблемы решил, что смог предложить и применить).

Это реальная работа, после которой можно смело называться программистом (пусть и junior`ом). Однако в ней есть один значительный минус:

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

Самообразование / платные курсы

Мой опыт

Между описанными выше периодами у меня бывали небольшие промежутки времени, когда была возможность заняться полноценным самообразованием. Это ведь прекрасно, когда у тебя полным-полно времени, которое можно полностью посвятить саморазвитию? Я читал книги, прошел курс по Laravel на Udemy, создавал репозитории на гитхабе со всякой всячиной, что приходила в голову. Однако без реальной практики ценность этих, пусть даже фундаментальных, знаний резко стремилась к нулю. На мой взгляд, самообразование необходимо разработчику, но только обязательно в сочетании с реальной практикой.

Требования к студенту

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

Плюсы и минусы

Плюсы:

  1. Возможность получить глубокие фундаментальные знания в интересующей теме.
  2. Только самообразование по-настоящему учит учиться.
  3. Самостоятельный выбор источников знаний, изучаемых тем, материалов для закрепления знаний.

Минусы:

  1. Отсутствие наставника. Очень сложно ориентироваться в IT без чьей-то подсказки, не потратить время на бесполезные курсы, книги с неактуальными и неприменимыми знаниями.
  2. Без самодисциплины и достаточной мотивации — равносильно прокрастинации. Самообразование лишь станет оправданием для своей совести: «Я что-то делаю, видишь как учусь!».

Binary Studio Academy

Мой опыт

Когда я работал в офисе, один мой коллега активно пытался разобраться самостоятельно и поделиться с остальными, какими-то неизвестными нам стандартами написания кода, лучшими практиками, основами unit-тестирования и другими очень светлыми и правильными вещами. Однажды он упомянул о Binary Studio Academy, что показалось мне чем-то знакомым (см. главу «Университет»). Через год я решил попробовать. Курсы оказались довольно серьезным испытанием, чтобы пройти их потребовалось выучить очень многое, закрыть серьезные пробелы в знаниях, успевать сдавать задания до дедлайнов, исправлять десятки замечаний к пулл-реквестам, взаимодействовать с другими аппликантами. Но я прошел их до конца и сейчас имею возможность рассказать в своей статье и про этот способ получения знаний.

Требования к студенту

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

Плюсы и минусы

Плюсы:

  1. Актуальные знания. Академия каждый год обновляется - меняются задания, тематика лекций, система оценивания. Всё развивается максимально гибко и быстро.

  2. Опыт разработки проекта в команде максимально приближен к реальным условиям

  3. Серьезный вызов самому себе, возможность проверить свои силы и знания

  4. Неплохое портфолио — придётся ознакомиться со всевозможными актуальными инструментами и технологиями, наполнить свой github-профиль кодом который будет не стыдно показать

Минусы:

Есть один существенный минус, который может быть даже кому-то не позволит пройти этот курс

  1. Требует крайне много сил и времени. В первую очередь, времени.

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

Совмещение нескольких способов

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

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

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

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

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

Итоги

Стать разработчиком можно любым из этих способов, я уверен, что есть пути, которые я не упомянул в статье, просто потому что у меня не было опыта их прохождения. Совершенствование навыков в такой стремительно развивающейся сфере, как IT, не может быть конечным процессом. Для этого я сейчас совмещаю работу над проектом в Binary Studio (которая предоставляет отличные способы повышения квалификации как Academy PRO, OKR) с самообразованием.

Серебряной пули не существует, а выбор твоего пути развития должен основываться на двух факторах:

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

Небольшой бонус

Текста много, поэтому я подготовил небольшой калькулятор талантов (я любитель RPG и вдохновлялся вот этой системой), чтобы подытожить и визуализировать ответ на вопрос “Это всё хорошо, автор, но какой же мне путь ты предложишь выбрать?”. Сразу хочу предупредить: не стоит относиться к этому скрипту слишком серьезно - в него нельзя в точности уместить все рассуждения, написанные выше, да и сама жизнь намного сложнее.

Post scriptum

Еще раз напоминаю: вся эта статья — это лишь мой субъективный опыт и анализ. Я не претендую на истинность, поэтому приглашаю подискутировать и высказать своё мнение в комментариях.

Желаю успехов в обучении, независимо от того, какой способ вы выберете!