Pull to refresh

Comments 80

>Вина может быть в некорректно подобранном хостинге,
>подключить кеширование

Хорошо спроектированная система не должна тормозить на любых хостингах, это как минимум.
Говоря «система» Вы имеете в виду готовый проект или готовую CMS?

И что имеете в виду под «любыми» хостингами? Есть хостинги, на которых тормозит все. Идеальная система должна не тормозить даже там, где тормозит все? Такого не бывает.
Говоря «система», я имею в виду абстрактную систему, будь то CMS на веб-сервере, или будто то база данных.
Даже если у сервера узкий канал — можно включить gzip.

Всё тормозить просто не может.
-> Даже если у сервера узкий канал — можно включить gzip

Не совсем понятно, Вы же пишете «система не должна тормозить на любых хостингах» и тут же «если не работает — можно включить gzip». Так любой хостинг или любой хостинг с gzip? Это не тождественно, совсем.

Для быстрой работы Битрикса достаточно установить несколько модулей, и установить несколько директив. Ну, и написать хороший код, отталкиваясь от возможностей системы. Все. Простые условия и все будет работать.

Это как бы и входит в понятие «хорошо спроектированная система на Битриксе».
gzip не спасет отца русской демократии :) Давайте поговорим еще про eTags etc… Если канал узкий — его нужно расширять :) В противном случае n+1 соединение от максимального положит сервер, вместе с gzip и прочими «решениями» на коленках
Что-то вы в крайность ушли… Давайте представим классно спроектированную систему(сферическую в вакууме), рассчитанную на высокие нагрузки, на VDS-хостинге за 300 рублей. Она будет тормозить, т.к. будет упираться в процессор, в системные дескрипторы, память и многое другое, когда туда в одно время зайдет 1000 пользователей и будут с ней работать. Говорим про сложную систему, а не index.html файлик, отдающийся nginx'ом
Вы тоже идёте рядом с крайностью =)
Далеко не все хостинги VDS, далеко не везде узким местом является процессор.
Мне категорически не ясно, почему в качестве примера используется сферически плохой сервер в вакууме, в котором плохо ВСЁ =)

Если медлленный процессор — больше кешируйте, активней используйте memcached, используете только быстрые алгоритмы.
Если мало дескрипторов — правьте sysctl.conf, seciruty.conf, но проверьте дисковую систему на производительность.

Ситуации бывают самые разные, я не понимаю почему проблема должно обязательно решиться покупкой нового железа.
Не обязательно, но в 90% случаев купить железо дешевле, чем заменять нативные алгоритмы на быстрые, всё кешировать и прочее.
Согласитесь, что описанный мною случай требует железа, а не рефакторинга кода.
«Начали за здравие — кончили за упокой» :D Битрикс располагает к флейму :)

На самом деле — купить железо _не всегда_ дешевле, есть пределы масштабируемости, бюджетов etc… Все зависит от конкретного проекта и конкретной задачи, но anyway докупка железа — это временный, быстрый, фикс проблемы, для _предупреждения_ потери прибыли. Anyway нужно профайлить, оптимизировать и разбираться в коде, будь это index.html или сложная распределенная система, с наборами load-balancer's и прочими плюшками.

Вопрос в том — фиксить быстро и коряво, или нормально и правильно? Быстро и правильно, в 3 часа ночи, как показывает практика, редко получается — да и все-таки девелопер тоже человек, нормированный рабочий день должен иметь место быть. Посему на крупных проектах, по параметрам статистики задействуются резервные мощности (под мониторингом админа, вдруг DDoS?), на мелких же — звонок среди ночи: «Сайт упал, надо поднять, ничего не знаю» :)

Depends on
Это мистика, мой друг. Правильно спроектированная система должна быть либо создана с учётом под конкретный environment (как правило с запасом ~50% от общего перформанса), либо environment должен подбираться под конкретную систему — agile Agile (spectacular Spectacular).

Нет ничего универсального — есть лимиты масштабируемости, лимиты бюджетов и минимальные требования к environment
>лимиты бюджетов и минимальные требования к environment

С этого надо было начинать, а вы этим закончили =)
Если рассуждать по Вашей логике, тормозит абсолютно всё.
Тоесть ставлю битрикс на VDS за 600 рублей — тормозит. Ставлю джуму — тормозит. Пишу свой движок — тормозит.

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

Если магазину с 300 товарами в базе нужен хостинг за 1500 рублей, при том, что если на другом движке будет всё тоже самое и 1000 товарами — надо задать себе вопрос — чем занимается движок эти 10 секунд, пока открывает страница?
Это абстрактное утверждение ИМХО — мы должны четко понимать, какие именно проекты мы рассматриваем. Если это сайт-визитка, то безусловно мы копаемся в коде, делаем оптимизацию на уровне кода, так как ограничены бюджетом. Если это промышленное решение: Яндекс, oDesk etc — тут дешевле доставить один (два, десять) сервер в стойку, а затем уже, грамотно и неспешно, разбираться и профилировать.

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

Как писал автор в статье — захотели сайт, посмотрели рынок, поняли что движок хорошо берут и понеслась…
Что-то много о битриксе последнее время пишут. Скачал. Посмотрел.
global $SHOWIMAGEFIRST;
$SHOWIMAGEFIRST = true;
$this->content .= '<table width="100%" cellspacing="4" cellpadding="8">';

За такой код на любом языке расстреливают, и именно за него ненавидят phpшников. Выкиньте битрикс, чем легче система — тем проще ее поддерживать, а это монстр гавнокодный
-> За такой код на любом языке расстреливают

Приведите пример кода, за который не расстреливают? В статье идет речь не о том, что Битрикс идеально написан, а о том, что он способен решить определенный класс задач, если перебороть свою неприязнь и тягу к идеальному, и почитать наконец документацию к нему и требования. Они для того пишутся, чтобы их читали. А вот исходный код (не знаю, откуда Вы этот кусок, к примеру выбрали, хотя там много такого — спору нет) пишут для того, чтобы он работал, а не для того, чтобы его читали. По крайней мере, это идеология системы для маркетологов. По другому ее не напишешь.
UFO just landed and posted this here
Примерно так я его себе и представлял.

Хотя вообще, идеальный код — это чистый лист.
Идеальный код — это модель представления поверх модели представления об идеальном ЯП) Нельзя говорить об идеале, поскольку идеал это попытка человека достигнуть конечной цели творчества в зависимости от полученных ранее знаний.)) Так как мы не можем объективно судить об опыте человека, мы доверяем тем лидерам, которые возглавляют комьюнити или тем, которые завтавляют нас восхищаться.
Из этого следует, что продукт кода — практически проекция уникальности человека, кто представляет собой бесконечность.
Споры никогда не утихнуть… для програмистов код это психиаторское «АУ» в шлубины человеческой души.
А как же однобуквенная переменная W?
UFO just landed and posted this here
Вообще-то код пишут чтобы его читали.
Не могу ничего про идеально сказать, есть например на symfony проектик, sylius.com/, посмотрите как там написаны аналогичные модули битриксу
PS а на битрикс написан вообще хоть один тест?
-> Вообще-то код пишут чтобы его читали.
Увы, клиенту чаще всего не интересны внутренности его сайта. Ему нужно, чтобы он работал. Как это сделают — уже дело десятое. Я — не большой сторонник фреймворком, по одной простой причине — не люблю велосипеды.

Пусть я напишу хороший код, но разве это цель? Цель — сделать продукт. А вот так — раз за разом писать контроллеры для вывода новостей, пагинации, хлебных крошек… Где-то на третьем проекте все это надоест. Я уже не говорю про самописные админки, отъедающие бОльшую часть времени и не покрывающие обычно и 20% функционала готовой CMS. Того же Битрикса.

На счет кода. github.com/Sylius/SyliusWebBundle/blob/master/Controller/Frontend/AccountController.php
Взял первый попавшийся контроллер. Нет — достаточно грамотно написано и структурировано, но Вы уверены, что это идеал? И что человек, который будет дорабатывать за Вами этот проект, сходу выполнит доработку, например, по добавлению разных типов файлов для формирования счета-фактуры? (у Вас метод renderInvoiceAction за это отвечает). Вы на 100% уверены, что здесь не нарушены принципы SOLID? И не перегружаете ли Вы этот метод излишним функционалом, который можно было бы вынести за его пределы? По сути — для такой несложной доработки — придется переписывать целый метод. Начисто. Он ведь подходит только для формирования файлов pdf, больше ни на что не способен.

Здесь есть ошибки, пусть они не так заметны как в некоторых компонентах Битрикса. Но это тоже не идеал. И наверняка найдется человек, который скажет «за такой код расстреливают». 100% найдется.

-> а на битрикс написан вообще хоть один тест?
Функционал проверки сайта, думаю, можно отнести к тестам. Хотя модульного тестирования в битриксе, конечно, нет. Он не для этого. Это законченный продукт. Вы не сравнивайте готовый продукт (паяльник) с набором запчастей для собирания паяльников, микроскопов и телескопов. Это несравнимые вещи ведь. Если клиенту нужен не красный паяльник, который есть в стандартной поставке, а синий, то ему проще порекомендовать готовый продукт. Если ему микроскоп нужен, то есть смысл подумать в сторону набора запчастей. А возможно и есть уже готовые микроскопы (а ведь скорее всего есть).
шикарно вы рассуждаете!
То есть двигатель у машины надо тестировать, но вот саму машину — нет. Это законченный продукт.
И кстати вы лукавите, сами же написали:
Битрикс идеологически — это набор компонентов.

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

Идеального кода не существует. Это фантастика. Вот о чем я хочу сказать.

И оценивать систему по качеству кода — это утопия. Оценивать нужно продукт.

И я ни в коем разе не говорю о том, что Битрикс для создания гибких и сложных проектов лучше, чем фреймворк. Но даже фреймворк не обеспечит той гибкости, которую даст чистый лист и знание php. Мы ведь не о гибкости ведем сейчас речь, и не о качестве кода? А о умении использовать конкретный инструмент, и понимании для каких задач он может пригодиться. Верно?
Можно узнать какой ряд принципов он нарушает? Желательно критерии по которым вы это определили, а не просто KISS например
Это оффтоп в теме — он нарушает все 5 принципов, они в общем-то взаимосвязаны, нарушается один — нарушится и другой. Вот две основные ошибки

1. На него возложено слишком больше одной обязанности (вывод счета по номеру в конкретном шаблоне в конкретном формате)

Не пойму, почему у Вас не вызвал удивления вот этот кусок:

$generator->setOptions(
array(
'footer-left' => '[title]',
'footer-right' => '[page]/[topage]',
'footer-line' => true,
'footer-font-name' => '«Helvetica Neue»,​Helvetica,​Arial,​sans-serif',
'footer-font-size' => 10,
)
);

а вызвал удивление этот

$this->content .= '';

Это ведь небольшое лицемерие с Вашей стороны? )

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

Вывод: код неидеален, система (в данном случае Symfony) тоже плохая. Что-то доработать на ней — невозможно. Я открыл код, посмотрел и понял, что за это ненавидят php-шников… Дайте яду! :)
Тут вы как раз не правы) я могу поменять шаблон, и мне не прийдется трогать код. И напротимв могу поменять код, не меняя шаблон. Тут нет сборки вывода, тут установка раций для него, если это важно заказчику — эти опции можно тянуть откуда ни будь. Это котроллер, так что он по своей природе не может делать сверх меры — он возвращает ответ
Битриксу тесты не нужны, понимаете) Он живет прекрасно и развивается) Ему плевать на наши разговоры. ) В этом смысле это большая беда для разработчиков — быть может мы как то организуемся и они нас услышат.
Объясняю. Смотрите. К примеру, у меня есть куча бабала которую я готов слить за 10 лет в погоне за идеальной cms, найду людей, фанатов.
Вопрос, она будет идеальной? А кто его знает… может и будет а может и нет. Говорят ничего идеального не бывает, наверное по той шизофренической причине, что я тут где то отписал. Мне, наверное, не надо напомниать, что люди даже не за деньги пытаются сделать идеальную cms. Поскольку с Верой человека как чувством, ничего не поделать. Она ведет.

Мы видим ОГРОМНОЕ компьюнити wordpress — код которого называют говногодом. Потрясающее объединение людей, с большим межнациональным багтрекером. Воистину фанстастика, поскольку такое даже за бабло сложно повторить. Однако, почему бесплатная cms №1 в мире обладает говнокодом и не слишком хорошей репутацией среди программистов?
Напрашивается вывод — что успех далеко не код. Успех — это спрос. Успешный фреймворк — это спрос на него. Вы смотрите с позиции разработчика, а ваш начальник скажет, что если мы не покроем эту фичу как можно скорее — будущего нет ибо конкуренты не спят.

Говнокод это ужасно. куча битриксовых компонентов просо отвратительны к кастомизации!!! Жирность тегами в коде, отступы в коде при выводе br. На капец!

Но! У нас есть два варианта, бегать за идеей идеальной cms, от которой мы будем ждать успех (= спрос на рынке, а не на разработчиков, не забывайте)
Либо объединяться, присоединяться и давить пидаргов, написавших говнокод. Лобировать исправление говнокода в cms.
Может я утопист, но иначе у нас эти разговоры друг за другом будут хороводы водить.
Я увидел кусок говна на улице! Страна говно!
Тут подпишусь под каждым словом. Спасибо за комментарий.
Не надо с вордпрессом сравнивать) Вордпресс — бесплатная cms, они ничего и никому не должны, в отличии от битрикса, который нехилую сумму просит за лицензию, за такие деньги качество должно быть соответсвующим.
Ну понимаете, это звучит так, что вас кто то заставляет что то покупать. Практически уголовщина)
Битрикс не занимается ни шатажем, ни вы могательством ни чем другим.) Никто не просит его использовать. Это такой же программный продукт как винда, где в соглашении написано: мы ничего вам не должны, а если что навернется, то мы не виноваты. Лучшее наказание для бирикса, отказ от его покупки. Но вы же понимаете, он пляшет от спроса. Спрос — цель компании. Почему нужно думать, что дожно быть как то по другому. Там штат программеров, им нужно будущее и зп как и нам всем. Другого пути в нашем мире пока нет, а делать религиозную cms довольно опасно.

Говорить за качество мы не можем, потому нет точки отсчета. Это же не прилавок с планшетами от китайских до брендовых, где мы делаем выбор по максимум 8 составляющим: процессор, экран, вес, время работы, удобство в руке, ощущение бога от использования, и пр.Это можно сделать объективно ибо мы смогли абстрагировать эти девайсы до 8 элементов. А как это сделать в cms системах? Любые попытки сравнения cms выливаются в невозможность это сделать из-за довольно сильных различий реализаций одних и тех же компонентов.

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

Все это можно прочувствовать и только. А на чувства нужно куча времени. Обратите внимание, кто долго кодит и на битриксе и на других cms не скажем вам никогда что бирикс говно. Потому что этот человек будет просто растерян в определениях. CMS код — это уникальный продукт творчества компании.И опытный разработчик вам скажет, что и там и там есть свои клевые вещи. Попытки объединить эти вещи обламываются ибо у всех эти вещи разные)))

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


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


Вам не кажется, что вы здесь сами себе противоречите?
Справедливости ради скажите пожалуйста… Когда хреновое проектирование закрывают костылём в виде кеширования — решение резко становится нормальным ????
Вот вы знаете, если честно, я уже достаточно давно смотрел битрикс изнутри (чистый битрикс, без чужих «доработок»). Но, почему то, мне кажется, что там мало чего поменялось. Хотя должно было. За такие деньги то…
И да, я видел «программистов» 1С. «Программистов», которые работают в больших компаниях. И видел код их тим-лидов. Хватило :)
Работайте сами с этими «хорошими программистами», а мне моё психологическое здоровье дорого :)))
Нет, я себе не противоречу.

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

Вот это надо понимать. Копать исходные коды и находить в них изъяны — это занятие совершенно несложное. А вот написать работающий код — это и есть задача любой системы подобного рода. Лично я считаю, что Битрикс с этой задачей справляется.
Нееет, вы говорите про то, что система тормозить не может сама по себе, виноват хостинг.
Т.е. Битрикс требует намного больше ресурсов, чем аналогичные по функционалу CMS. Так ведь?
Ненамного он требует ресурсов. Он требует оптимизрованный хостинг. А оптимизирован он с точки зрения php а не битрикса. Масса хостингов, кто за 120р в мес дает те настройки, где спокойно работает битрикс. И куча тех же самых 120р, на которых он не работает и вообще даже не пытается это делать. Разница в том, что за теже деньги продают разные ресурсы. Поэтому сложно говорить про ресурсы без цены за них.

Нет никакого аналогичного функционала у похожих CMS. Это попытка абстрагировать все и вся, чтобы было проще сравнивать.
Да, что-то из общих концептуальный вещей у других cms вагоны — кто спорит. А кто посморит, что коробочное решение для интеграции 1С у него работает проще всех?

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

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

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

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

В общем, в статье и говорится о том, что идеальный разработчик (сферический в вакууме) — это типичный представитель «против Битрикса».

«Я открыл код и посмотрел...» — как часто начинают критику с этой фразы. Разработчик не должен смотреть код, его задача код писать. Пусть это кому-то покажется странным. И его задача, чтобы код работал. Эстетические какие-то потребности — это уже второстепенно. Почему-то об этом забывают довольно часто.
Как, по-вашему, разработчик будет повышать свой уровень, если он не будет изучать чужие решения? Как он может глубже понимать используемый инструмент, если не залезет в его код? Да, есть доки, но иногда проще быстро посмотреть что делает класс/метод.
Вы считаете что хорошие разработчики, которые пишут работающие решения с хорошей архитектурой — это миф? Вы очень серьезно заблуждаетесь.
А ваш подход к разработчикам говорит о том, что они для вас «станки». Сказали сделать, нужно сделать. Его мотивация и рост вас не интересует. Это недальновидный подход, хотя на простых коротких проектах работает.
Я сам немного разработчик ) И я тоже люблю красивый код. Просто в данный момент времени пришлось подумать — а не стоит ли чуть сделать шаг навстречу маркетологам? Вдруг, не такое уж и УГ они предлагают. При ближайшем рассмотрении оказалось, что с системой работать можно.

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

Для большой массы сайтов при грамотном подходе Битрикс можно использовать как станок. И это экономит время разработчика. Которое он вполне может потратить на изучение других возможностей, написание своего движка… Ведь если студия развивается, то рано или поздно появляется клиент с большим проектом. Который уже удобнее реализовать на чем-то другом.

Я писал о изучении инструментов, а не о том, что не существуют хорошие разработчики. Конечно, они есть. Слава богу, очень много таких знаю. В том числе, и среди «битрикс-хейтеров».
Я таки вас не пойму. Вы начинает описывать «перфекционистов» стремящихся к идеалу, но внезапно пишущих костыли и велосипеды, а еще хлебные крошки во вьюхе пятью нативными запросами к бд. Очень странные перфекционисты. Очень и очень.
В мире пхп есть симфони и yii — которые вполне себе неплохо устроят искушенных перфекционистов. И уж если брать сферических перфекционистов, то обвинить их можно в оверинжиниренге, в погоне за модой, «идеальной архитектурой» — но уж точно не в костылях и велосипедах (про запросы из вьюхи к бд я вообще молчу).
Ну а код битрикса убог чуть более чем полностью. Я видел разный код, но уж когда я увидел код битрикса — и поработал с «сертифицированными битриксоидами» — для себя я отправил битрикс в список табу — «технологии с которыми не буду работать ни за какие деньги».
Такое ощущение что 1с-ники и битриксоиды это люди с какой то параллельной вселенной. У вас там действительно какая то «своя атмосфера».
Серебряных пуль нет, идеала нет. Но есть инструменты с которыми работать не противно, и есть люди чей код читать не противно.
Я уверен, что запросы к базе писал перфекционист, которому было противно разбираться с архитектурой битрикса, потому что он «открыл код и посмотрел, и понял, что никогда больше с этим работать не будет, потому что это убого»

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

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

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

Битрикс — для того, чтобы создавать на нем сайты, уровня сложности до средней. В разумные сроки и с разумным бюджетом. Этот сегмент рынка гораздо шире.
Перфекционист в первую очередь обратится к гуглу. А если говнокодер освоил рекурсию и впаял во вьюху пять запросов, то говнокодером он от этого не перестал быть.
На битрикс я не только смотрел, но и писал на нем, две недели, модуль оплаты кредитками с интеграцией по soap, как закончил модуль сразу ушел.
Никто не сравнивал фреймворки с вашим битриксом. Я бы битрикс сравнил с джумлой или друпалом. Мощнее на порядок да, но суть та же, древний как мамонт, хаотичная архитектура, костыли, говнокод. Только как уже тут указали эти всякие джумлы «бесплатны».
Фреймворки же хороши не только для сложных, а вообще практически для любых проектов.
Главные претензии к битриксу:
— прожорливость («спец настройски», «спец хостинг», «включите кеширование»)
— изначально фуфловая архитектура, которую надо «принять» и писать в том же фуфловом стиле
— низкое качество самого кода (хотя есть люди которые минусом это не считают)
— цена. за такой продукт стыдно брать деньги
— сообщество разработчиков (битрикс как черная дыра заглатывает молодых разработчиков в себя, после чего свет туда перестает попадать, они выпадают из общей айтишной тусовки, и развитие их уходит куда в сторону. После получения нескольких сертификатов становятся адептами новой веры и получают +15 к невосприимчивости критики битрикса. Примерно тоже самое творится и с людьми которые конфигурят 1с)
— маркетинг. все «неразработчики» свято верят в силу битрикса и если право выбора за ними то непременно выберут его.
-> Фреймворки же хороши не только для сложных, а вообще практически для любых проектов.

