банковская программа цфт обучение
Как в ЦФТ реализовать то, что мы всегда делали в Бисквите (с примерами)
Прошло еще 10 лет и от Бисквита стали банки отказываться. И вот в 2019 году я оказался в крайне неприятной ситуации: я отлично знаю только то, что уже мало кому нужно. Осенью 2019 года я получил отличное предложение от РСХБ-ИНТЕХ, где я сейчас и работаю. Я устроился туда выполнять задачи по разработке в системе Бисквит и одновременно изучать систему ЦФТ на языке программирования Pl Plus. Уже на испытательном сроке мне назначили 14 учебных курсов на учебном портале ЦФТ и стали давать элементарные задачки по разработке в системе ЦФТ. А примерно с лета 2020 года я полностью перешел на разработку в системе ЦФТ (и этому очень рад).
Эта статья о том, как сделать в ЦФТ то, что мы привыкли делать в Бисквите. Начинал я ее писать только для себя, чтобы упорядочить свои знания. Однако потом оказалась, что эта тема важна для всех разработчиков, которые переходят на ЦФТ и не только с Бисквита. Именно поэтому я решил разместить ее на Хабре.
Покажу на примерах
MESSAGE “Hello world”.
MESSAGE “Hello world” VIEW-AS ALERT-BOX.
+ (для цифр) +
+ (для строк) || (конкатенация)
= (для сравнения) =
= (для присваивания) :=
Не так страшен черт, как его малюют: как мы перевели разработку ЦФТ-Банк на платформу CFT Platform IDE (Admin 2.0)
Финансовые компании находятся в поисках лучших решений, которые оптимизируют внутренние процессы разработки, разовьют IT-инфраструктуру в соответствии с требованиями бизнеса и позволят им выводить на рынок лучшие конкурентные продукты. Так, два года назад мы ступили на путь перевода разработки ЦФТ-банк на платформу CFT Platform IDE. Среди коллег по цеху ходят слухи, что это процесс невероятной сложности, ввиду чего не решаются приступить к делу. На своем примере мы докажем, что это вполне подъемный процесс и для вашей команды.
Процесс разработки ПО в НРД в большинстве случаев характерен наличием нескольких команд разработчиков, которые лавируют между проектами, занимаясь разными модулями одной или даже разных систем. В работе у нас постоянно большое количество доработок и приходится держать несколько dev и test-контуров с разными версиями системы. Таким образом, всегда есть необходимость доступа к централизованному хранилищу кода с поддержкой версионности, обеспечением автоматической сборки и установки. Для системы ЦФТ-Банк на протяжении многих лет таких возможностей не было.
ЦФТ-Банк – это автоматизированная банковская система ЗАО «Центр финансовых технологий». Она характерна использованием собственного языка программирования pl/plus и, как следствие, возможностью применения только собственных средств разработки, предлагаемых вендором системы. Код системы открытый, с ограниченными возможностями модификации дистрибутивных модулей и с широкими возможностями создания своих собственных модулей.
Это порождало лишние затраты на подготовку сборок, merge-изменений и т.д. Часто возникали случаи порчи программного кода, т.к. следить за правильностью версиии той или иной программной компоненты могли только сами разработчики в полностью ручном режиме. Однако поменять подход к разработке для системы ЦФТ-Банк было невозможно ввиду существования безальтернативной среды разработки для этой системы, по своему интерфейсу и возможностям отставшей от жизни лет на 15.
Решение наших проблем было предложено ЦФТ с выводом на рынок в 2018 г. новой платформы разработки для своих систем, которая называется CFT Platform IDE (она же Admin 2.0, или сокращённо A2).
Ключевые отличия новой платформы разработки
Внешне разработчик получает среду, реализованную на основе Eclipse Platform, которая гораздо симпатичнее архаичного Администратора словаря данных.
Для сравнения редактирование кода в старой среде (Администратор словаря данных):
Редактирование кода в Admin 2.0:
Но основным преимуществом новой платформы разработки для нас явилась возможность хранения программного кода системы, а также экранных форм, описаний типов и прочего в виде множества текстовых файлов. Именно это позволяет выгружать код в систему контроля версий (в нашем случае Git) со всеми её возможностями, которых нам так недоставало ранее при разработке для ЦФТ-Банк.
Таким образом, разработчикам ЦФТ-Банк стала доступна возможность комфортно отслеживать историю изменений каждого объекта, включая не только время редакции, но и сравнение старой и новой версий через встроенный компонент либо с помощью любого внешнего средства типа Araxis Merge. Тому, кто не знаком с ЦФТ-Банк, это покажется удивительным, но ранее о таком приходилось только мечтать, храня историю изменений лишь в виде комментариев в коде.
Приятными бонусом послужила возможность синтаксической проверки кода без соединения с БД, а также удобная навигация (переходы в вызываемые процедуры по щелчку в месте вызова), быстрый контекстный поиск по проекту.
Отмечу, что новый админ оказался в хорошем смысле более привередлив к синтаксическим конструкциям в коде. Среди наших локальных доработок были выявлены очень странные выражения, например, что-то наподобие:
Непонятно, как Администратор словаря «переваривал» подобное без ошибок. Причём, если первые 2 примера представляют собой безобидный мусор, то последнее — явная ошибка, которая приведёт к некорректной работе программы.
И ещё одной особенностью Admin 2.0 является, благодаря интеграции с Git, функционал получения списка изменений на основе сравнения 2-х веток.
Это позволяет выполнять развёртывание этих изменений в целевую БД. Затем изменения из БД можно выгрузить по тому же списку элементов, используя старый Администратор проектов, в mdb-файл, если их необходимо передать для установки в БД, куда разработчик не имеет прямого доступа. Однако более интересным вариантом является подготовка и развёртывание изменений в новом формате. Он представляет из себя zip-архив, внутри которого находятся текстовые файлы с кодом, а также некоторая метаинформация. Побочным эффектом является возможность просмотреть и даже изменить код в передаваемой поставке без установки в какую-то БД, что в случае с mdb-форматом было невозможно. Но самое основное – сохранение в этот новый формат из Git-репозитория и развёртывание в БД Admin 2.0 предусматривает делать и в безинтерфейсном режиме, что позволяет настроить автосборку и автоустановку, т.е. наконец говорить о CI/СD в применении к доработкам ЦФТ-Банк. Правда, данную тему я планирую подробно раскрыть уже в следующей статье.
Особенности перехода на новую платформу
Материальный вопрос
Первое, с чем пришлось столкнуться — получение лицензий на рабочие места. На каждое рабочее место разработчика требуется отдельная лицензия, которая привязана сразу и к железу ПК, и к учётной записи пользователя. Если у вас в компании тоже несколько изолированных сетей, где есть сервера с ЦФТ-Банк, и ведётся разработка на них, то на одного разработчика потребуется купить несколько лицензий Admin 2.0. Стоимость одной лицензии на момент написания статьи составляет 125 у.е./мес., или около 8 тыс. руб. по внутреннему курсу. За первоначальную покупку на данный момент деньги не взимаются. Лицензии распространяются в виде файлов, а не смарт-ключей, что позволяет без проблем развернуть среду даже на виртуальной станции.
До покупки можно договориться о предоставлении тестовых лицензий. В нашем случае были получены 6 лицензий со сроком действия — 4 месяца на бесплатной основе. Условия обсуждаются с персональным менеджером индивидуально.
Настройка рабочих мест и БД
Серверную часть IDE можно устанавливать и в рабочее время, но правильней будет, если в момент установки не будут открыты на редактирование программные объекты ЦФТ, т.к. основное в обновлении — это новый механизм соответствующих блокировок.
Клиентская часть — это, по сути, Eclipse с расширениями CFT Platform IDE, устанавливается без прав администратора ПК. Только заранее должна быть установлена JRE не ниже 8-й версии. Доступ к обновлениям IDE на сайте ЦФТ теперь открытый, без авторизации. Можно настроить обновления непосредственно через сайт, либо из локальной сети. Например, из сетевой папки или с использованием менджера репозиториев вроде Nexus. Мы выбрали вариант сетевой папки как самый простой в настройке, не требующий доступа в Интернет со всех рабочих мест, надёжный, что важно при настройке тяжелых обновлений, и гибкий ввиду возможности выкладывать обновления по своему расписанию.
Выгрузка кода локального приложения
Для создания проекта, с которым будет работать Admin 2.0, нам нужно выгрузить из БД в папку с набором текстовых файлов описание объектов, являющихся нашими локальными доработками, а также, условно говоря, ссылки на объекты, от которых наши доработки зависят.
Отмечу, что при большом объёме локального приложения среда разработки начинает тормозить, поэтому в такой ситуации необходимо будет деление исходников на актив и архив. К счастью, в лимит мы вписались при немалом объёме локала. Однако стоит учесть объём оперативной памяти рабочих станций. Согласно документации требуется не менее 16Гб, хотя некоторое время части наших разработчиков удавалось работать и на 8Гб памяти, надо было лишь отрегулировать объём памяти java-приложения в файле eclipse.ini.
Что касается выгрузки — процедура несложная, т.к. все необходимые скрипты, такие как для подсчёта объёма приложения, для получения списка объектов и другие входят в комплект поставки.
Адаптация кода
Адаптация заключалась в дополнении того, что не собрал скрип, например, прогрузились не все ссылки на таблицы в чистом Oracle, некоторые ТБП со сложным подчинением — в единичных случаях не подгрузились типы ссылок или массивы. Также надо было слегка подчистить код (см. примеры выше). Но самое главное — подстроить код под новые особенности:
Результат
Серьёзных проблем при адаптации не было. Нам посчастливилось «познакомиться поближе» со своим кодом. В процессе мы выявили недочёты в IDE и даже в технологическом ядре (в компиляторе), которые сейчас ЦФТ уже исправил.
Большую помощь нам оказали специалисты ЦФТ, которые оперативно реагировали на возникшие проблемы, а в случае замедления процесса внедрения с нашей стороны всячески нас стимулировали и поддерживали интерес. После всех этих подготовительных действий мы запросто настроили интеграцию Eclipse с Git и выгрузили в него код текущей версии.
Нам потребовалось создать регламент ведения разработок, т.к. разработчикам ЦФТ-Банк пришлось привыкать работать совершенно в ином стиле: правильно маркировать коммиты, работать в нужной версии и пр. Сама методика работы стала соответствовать общим стандартам разработки в IT-компании.
Несмотря на первоначальное снижение скорости разработки, Admin 2.0 был сразу встречен в нашем коллективе с большим энтузиазмом. За 1-2 месяца активной работы все привыкли к новой среде, а эффективность возросла.
Сегодня Admin 2.0 до сих пор находится на стадии активных доработок, но это гораздо менее сырой продукт, чем 2 года назад. Например, только недавно появилась поддержка работы с группами доступа, пока работающая с ошибками. Также развёртывание в безинтерфейсном режиме может завершаться с ошибками при наличии в коде макросов. Большинство недочетов, которые мы фиксируем, ЦФТ устраняет в пределах месяца. За эти 2 года мы использовали отличную возможность повлиять на развитие Admin 2.0. Сегодня компании, которые задумали подобный переход, смогут пройти этот путь ощутимо быстрее.
Открыт прием заявок на программы подготовки студентов от компании Центр Финансовых Технологий
Компания Центр Финансовых Технологий (ЦФТ) предлагает программу подготовки студентов по направлениям: «Разработка ЦФТ-Банк» и «Аналитика ЦФТ-Банк».
Участники проекта познакомятся со спецификой продуктов ЦФТ-Банк и получат практический опыт работы с HighLoad и разработки приложений для АБС.
Участники проекта познакомятся со спецификой продуктов ЦФТ-Банк, получат опыт построения коммуникаций с менеджментом и разработчиками, составления технических заданий на разработку и проектирования бизнес-логики программных продуктов.
Длительность проекта: 2-3 месяца.
Формат: презентации, решение практических задач и кейсов.
Набор: до 120 человек.
Конкурсный отбор. Участники решают тестовое задание и записывают видеовизитку.
Ведущие проекта: специалисты ЦФТ и банков-партнеров.
Возможности трудоустройства: от 30% до 100% участников проекта, успешно решивших практические задачи по итогам проекта.
Кому подойдет участие в проекте
Студенты старших курсов и выпускники вузов по направлениям: «Информационные технологии», «Прикладная математика и информатика», «Экономика и управление».
Преимуществом при отборе на направление «Разработка ЦФТ-Банк» будут обладать участники с базовыми знаниями SQL, теории баз данных, а также начальным опытом программирования на любом языке.
Преимуществом при отборе на направление «Аналитика ЦФТ-Банк» будут обладать участники с аналитическим складом ума и знанием основ моделирования бизнес-процессов в нотации BPMN.
Для подачи заявки на прохождения курса, необходимо заполнить анкету:
Мечтал стать сценаристом, а стал программистом
Привет! Меня зовут Михаил и год назад я стал iOS-разработчиком в компании ЦФТ. До этого почти 8 лет я проработал в сфере логистики и таможенного оформления, а айосером меня можно было назвать разве что из-за наличия iPhone.
Я хочу поделиться своим опытом. Зачем? Меня такие истории мотивировали на старте, и, возможно, именно мой опыт не даст кому-то опустить руки. Моя история не из разряда «как стать джуном за два месяца», а о том, как не соскочить в этом марафоне.
Немного о прошлом
До 2018 года я жил в небольшом городке — Находка, что на берегу Японского моря. Несмотря на своё профильное IT-образование, меня мало интересовало программирование. В универе мы проходили древние Pascal и Delphi, которые меня никак не увлекали. Хотя в студенческие времена меня мало что интересовало кроме корейских MMORPG. Играл в Lineage 2 и Aion.
Отучившись в универе, я ушёл в армию. А после службы я не нашёл альтернативы с нормальным заработком под мои способности (которых, как мне казалось, особо и не было). Так я оказался в сфере логистики. Сначала я устроился менеджером по работе с клиентами, затем — портовым экспедитором. После двух лет в логистике я решил перейти в таможенное оформление. Первое время мне было интересно, потом — просто всё устраивало. В какой-то момент я осознал, что дальше в этой сфере не хочу развиваться.
Почему iOS?
До сих пор помню тот момент, когда я увидел iPhone впервые. Это был безумно красивый iPhone 4, который подарили моему другу. Меня сильно впечатлило то, как было реализовано взаимодействие с ОС, насколько оно было плавным и отзывчивым.
С тех пор началась (и все еще продолжается) моя любовь к яблочным гаджетам. Эх, а это был далёкий 2011 год, когда Джобс ещё был жив, FruitNinja была в топе AppStore, а в Instagram не было рекламы.
Swift. Начало
Swift я начал изучать в 2017. Мне стало интересно — сложно ли создать своё приложение. Сначала я наткнулся на стэндфордские курсы, а позже я нашёл swiftbook, который уже к тому времени запустил Иван Акулов.
Язык по первости казался не таким уж и сложным для понимания. Ну что там? If, else, циклы — всё же понятно! Версия на тот момент была уже 3.x, которая в том же году прыгнула до 4.0.
Под это дело я приобрёл бу MacBook Pro 15’ 2010 за
40 тыс. рублей, так как запускать Xcode в виртуалке было невыносимо. Но даже этот древний Mac вызывал у меня восторг от качества его исполнения. Там стоял SSD и для учёбы хватало за глаза! Теперь в свободное время я изучал азы программирования на Swift.
Казалось бы, все есть для учебы, бери и учись! Однако, пару раз столкнувшись с «нерешаемыми» проблемами (например, closures), которые заводили меня в тупик, разум начал меня предавать и подкидывать мысли вроде: «а может это не моё?».
Спустя два месяца учёбы я начал отвлекаться на всё подряд и благополучно забил на самообучение. Почему? Не было цели. На тот момент меня всё более или менее устраивало и не было мотивации идти до конца — всё же вроде и так неплохо, зачем напрягаться?
Переезд в Питер
Всё изменилось в 2018. К тому моменту я уже всерьёз думал о Петербурге. После первой «неудачной попытки» в программирование, я решил попробовать себя в написании сценариев и у меня даже получалось! Я участвовал в различных конкурсах и да, я не брал призовых мест, но попадал в шорт-листы, что для меня, как для новичка стало большим результатом и ещё одним аргументом для переезда, ведь в Питере есть сценарные курсы и школы.
Были страхи и сомнения. Но случился момент, когда из одной компании я уволился, а вторая, куда я собирался пойти работать неожиданно, стала сокращать стафф. Когда как не сейчас переезжать? Я решил придерживаться плана — переехать, поработать первое время по старой профессии, параллельно учиться и пытаться пробиваться в сферу кино и телевидения.
1 октября 2018-го я уже был в Петербурге. В первую же неделю я устроился специалистом по таможенному оформлению, снял жильё и начал обдумывать дальнейшие шаги.
Swift. Вторая попытка
Как ни странно, к изучению Swift и iOS-разработке я вернулся, после того как начал посещать очные курсы по сценарному мастерству в Питере. Параллельно я ещё интересовался работой мозга, даже посещал очный курс сейчас уже небезызвестного Андрея Курпатова.
Столкнувшись с похожими проблемами при работе со сценариями, и немного разобравшись в том, как работает наш мозг, я понял, что на освоение новых навыков нам требуется значительное время.
Мозг буквально физически должен измениться, выстроив новые связи между нейронами. На практике это означает что нужно пройти через страдания от непонимания, делать ошибки и учиться на них.
Затем, взвесив приоритеты, я решил, что это время я всё-таки хочу посвятить изучению разработки под iOS. Сценарное дело я не бросил: оно перестало быть главной целью, но стало ещё одним способом самовыражения, делать это своей основной работой сейчас мне не хочется.
В феврале 2019-го я записался на вебинары в группе с преподавателем. Три месяца я жил в режиме «работа — дом — учёба». В таком графике было тяжело. Я проводил за компом по 12-14 часов в день: на работе 8-10 часов + дежурства, а после — еще 3-4 часа за учёбой. Подсело зрение, и я решил, что так больше не должно продолжаться — нужно что-то менять. И я решил уволиться.
Уволился я не сразу: сначала я проявил наглость и договорился с начальником ходить на работу 2–3 раза в неделю за половину оклада. Это наглость – потому как в той сфере, ты либо работаешь фул-тайм, либо не работаешь.
Так продолжалось месяц, а потом, как только мне нашли замену — уволили. Это позволило какое-то время не уходить в минус по деньгам и посвятить бо́льшую часть времени обучению.
Свободное плавание
Честно скажу: было страшно принять решение остаться без стабильного дохода. Но мысль, что нужно будет продолжать работать на прежней работе была ещё страшнее. Однако я был к этому готов: у меня была финансовая подушка после переезда и убеждённость, что я покупаю собственное время для того, чтобы освоить новую, интересную мне профессию.
Не сказать, что я учился 24/7. Я выдерживал 8-10 часовой учебный день, за который успевал проходить вебинары, делать домашки и изучать что-то параллельно (например, проходил очень интересный CS50, а иногда даже успевал посещать очные курсы по сценарному мастерству). Отдыхать я тоже не забывал: занимался спортом, играл c друзьями в PS4. Всё это помогало не перегорать и, на мой взгляд, качественней усваивать знания.
В таком режиме я провёл больше полугода. За это время я посетил пару бесплатных митапов для мобильных разработчиков: один от CocoaHeads в офисе Яндекса, а второй — MobiFest от ЦФТ. Признаться, мне было неуютно: не имея опыта коммерческой разработки, я чувствовал себя недоразработчиком, но мне очень понравилась атмосфера. То, что люди собираются и делятся знаниями друг с другом — очень круто! Это придавало сил и желания довести начатое до конца.
Первые собеседования
Некоторые из ребят, которые проходили со мной вебинары от свифтбука, делились успехами в чате. Кому-то уже через 3 месяца после начала обучения удалось устроиться джуном в аутсорсинговую компанию. Но это было скорее исключение, так как уровень знаний в группе был примерно одинаковым, да и многие отваливались еще до окончания курса.
В общем, я решил, что пора ходить на собесы. Я «причесал» все свои учебные проекты в github и написал резюме, впихнув туда весь стек, о котором хоть что-то знал.
Первый отклик, конечно же, был отказом и довольно неприятным. Мне предложили сделать тестовое задание и дали срок в 3 дня. По заданию необходимо было создать форму регистрации агента с валидацией полей и отправить её на сервер (дали ссылку на их тестовый API). Я сделал тестовое, попутно изучив регулярные выражения и отправил в срок. В ответ — тишина. Я решил перезвонить им сам, чтобы получить обратную связь, но мне лишь сказали, что я не подхожу.
Мне было важно понять, где я ошибся, но фидбэк я так и не получил. Сейчас я, конечно, понимаю, что там было не так, но впечатление всё же осталось негативное, ведь я потратил время и даже не узнал причины отказа.
Потом было ещё пара собесов, в том числе и очных, но заветного оффера я не получал. Было ощущение, что либо я недотягиваю, либо у компаний завышенные требования к джунам. Лишь одно собеседование из трёх, как мне показалось, было адекватным уровню Junior-разработчика. Тем не менее я не опускал руки и старался восполнять те пробелы, которые вскрывались на собеседованиях.
Стало понятно, что Петербург хоть и большой город, но предложений для новичков здесь немного, в общем-то, как и везде.
Focus Start
Осенью 2019, мне исполнилось 30 лет. Я всё ещё искал работу и наткнулся на объявление о наборе на очный курс по iOS-разработке от компании ЦФТ.
Я подумал, что это может быть шансом на дальнейшее трудоустройство, а если нет, то в любом случае я получу опыт и познакомлюсь с другими разработчиками. Учитывая, что курс бесплатный — я так и так в выигрыше.
Недолго думая я отправил заявку. Предложили выполнить тестовое задание. На iOS это выглядело как обычный TableView + DetailView, с поддержкой CRUD и сохранением данных между запусками приложения.
Я отправил тестовое и стал ждать. Через некоторое время пришло письмо с приглашением на очное собеседование.
Помимо меня в офисе были ещё ребята, которые также прошли второй этап отбора. Нас разместили в большом кабинете и дали пройти тест на оценку логических, вербальных и числовых навыков. Затем мы проходили интервью с HR и разработчиком компании. Интервью было несложным: коллеги хотели понять наш уровень знаний, мотивированность относительно курсов и, возможно, что-то ещё, что им было важно.
«Абитуриентов» было довольно много, но я отметил, что люди были разные: были как студенты, так и уже зрелые, явно с больши́м жизненным опытом. Это дало надежду и развеяло опасение, что ищут только молодых.
Нам пообещали сообщить результаты через неделю. К тому времени я уже закончил своё обучение на вебинарах, изучал только отдельные темы. И, конечно, мониторил вакансии.
Обучение на Focus Start
Через неделю мне пришло письмо! Мне сообщили, что я прошёл отбор. Всего на обучение отобрали 12 человек. Мы собирались 3 раза в неделю: по вторникам, четвергам и субботам.
По будням занятия длились 2 часа, а по субботам 4 часа. Суббота была ещё особенна тем, что в перерыв нас угощали пиццей. Ну, и чай/кофе были всегда в нашем распоряжении.
Начинали с самых азов, но наши преподаватели быстро поняли, что уровень ребят в группе выше нулевого, поэтому нам стали давать темы и задания посложнее. Я перестал мониторить вакансии и решил полностью сфокусироваться на учёбе.
Учится было интересно и материала было довольно много. Я даже не знаю, как справлялись ребята, которые ещё параллельно учились или работали. Всё своё свободное время (а его на тот момент было предостаточно) я посвящал домашним заданиям.
Примерно через месяц обучения нас разбили на группы по 3 человека, чтобы мы начали разрабатывать выпускной проект. Наша команда писала фоторедактор с использованием CoreImage.
С этого момента начался новый уровень. Если до выпускной работы всё зависело только от меня, то теперь нужно было всё согласовывать с командой. Декомпозировать задачи, проходить код-ревью, самому отсматривать чужой код, углублённо работать с гитом, решать конфликты, и вот это вот всё, что присутствует в реальной жизни каждого разработчика.
В конце обучения был «выпускной», на котором все команды презентовали свои проекты. Было очень интересно посмотреть на другие работы, и, конечно, все ребята справились на отлично. Вот что в итоге получилось у моей команды: https://github.com/c0dedbear/PhotoTune
Должен отметить, что преподаватели в течение всего срока обучения всегда были готовы прийти на помощь и поделится с нами своим опытом. Это было отличное время! Я даже немного скучаю по той атмосфере.
Что было дальше?
Дальше наступил недельный период неопределённости. Я не знал, возьмут ли меня, поэтому первым делом обновил резюме в соответствии с полученными навыками. Посмотрел на существующие вакансии и отправил пару откликов.
К моему счастью, я был одним из тех, кому сделали предложение о работе. С нашего потока взяли троих ребят. Компания довольно большая, поэтому я был рад начинать этот путь с уже знакомыми мне ребятами. Нас распределили по разным командам: у каждого из выпускников Focus Start есть ментор, который помогает развиваться дальше.
Кстати, в этом году к нам присоединился ещё один студент с моего потока, и теперь уже я сам помогаю ему погрузиться в проект, вот такое приятное стечение обстоятельств.
Подводя черту
Прошло чуть больше года с момента моего трудоустройства, и если подводить некоторые итоги на основе своего опыта, я бы выделил ключевые моменты, которые помогли мне не сдаться и добиться результата: