TECH · 23 июня 2018, 09:06 · DianaVasileva - Author в dev.by
«Язык как будто в подвале со скуки изобрели». Программисты обсудили плюсы и минусы Salesforce

Количество вакансий для Salesforce-разработчиков в Беларуси постепенно растёт. Не менее десятка минских компаний создают веб-продукты на платформе Salesforce, а разработчики проводят тематические митапы. dev.by побывал на одной из таких встреч, где обсуждали, почему Salesforce, защищая платформу от дураков, добавляет работы умным людям.

Apex: нужно ли было создавать новый язык программирования? 

Бэкенд-разработчик Алексей Шруб начал с критики: по его мнению, в основе Salesforce лежат некачественные технологии. Основная его претензия относится к Java-подобному языку Apex, который используется пользователями системы для разработки.  

— Зачем понадобилось изобретать новый язык программирования? — негодовал разработчик. — Почему создатели платформы не взяли один из существующих языков, например, Java, Python, Haskell? Было бы читабельно, высокоуровнево, да ещё и модно. На мой взгляд, создание нового языка должно быть обоснованным. Ключевой вопрос: какую пользу он принесёт? Не видел ни статей, ни выступлений на конференциях, которые бы давали ответ на этот вопрос. В целом выглядит так, будто хакеры в подвале от скуки что-то изобрели.

Сергей Кочановский

Apex нельзя рассматривать абстрагированно от платформы, считает менеджер группы разработки iTechArt Дмитрий Черник.

— Если мы рассматриваем Apex в отрыве от платформы и сравниваем его, например, с Python, то, конечно, доводов в пользу первого у меня нет, — аргументирует свою позицию Дмитрий. — Apex — это скорее инструмент для решения определённых задач, а не обособленный язык программирования. Можно ли было вместо него взять, например, Java? Сложно ответить, мы не знаем, сколько бы стоило создателям Salesforce интегрировать Java или Python в платформу. Поэтому в разрезе платформы Apex — однозначно хороший инструмент.

Изменения в архитектуре — баг или фича?

Бэкенд-разработчика Алексея смущает тот факт, что недавно в Salesforce-платформе кардинально изменилась архитектура. Речь идёт о выводе нового интерфейса под названием Lightning. Для пользователя это просто внешний вид системы, однако под капотом — js-фреймворк, кардинально отличающийся от предыдущей версии системы. Это значит, что изначально CRM была сделана на коленке, считает Алексей.

— Складывается впечатление, что в компании Salesforce даже не было архитектора, который должен был продумать, каким путём развивать продукт. Если разработчики вынуждены вносить кардинальные изменения, значит, они плохо подумали изначально, — высказывает свои предположения бэкенд-разработчик.

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

— Компания три раза в год выпускает обновление для платформы, дополняя инструментарий разработчика. На смену старому Visualforce вышел современный, привлекательный Lightning, который позволяет создавать крутые приложения. Платформа Salesforce изначально подразумевала под собой MVC модель, а теперь происходит переход на MVVC. Этот факт говорит о том, что без технического архитектора здесь не обошлось.  

Да, технологии недолговечны, соглашается Алексей и приводит в пример COBOL — так и Salesforce однажды уйдёт с рынка. Хотя до этого «кто-то успеет купить машину или дом».

Лимиты в Salesforce — плюс или минус?

На замечание о том, что в Salesforce много лимитов (на общение с внешними системами, работу с базой данных и пр.), технический директор Twistellar Сергей Кочановский отвечает так:

— Как платформа, Salesforce обязана обеспечивать стабильность системы. Поэтому компания старается её обеспечить даже на «низком уровне». Чтобы разработчики не имели шанса построить архитектуру, которая свалит систему.

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

Директор Twistellar Дмитрий Лейчик.

Бэкенд-разработчик Алексей с этим не согласен: защищая стабильность системы от дураков, Salesforce добавляет работы умным людям.

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

Совсем другое отношение к лимитам у разработчика из iTechArt. Он предлагает рассмотреть несколько конкретных кейсов с лимитами.

— Давайте для примера возьмём лимит с количеством API Calls (максимум — 15 тысяч). Моё мнение: если за сутки две системы используют больше 15 тысяч взаимодействий, значит, они плохо спроектированы. Salesforce это видит и присылает нотификации с просьбой пересмотреть систему: что-то у вас не в порядке, раз вы столько запросов делаете извне.

То же самое с лимитом выборки из базы данных. Мне сложно представить интерфейс, которым удобно пользоваться, если у него больше 10 тысяч записей (я бы вообще разрешал не больше 100 записей). Если вам не хватает записей, возможно, у вас проблема с требованиями, либо вы используете не ту систему.

Интеграция с фреймворками 

Salesforce позволяет делать великолепные интеграции и добавлять в платформу различные фреймворки, уверяет специалист из Twistellar. Если предоставляемые built-in технологии не устраивают, можно взять React, AngularJS и пр. — они встраиваются в Salesforce.  

— Взаимодействие с бэкендом в Salesforce очень простое. Благодаря этому можно быстро и качественно создавать как нативные, так и гибридные мобильные приложения, которые легко интегрировать с платформой и third-party apps. Существует возможность использовать разнообразный встроенный API, есть документация по работе с базой данных, по использованию существующих сервисов в платформе.

Также можно создавать свой собственный API и настраивать любые интеграции. Для работы с Big Data, AI (вы же не будете использовать сейлсфорсовский Oracle DB для таких приложений) можно построить связующее программное обеспечение, сделать сервер на Python и соединить его с Salesforce.

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

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

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

Алексей с этими аргументами не соглашается:

— У меня есть сомнения в том, что Salesforce делает это лучше остальных платофрм.

Низкий порог входа для разработчиков?  

Специалист из Twistellar подчёркивает низкий порог входа в Salesforce-разработку: чтобы начать работать с Aрex, достаточно понимания основ программирования.

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

Дмитрий возражает:

— Некоторые думают, что в Salesforce низкий порог входа: почитал про синтаксис Apex — и можно пилить сайты. С таким же успехом можно говорить о любом другом языке программирования. Другое дело, что Java уже обросла множеством фреймворков, а Salesforce только идёт к этому. С выходом Lightning Salesforce-разработку уже можно приравнять к JavaScript. Если вы считаете, что на JavaScript низкий порог входа, значит, и на Salesforce тоже.   

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

— Я не понимаю, как платформа может не давать человеку читать книги, пробовать новые инструменты и технологии. Другое дело, если разработчик сам не хочет развиваться и пишет приложения, используя Visualforce. Хотя правильней было бы делать это, например, на AngularJS.

Дмитрий Черник

Для Алексея программирование на Salesforce равнозначно разработке на 1C.

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

Если человеку интересно решать, например, алгоритмические задачи, связанные с математикой, статистикой и т.д., то Salesforce не для него.

— Salesforce — это про бизнес, — дополнил Дмитрий из iTechArt. — Связь с бизнесом здесь гораздо более тесная, чем в других технологиях. Нужно глубокое погружение в предметную область. Мне, например, это нравится.

Платформа для стартапов, про которые, правда, не напишет TechCrunch

По количеству доступных современных технологий в платформе Salesforce обгоняет всех на рынке B2B, уверен директор Twistellar Дмитрий Лейчик. Например, CRM открыта к таким современным технологиям, как IoT, AI.

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

Поддерживает его руководитель из iTechArt: «В плане rocket science на Salesforce сделать что-то сложно. Но вполне возможно решать те специфические задачи, которые требуются бизнесу».

Salesforce постепенно превращается в ERP, считает Алексей Шруба. По его мнению, спрос на Salesforce-разработчиков в 4 раза ниже, чем на Java. Правда, за последнее время вакансий стало больше.

Дмитрий Черник считает, что в 21 веке не обязательно искать компанию в Минске. В Штатах спрос большой, он растёт, как и сам рынок — можно работать удалённо.

При этом получают Salesforce-разработчики не меньше, чем разработчики, специализирующиеся на конкретных языках.

Итоги дискуссии: плюсы 

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

И минусы

  • язык разработки Apex в отрыве от платформы не жизнеспособен;
  • как любой продукт, при внедрении с нуля требует доработки;
  • закрытая инфраструктура, жёсткая привязка к платформе;
  • вендор настоятельно рекомендует направления развития как в техническом, так и в продуктовом плане;
  • наличие лимитов, которые требуют подстраиваться под ограничения;
  • бизнес-фокус, требующий приобретать базовые знания о бизнесе;
  • «кровавый энтерпрайз», большинство проектов носят “приземлённую” практическую направленность.

 

Фото: dev.by

Источник: dev.by
Нашли в тексте ошибку — выделите её и нажмите Ctrl+Enter.

Обсуждение

Missing

Обещали текст согласовывать, ну да ладно, положу свои заметки сюда https://github.com/worldmind/notes/blob/master/salesforce.md

Missing-male
+3

Про язык странные рассуждения - причин появления апекса несколько и все они продиктованы тем что сэйлфорс это ПЛАТФОРМА.

Основные:

- избежать проблем с владельцем oracle - посмотрите истории с гуглом андроидом и Котлин

- отвязать жц грамматики своего языка от жц грамматики чужого языка

- иметь свой АСТ парсер чтоб делать нужную генерацию байт-кода потенциально не только для jvm, при этом встраивать нужные аспекты типа счётчиков и прочих сборов метрик для аккаунтинга

Missing
+1

Весьма странные у вас рассуждения, трудно понять вообще о чём они.

> избежать проблем с владельцем

Если стояла задача избежать проблем с каким-то владельцем, то можно было бы взять язык без владельца, тот же питон.

> отвязать жц грамматики своего языка от жц грамматики чужого языка

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

> иметь свой АСТ парсер

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

Missing-male
+4

трудно понять? - отличная отмазка.

1) языка без владельца не бывает - захотите его кастомизировать - форкайте и меняйте имя, иначе вам придётся иметь дело с владельцем или опенсорс комунити

2) отвязывать циклы жизни нужно чтоб с выходом к примеру явы42 у вас не появились конструкции которые ненужны/вредны/неподдерживаются в вашей системе, чтобы вам не пришлось внезапно выпускать патчи

3) если программисту нет разницы чего там внутри - откуда это ворчание? архитектору как раз таки есть разница какой там компилятор, ибо надо натягивать конструкции аст на байткод виртуальной машины ибо он не дурак разрабатывать свою вм, и ещё он очень хочет обернуть любой вызов функции пользователя чем то своим контролирующим чтоб учитывать использование железа + сделать аудит + проверить безопасность + много чего ещё полезного, облегчающего развёртывание всего барахла на 10ках тысячах серверов (это как аоп в спринге только на самом низком уровне)

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

- в вашей системе разрешается пользовательский код на java, как обезопасить платформу от вызова System.exit() в пользовательском коде - вы же не хотите иметь непонятные падения jvm на куче машин

Missing

> хотите его кастомизировать - форкайте и меняйте имя,

во-певых, не хотим кастомизировать т.к. не озвучено никаких причин обосновывающих кастомизацию языка, а не vm

во-вторых, если форкать ради изменений внутренностей компилятора, вирт машины, то язык остаётся тем же, ничего менять не нужно

> если программисту нет разницы чего там внутри - откуда это ворчание?

так ворчание не о внутренностях, а о языке

> не появились конструкции которые ненужны/вредны/неподдерживаются в вашей системе

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

> как обезопасить платформу от вызова System.exit()

в сейлсфорсе код не запустится если не пройдены автотесты с определённым уровнем покрытия, все нежелательные конструкции можно примерно также блокировать. Или в vm делать заглушки для всех трёх опасных методов

А если мы говорим для заточку под облака, то это должна быть не самопальная поделка, а нечто универсальное, типа Java for Clouds

Missing

ребята, конечно, наверное опытные и талантливые, но почему-то сейлзфорс это миллиарды и небоскреб в центре сан-франциско, а в беларуси - этого всего нет

B7fe96333c98cc59fbfc362413e03122?1531787039
+4

Статья есть, а хайпа нет. Надо было что-то шокирующее в заголовке. Вроде "5 причин почему Java говно, а Apex нет". И была бы 1000 комментов и хайп. А так, 4 задрота поговорили о своей боли, тоже мне событие.