Фреймворки хороши для сайта из 5 страниц? Главная, Новости, Контакты? Я когда-то писал такие сайты на фреймворке, чувствовал себя крутым кодером от знания слов «Контроллер», «Модель», «Вьювер», а потом каждый раз ловил себя на мысли — что сэкономил бы себе массу времени, если бы был чуть попроще. А своя админка для каждого сайта — так ли это круто?

Да и кто у вас закажет сайт на фреймворке-то? С ним кроме компании-разработчика мало кто разберется.

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

Видел, когда в методе контроллера вывод шел через switch case с обработкой урла, видел прямые запросы к базе во вьюхе. Редко, кто умеет и использует все возможности ORM. И т.д. В общем, проблемы те же самые, что и в Битриксе. Разницы никакой. Вот представьте себе Битрикс — как проект на каком-либо фреймворке (или попробуйте написать, если время и желание есть). Получите тот же говнокод, с гарантией.

-> Перфекционист в первую очередь обратится к гуглу.

Не всегда. С убеждением, что на этом «г-не» ничего хорошего все равно не напишешь — он может начать фигачить запросы куда попало. Тут не прямая связь, но она есть. Я потом немного общался с этим разработчиком… И он тоже (сюрприз!) не любит битрикс :)

И по минусам немного пройдусь:
— прожорливость («спец настройски», «спец хостинг», «включите кеширование»)
Плата за функциональность и методы оптимизации.

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

— низкое качество самого кода (хотя есть люди которые минусом это не считают)
Да — есть такие люди :)

— цена. за такой продукт стыдно брать деньги
Есть люди, которым не стыдно брать деньги и не стыдно их отдавать.

— сообщество разработчиков
Первый раз слышу, чтобы сообщество разработчиков относили к минусу системы. Ну а стереотипы о том, что сообщество разрабочтиков этих — люди далекие или недалекие — это вообще ни в какие ворота. Прямое хамство и пустословие. Везде есть начинающие, есть середнячки, и есть гуру. И если гуру умеет создавать на Битриксе качественные сайты — то он все равно будет выше кодера, научившегося выводить hello world с помощью фреймворка. Сотый раз — дело не в инструменте. Дело в умении им пользоваться.

— маркетинг. все «неразработчики» свято верят в силу битрикса и если право выбора за ними то непременно выберут его.
Не все. Далеко. Многие студии, особенно начинающего уровня — отдают предпочтение вордпрессу, джумле и другим бесплатным CMS, потому что у них просто нет больших заказов.
Это классический «фриланс-вей».
Работаем ради денег: изучаем одну цмс-ку хорошо, пихаем ее везде, хотим больше денег — работаем больше. :)
UFO just landed and posted this here
А где говорится о том, что надо изучать одну cms и пихать ее везде? В общем, чистым фрилансом не занимался никогда. Если и приходится, то это касается поддержки уже готовых проектов. А тут вопрос выбора cms по понятным причинам не стоит.

Выбирали за меня обычно. И по довольно странным соображениям. По ходу и рождались и идеи, что раз мы так хорошо умеем продавать Битрикс, то давайте хотя бы научимся с ним работать.
Проблема в том, что редкого заказчика удается убедить, что он на самом деле хочет то, что имеется в стандартных компонентах… Обычно говорят «вот на сайте *** сделано так, надо чтобы у нас было наподобие»… или у них уже есть мегакрутые идеи своего дизайна и бизнес-логики, на которых они будут стоять до последнего. И тут варианты либо терять проект, либо, если заказчик готов за это платить, переписывать половину CMS под его нужды…

А с интеграцией с 1С — это извечный больной вопрос… я, правда, сталкивался с ней не на примере битрикса, а на примере UMI.CMS… про которую так же писали, что там интеграция «из коробки»… А выяснилось, что хотя и формат Commerce ML2 полностью документирован, но у различных версий 1С: Торговля данные формируются чуть по-разному… кроме того, далеко не все данные импортируются, не импортируются «Предложения»… я здесь даже выкладывал статью, как это дело поборол. Поэтому полностью согласен с тем, что надо интеграцию отдельно согласовывать на этапе утверждения проекта, особенно, если уже есть готовая база товаров.
Если заказчик сам инициативный и заинтересованный, то проект чаще всего получится неплохой. Заказчик сам половину работы сделает — по проектированию, по дизайну, по идеям.

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

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

