Уникальный язык и сложные задачи: в intetics рассказали о новом проекте

      Комментарии к записи Уникальный язык и сложные задачи: в intetics рассказали о новом проекте отключены

Кроме того в коммерческой разработке имеется проекты, каковые предлагают непростые задачи и требуют от своих сотрудников нестандартных мышления и навыков. Разработкой одного из таких проектов занимается одна из самых успешных датских компаний совместно с Intetics Inc.

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

Уникальный язык и сложные задачи: в intetics рассказали о новом проекте

Разобраться, чем проект увлекателен разным по опыту экспертам, для чего был создан функциональный язык, в чем его возможности – окажут помощь Егор, Ярослав, Павел и Вита – парни, пришедшие на проект с разным опытом, пройдя путь до Senior разработчиков (кое-какие еще в пути).

Знакомьтесь:

Ярослав, 25 лет, Senior Software Engineer. Окончил КПИ. Трудится 3 года, ранее писал на JavaScript.

Павел, 34 года, Senior на данный момент Engineer. Окончил ХАИ. На проекте 3 года. Раньше был администратором и программистом 1С.

Вита, 21 год, Junior Software Engineer. Получает образование ХНУРЭ. 7 месяцев на проекте, мало писала на .NET.

Егор, 29 лет, Senior Software Engineer. Окончил ДОННТУ. Трудится на проекте 2 года, ранее писал на Java, Maximo.

— Итак, что за проект и какими задачами занимаются разработчики?

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

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

Павел: Я тружусь над частью совокупности дистанционного обучения, воображающую собой мультиплатформенную (IOS, Android, JS, C++, SWF) среду, предназначенную для сопровождения процесса обучения.

Продукт, над которым я тружусь, имеет несколько модулей:

— модуль, в котором студенты делают тестовые задания;

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

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

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

— Главная «изюминка» проекта — это язык. Работа ведётся на кроссплатформенном языке программирования, намерено созданном клиентом из Дании, и что сочетает в себе особенности функциональных и императивных языков. На что же он похож и сложен ли в освоении?

Ярослав: В принципе, похож на Haskell, но не таковой «ужасный». Это не чистый функциональный язык, тут нет монад, в целом все несложнее: event-подобная модель, реактивное программирование, observer.

Павел: С позиций функционала — заимствования из Haskell, ML. Данный язык строго типизирован, это от Java. Не поддерживает ООП (классы, интерфейсы), исходя из этого чем-то похож на Python.

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

— Обосновано ли создание нового языка для целей проекта?

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

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

Егор: Мне сложно оценить целесообразность, для этого необходимо было бы попытаться реализовать тот же функционал/приложение/фреймворк на каком-то втором языке и позже сравнить. В общем, проектов на данный момент довольно много, и они весьма разнообразные. Нравится то, что достаточно эластичный, поскольку, если не хватает какого-либо функционала «из коробки», в любой момент возможно это реализовать.

— Сложно ли обучиться новому языку с нуля? Особенно, в случае, если до этого был опыт только в ООП?

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

Егор: Для помощи кроме этого имеется неспециализированные чаты, в которых возможно задавать все вопросы.

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

Самое основное для будущих сотрудников — это огромное желание решать непростые задачи и мыслить «функционально». Функциональное программирование – достаточно своеобразное направление, основанное больше на математических понятиях. Таких, как лямбда-исчисление, рекурсия, функции высших порядков, и в принципе непохожее на привычное ООП.

Павел: Я бы дал совет почитать, что такое функциональные языки, взглянуть примеры кода, осознать, что такое функциональное программирование. Будет плюсом знакомство с книгами Дональда Кнута.

Вита: Что совершенно верно пригодится, так это рвение пробовать новое. Необходимо готовиться к маленькому «хаосу» — свободе в действиях и задачах. Кроме этого нужно будет деятельно общаться с командой.

— Какая задача была самая сложная из тех, с которыми ты сталкивался на проекте?

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

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

Ярослав: Для меня самым занимательным был "стаж работы" тимлидом на одном из подпроектов. Это было соединение двух занимательных для меня областей — коммуникационной и архитектурной. Тогда я попытался на практике пара новшеств — код и архитектурные диаграммы-ревью.

— методологии разработки и Какие подходы используются на проекте?

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

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

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

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

На отечественном проекте мы проводим регулярные ревью кода, контролируем код-стайл и архитектурный подход (схожий с Model View Update в Elm). Дабы обеспечивать яркое будущее для громадных проектов.

Основное, тут все необходимо будет делать в рамках парадигмы функционального программирования. Исходя из этого о классах и mutable состояниях необходимо будет забыть и обучиться думать по-новому — более математично, чистыми функциями.

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

Павел: В харьковском офисе трудятся весьма необыкновенные люди с различным опытом работы. Имеется сотрудник, что 8 лет программировал на одном языке, а тут решил заняться чем-то новым.

Ярослав: Воздух в Intetics дружеская, коллеги в команде коммуникабельны. И это мне весьма нравится. Я увлекаюсь математикой, физикой, компьютерными науками.

Егор: Кроме Intetics, в проекте участвуют ещё разработчики из Дании, США и России. Трудятся люди различного возраста, различных увлечений, к примеру, имеется мастер спорта по стрельбе из лука. Имеется призёры интернациональных олимпиад по программированию.

Сотрудников объединяет убеждённость в перспективности выбранного пути, как они сами об этом говорят.

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

Ярослав: Это перспективно первым делом для тех, у кого нет опыта. Тут задаётся вектор, но точно необходимо заниматься саморазвитием. Это путь в функциональное программирование по большому счету — в те же Scala, Erlang.

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


Интересные записи: