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 передавал их пользователю.
Я также узнал профессиональный жаргон, научился работать в команде и, наконец, получил предложение о работе в компании. Единственное, о чем я жалею — что не попробовал свои силы годом ранее. Поэтому советую вам не терять время.