Скорее всего эти 90% случаев — простейшие сайты, либо абсолютно стандартные (пусть и сложные) решения. В обоих случаях для заказчиков, которые хотят свой первый сайт.
Мне пришлось делать на Битриксе один обычный интернет-магазин с нуля и один портал основательно дорабатывать (после других разработчиков). Вначале впечатление было очень позитивное. Действительно, готовые блоки — вроде все что нужно есть и вполне сносно работает. Потом оказалось, что некоторые «мелочи» не реализованы или реализованы не так, как требуется. И вот когда я сунулся туда внутрь, стало нехорошо.
Сейчас я бы сказал так — если нужно сделать действительно типовой сайт и не предполагается его годами развивать — да, битрикс приемлимый выбор. Но чуть шаг влево или вправо, начинает возникать ощущение, что лучше бы сам все с нуля написал.
При этом продавать свой продукт люди действительно умеют. И масштабы этого несколько пугают.
Я не согласен с утверждением, что 90% случаев — простейшие сайты.

Какой сайт называть простейшим? Вот хабр, к примеру. Очень сложный и навороченный сайт, но костяк — это вывод постов, комментарии, разбивка по тегам. Это можно реализовать на Битриксе штатными средствами за короткий период :)

Уверен, что можно объяснить клиенту это. Что вот сначала мы пишем костяк, а потом уже рассмотрим Ваши пожелания на счет улучшений.

Пресловутые 90% клиентов все равно меняют свои требования по ходу проекта. Ясная картина у них перед глазами встает только, когда что-то уже работает, и что-то можно нажать, протестировать… И тут начинаются «хотелки».

Собственно, это уже вопрос продаж и проектирования. Но в статье этому уделяется основное внимание.
Моё утверждение было не таким. Я написал «Скорее всего эти 90% случаев — простейшие сайты, либо абсолютно стандартные (пусть и сложные) решения.»
Под простейшими я понимал сайт вида «набор страниц с текстом-картинками + новостная лента».
Насчет Хабра на Битриксе: можно реализовать нечто похожее. Но потом придёт заказчик и скажет «а здесь я хочу так». В стандартных компонентах будет иначе. И вот здесь начнётся ад.
К примеру, в моем случае заказчик захотел, чтобы покупать товары можно было без регистрации (очень разумное требование — я его обеими руками поддерживаю). В стандартном функционале этого не было. Пришлось лезть внутрь. И весьма основательно — там одно потянуло за собой другое…
При этом надо еще учитывать, что если разработчик сам пишет недостающий функционал, он развивается (как выше в комментах упоминалось). И полученный опыт дальше может использовать и в том же проекте и в следующем. Копание же в Битриксе конечно тоже даёт опыт, но он, мягко говоря, весьма специфический.
Для покупок товаров без регистрации тоже есть готовые решения в маркетплейсе ) Но с Вами соглашусь — что такие доработки надо оценивать отдельно всегда.

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

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

Маркетплейс — получается что а) придётся дополнительно платить (причем еще непонятно кто будет платить — заказчик или разработчик) б) это привязка к сторонним решениям совершенно неизвестных людей с неизвестным будущим.

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

Да — есть сообщества. Я там тоже многого не понимаю. Это люди, которые свой выбор сделали, и им нравится писать под Битрикс. Такие люди существуют и они могут дать качественный продукт на неидеальной системе. Выбор каждого — брать с них пример или с кого-нибудь другого, или идти своей дорогой.