Missing

Три ) Меня позвали как оппонента, я с сейлсфорсом не работаю.

B7fe96333c98cc59fbfc362413e03122?1531787039

типа, поунижай нас? :)

Missing

наверное задумывалось, что они меня поунижают )

9f1a9be48b95bacd20ee53bf6f086bce?1531787040
+1

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

А задротская боль – она прямо из недр души, что поделать :)

Missing

На правах рекламы? )

SalesForce - это по сути просто CRM система, навороченная да. Причем варианта on prem у нее нет - не то чтобы надо, но все-таки.

Ладно в ERP есть языки программирования, там все-таки бизнес процессы от и до, но CRM - это только отдельная узкая часть полной ERP. Насколько это вообще необходимо с т.зрения бизнеса так усложнять? )

0e27f15ac44387b43f0455a47f1533ab?1531787029
+2

Здравствуйте.

Salesforce - это уже далеко не только CRM-система. Если говорить обобщенно, то Salesforce - это автоматизация front-end'а компании, а ERP - автоматизация back-end'а. Очень часто большие компании интегрируют Salesforce со своими ERP-системами, и они друг друга дополняют. Salesforce предлагает набор решений для разных бизнес-задач: Sales Cloud, Service Cloud, Marketing Cloud, Community Cloud, eCommerce Cloud и прочее.

Но кроме прочего, Salesforce - это платформа force.com, на которой используя те самые языки программирования, можно реализовать любой функционал. И компании часто это делают, в том числе реализуют решения, типично присущие ERP-системам. И причины для этого могут быть весьма существенные, целый список можно отдельно написать.

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

Вот мы с Дмитрием Черником стараемся продвигать экосистему Salesforce в Беларуси и заинтересовывать ребят познакомиться с ней, помогаем с профориентацией. Работает Salesforce Community, проводятся митапы. Очередной - 18 июля. Кому интересно - вливайтесь :)

Missing
+1

Здравствуйте, Дмитрий,

Спасибо за развернутые пояснения. Если SF так широко разрослось последнее время и даже появилась своя платформа разработки, то свой язык программирования нужен. Вот вы правильно заметили про "огромные по своей сложности" проекты. Т.е. потенциальный заказчик - это крупная даже в международных масштабах компания. В Беларуси это малореально, только если на Запад работать...

0e27f15ac44387b43f0455a47f1533ab?1531787029
+2

Вы знаете, как ни странно, в мире очень много стартапов "стартует" с Salesforce. И маленьких состоявшихся компаний в Salesforce-экосистеме тоже много. Иногда компания из одного человека сразу начинает с Salesforce. Причины для этого тоже есть, хоть на данном уровне они не лежат в плоскости функционала Salesforce, который для подобных компаний довольно схож с альтернативами. Это, скорее, вопросы имиджа, надежности, масштабируемости в будущем, доверия к системе и т.д. Маркетинг - большое дело :) И конечно, компании поменьше, в первую очередь, довольствуются стандартным функционалом, программирования там не очень много, но какие-то простые триггеры или бэтчи требуются постоянно. Каждый пытается систему подстраивать под себя.

И да, Беларусь сложно назвать важным для Salesforce рынком. У нас вообще рынок незначителен для любого мирового производителя :) Хотя и здесь у Salesforce уже есть несколько клиентов, я думаю, даже больше десятка наберется, и поступают новые запросы постоянно.

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

Missing

Вот кстати хороший пример https://habr.com/company/psb/blog/415953/. Во-первых, "BPMS Camunda позволяет редактировать бизнес-процессы с помощью обычного Java" обошлись без самопальных поделок. Во-вторых, "open-source BPMS Camunda ... зарабатывают на продаже поддержки." вот такой продукт я готов использовать в работе.


Авторизуйтесь, чтобы оставлять комментарии

Использование материалов, размещенных на сайте, разрешается при условии прямой гиперссылки на dev.by. Ссылка должна быть размещена в подзаголовке или в первом абзаце публикации.
datahata — хостинг в Беларуси