← Academy Blog

Binary Studio Academy: мой опыт

ASP.NET Core, Typescript, Angular, SignalR, EF Core, RabbitMQ, Docker — с этими технологиями я столкнулся при прохождении Binary Studio Academy 2020. Но до поступления лишь отдаленно знал об ASP.NET Core и Angular, и не имел ни малейшего представления о том, зачем нужны остальные. В 2019 году и вовсе не зарегистрировался на Binary Studio Academy, потому что в списке направлений не было Python, а это единственная технология, с которой я был знаком на тот момент.

Спустя год объем моих знаний не изменился, но я решил рискнуть и за месяц выучил основы .NET, подготовившись таким образом к тесту. Прошел его и получил минимальный балл, что не помешало после этого успешно завершить остальные этапы и получить предложение о работе в компании. Я не слукавлю, если скажу, что после публикации каждого нового задания думал, что на этом мой путь в Binary Studio Academy заканчивается. Тем не менее я не опускал руки, а просто пробовал сделать его, как изначально просто попробовал пройти тест. И это работало.

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

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

Онлайн-тест

Первый этап Binary Studio Academy — онлайн-тест. Для подготовки к нему на сайте есть перечень ресурсов, и это первый момент, который я хочу выделить.

Я не успел разобраться и с половиной материалов, потому что все они были в новинку. До Академии я знал только Python, с основами которого познакомился на онлайн-курсе MIT. И именно этот факт помешал мне податься за год до этого, когда в списке направлений я не увидел той единственной технологии, с которой был знаком.

В этот раз я решил испытать удачу и почти наугад выбрал направление. На тот момент мне показалось, что .NET — это самый перспективный вариант как в плане применимости технологии для разных задач, так и в плане востребованности на рынке. Затем в течение одного месяца я изучил синтаксис и другие более сложные вещи. Для прохождения теста нужно было знать ещё JavaScript, Angular, Entity Framework и другие технологии, но на них времени почти не оставалось, пусть я и учился по 5-6 часов в день.

В результате я набрал 52 балла, что было минимальным результатом для перехода к следующему этапу.

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

  • У меня нет высшего технического образования
  • До Академии я знал только основы Python, но не имел практического опыта
  • Готовиться к тесту и Академии (фактически учить новый язык программирования) я начал ровно за месяц, и пусть этого хватило для получения минимального балла, не помешало успешно двигаться в будущем

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

Отборочные лекции

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

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

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

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

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

Мини-проект

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

Для меня это был, наверное, самый сложный этап. Именно поэтому в Академии заранее предупреждают о том, что работа над этим проектом никак не влияет на результаты зачисления. Бэкенд на .NET, фронтенд — Angular, база данных — SQL Server. Таковы исходные этого проекта, только мне на тот момент это ни о чем не говорило. После двух лекций я уже немного понимал, как работает .NET, но это были простые вещи, а сейчас предстояло поработать над мини-версией Twitter с разными функциями, графическим интерфейсом и взаимодействием с базой данных.

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

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

Лекции Академии

После зачисления в Binary Studio Academy начинается этап лекций, где вас ждет около 15 тем, требуемых для работы в выбранном стеке технологий. Именно в этот месяц я использовал свои знания об эффективном обучении, что позволило частично компенсировать отсутствие практического опыта.

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

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

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

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

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

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

Проект

Проект — самый интересный, сложный и запоминающийся этап Binary Studio Academy. В течение 5 недель вы вместе с командой разработчиков и тестировщиков под присмотром коучей работаете над аналогом некоего популярного сервиса: мессенджера, таск-менеджера, интегрированной среды разработки и так далее. Мне довелось поучаствовать в разработке CI/CD-системе а-ля Jenkins. И да, первые несколько дней в команде я даже не до конца понимал, для чего этот инструмент нужен, что нисколько не помешало в дальнейшем.

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

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

Наконец, документации. До Академии я избегал этих сухих описаний возможностей определенной технологии, отдавая предпочтение более доступным руководствам. Но пройдя этап лекции, стал чуть увереннее и быстро осознал разницу в этих двух видах материалов. Руководства чаще всего объясняют, как применить инструмент для конкретной задачи, а документации — просто описывают особенности его использования. И чем более специфические у вас требования, тем чаще придется прибегать именно к официальным документациям. А специфическими требованиями Binary Studio Academy вас обеспечит, можете не сомневаться.

Об эффективном обучении

Напоследок я бы хотел выделить те вещи, которые, на мой взгляд, компенсировали отсутствие опыта и помогли освоить большой объем материала за короткий срок. Я и раньше использовал эти подходы при обучении, но только при прохождении Binary Studio Academy скомбинировал все вместе и получил описанный в прошлых разделах результат. Вот что мне помогало:

  • Полноценный отдых (7-8 часов сна и дополнительная активность: спорт, игры, книги, общение на отвлеченные темы)
  • Смена деятельности в особо сложные моменты. К счастью, мозг умеет решать проблемы и без нашей помощи. Для этого нужно просто перестать нагружать его новой информацией и переключиться на что-то постороннее. Это сложно, особенно когда кажется, что уже почти нашел решение, но если время позволяет, то это лучшее, что можно сделать
  • Объяснять сложные вещи своим близким (им придется с этим смириться — скоро это станет для них обыденностью). В таком режиме вы сможете еще лучше усвоить информацию
  • Простые сравнения и упрощения. Никто не снизит баллы за то, что вы будете представлять брокера сообщений в виде почтальона, а вот разобраться со сложными концепциями это поможет
  • Разнообразные источники. Я намного лучше воспринимаю текст, но иногда эмоциональный лектор может одной случайной шуткой идеально описать сложную абстракцию
  • Наконец, я всегда старался не думать о финальном результате, потому что он в большинстве случаев лишь пугал и казался недостижимым. Вместо этого — разбивал одну задачу на список из более мелких и выполнял их по очереди

Вывод

Binary Studio Academy — один из самых важных образовательных опытов в моей жизни. И на мой взгляд, залог этого — стремление команды дать применимые на практике знания, а не просто завалить массой информации.

За месяц до онлайн-теста я знал синтаксис Python и не имел ни одного проекта в портфолио, которым мог бы похвастаться. Но уже через 3 месяца я отправлял сообщения с помощью брокера сообщений, которые давали команду на создание Docker-образа, обрабатывал полученные логи и с помощью Apache Kafka и SignalR передавал их пользователю.

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