В статье, по сути, идет анализ основных фейлов и попытка изобразить, что те же фейлы легко случились бы и на любой другой системе. Система играет небольшую роль. Главная роль — подход к ней.
вы правильно написали в заголовке "...CMS от маркетологов...". Основная проблема в том что они — «1С-Битрикс» позиционируют её такой, какой она не является. И вот когда ожидания не подтверждаются и происходят фейлы.
Да — в заголовке в общем написано, что система популярна не ввиду своей идеальности. А ввиду своей раскрученности. В статье речь идет о том, как научиться справляться с этим. И какие ошибки на самом деле происходят в проектах на Битриксе, и точно ли вина системы в этом есть?
расскажу про один из моих фейлов: интернет-магазин, всё как обычно, только одно специфическое требование было — это ведение документов: накладные, чеки. Чтобы они печатались и сохранялись. Так как сама система называется 1с-битрикс, да и компания связана с 1с, то заказчик, мужик, которому пофиг на все детали веб-разработки, думал что там есть все виды документов. Но это оказалось не так. Там скудный набор документов для печати. Пришлось делать их. Ещё заказчика огорчило то, что даже имеющиеся документы были старого образца, формы. Он то думал что вместе обновлением битрикса и обновляются документы для печати, но нет.
НУ а чего вы удивляетесь тому что думал тот кто по вашим словам не понимает?)
Я всё это написал к тому, что система позиционирует себя такой, какой не является. Вот и заказчик зашёл на ихний сайт, почитал, посмотрел, обрадовался. Подумал, что если компании 1с и 1с-битрикс связаны, то и проблем с документами и интеграцией не будет. И вообще там так красиво описываются другие возможности.

Вообще мне битрикс нравится. Особенно нравится что есть marketplace.
Просто не нравится объяснять заказчикам что на самом деле не всё так радужно как там написано.
Признатся честно… я не нашел той идеальной cms для заказчика… честно… любая технология — ограничения. На которые мы потом плюемся, говоря говнокод.
Мне просто интересно, отзываясь о битриксе в том или ином свете, многие ли знают, что существует .NET версия? Мне доводилось иметь с ней дело в течении некоторого времени, возможно поэтому я не сторонник возгласов в стиле «битрикс-отстой».
Она очень урезана по сравнению с php. Работал как-то у нас один дотнетчик — через месяц пересел за изучение php. .NET версия развивается в разы медленнее, и не поспевает за своим старшим братом.
Это действительно так, .NET-версия отстает от PHP
Более того, .NET версию закрыли :)
Не совсем так, теперь она называется .Net Forge CMS
Она так называется уже давно и её больше не поддерживают.
Информация с одного из последних вебинаров битрикса.
Идейные разработчики с одной стороны пытаются что-то втолковать меркантильным-«хорошая получка» ковырятелям этой поделки от инвалидов программирования, только зачем?
Не зря в названии продукта есть «1С» — Битриксоиды так же далеки от программирования, как и конфигураторы 1С, но тут другие проблемы — заказчики, ТЗ, планерка, ипотека, форд фокус в кредит.
А маркетологов битрикса нужно по судам таскать, потоянно описывают кучу фич, которых в продукте нет. Писали про какую-то революционную ORM, я залез, а там, как в 2010, CIBlockElement::GetList, воистину разивается продукт.
Ах да, помню веселые времена, когда находил у них баги, высылал патчи, а они вливали их как-то очень с опозданием, да еще и хамили
-> Ах да, помню веселые времена, когда находил у них баги, высылал патчи, а они вливали их как-то очень с опозданием, да еще и хамили
Вы каждый баг-репорт начинали со слов «битриксоиды далеки от программирования»? )
-> Писали про какую-то революционную ORM, я залез, а там, как в 2010, CIBlockElement::GetList, воистину разивается продукт

Ох… Вы же понимаете, что для обратной совместимости заменять в системе название ключевого метода, отвечающего за большую часть функционала сайта — неразумно? ) Или Вы чисто из принципа хотели, чтобы его название менялось в каждой версии? Это Вы, наверное, и имеете в виду под словом «развитие»?

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

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

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

А так каждый немного нестандартный проект с нуля писать… Не скрою — есть в этом элемент романтики. Но здравого смысла — не так много.
Бог с ним, с говнокодом, с отсутствием phpdoc'а, с мегаклассами на 8 тысяч строк, отсутствием элементарных вещей для облегчения работы. Ко всему этому можно привыкнуть и просто принять это как данность.

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

Salesforce, к примеру, из коробки — тоже пугает. Любой коробочный продукт нужно допиливать до состояния, когда он станет «user-friendly for end-user». Это и есть хлеб с маслом для нас с вами
Человек, который не может произвести банальный перенос данных с одной структуры в структуру Битрикс; программист, умышленно затягивающий итерации (этапы) проектов и который, к тому же, не в состоянии адекватно коммуницировать (есть такое слово, да? :) ) с PM/PA — не имеет права носить гордое звание «Битриксоид» :D

So, «Это мой первый пост…» и, надеюсь, последний :)
Sign up to leave a comment.

Articles