Я ненавижу 1С
Я ненавижу 1С. Нет, не так. Я ненавижу 1С! От всей души, искренне. Каждый раз, когда меня просят помочь с этой программой зла, получают вежливый посыл в известном направлении.
А все почему? Потому что 1С отличная платформа, попавшая в плохие руки.
Я искринне смеюсь над выражением «1С программист», просто нагло ржу. Я несколько раз наблюдал за их работой, читал их код, слушал лекции по программированию, и смело вас могу заверить: программисты 1С — это штучные экземпляры достойные внесения в красную книгу сразу за пандами, потому, что они не размножаются.
Приведу пример из жизни.
Есть база данных продаж, написанная сумрачным гением на mssql и имеющее фронтенд на делфи. Адовая смесь, которая работает и переваривает все, что в нее суют, а суют в нее не много не мало 35 тысяч документов за месяц. Фигня, по сути. Если эти документы собрать в текстовый файл — это жалких 100мб. И база выдает такие файлы каждый день, формируя выгрузку за год. Чтобы перелапатить 200-300 тысяч документов, ей требуется 10 минут.
Раз в месяц бухгалтерия берет эти файлы и загружает их в 1С.
Сервер 1С — самый мощный сервер группы компаний. Дохриналион памяти, флопсы, терафлопсы.
Слава великому Линуху, я не управляю этим монстром.
И каждый месяц с пивом и попкорном я смотрю, как этот монстр ложится под загрузкой 100Мб файла выгрузки.
Великие «программисты 1С» не знают о существовании типа данных tinyint,nvarchar(10) и прочих.
Зачем? Да пофигу, что в этой переменной никогда не будет больше 2х знаков, имя не длинее 50 символов, а число всегда 8 значное! Мы для каждой переменной зарезервируем в памяти максимум места.
— Out of memory? У вас просто сервер слабенький.
Спасибо Вам, благодаря таким «специалистам» моя ценность возрастает, а развлечения не кончаются. Горте в аду!
У вас просто 1Сника нормального не было. Работаю в одной компании и у нас тут SAP во все щели внедряют. Поверьте, лучше платформы, чем 1С на постсоветском пространстве пока ещё не придумали. Все вот эти мелочи с нехваткой памяти — детский сад, по сравнению с чудовищной несогласованностью данных и нелепыми попытками подступиться к сапу с целью двусторонней интеграции с имеющимися системами и сервисами. А знаете как решаются проблемы с несогласованностью данных? Организационными решениями. Поясню — это значит, что вместо реализации разного рода контролей и прочих проверок на стороне сапа, руководство запрещает простым пользователям косячить 😉 Результат таких решений предугадывается на раз-два.
Автор, 1С то тут причем? Если у админов руки из жопы растут и у «программеров» которые под 1С для вас пишут.
Для примера, у меня центральная база 1С весит около 800 гигов (периодически подрезается). В ней одновременно работает в пике — до 800 человек, режим работы 7Х24. Все работает — вопрос подходов к настройкам серверов, конфигураций и прочего.
А если что-то через жопу грузиться — так вопрос к тому, кто писал обмен данными. И не нужно путать фронт офис-с бэк офисом, то, что ты грузишь в 1С в конечном итоге превращается в хренову гору той информации — которой в фронте, который на дельфях писан — никогда не было. Начиная от бухгалтерских проводок, кончая движениями по таким регистрам, о которых фронт в принципе понятия не имеет. Поэтому вы и тянете данные с фронта в бэк — дабы их там обрабатывать в различных аналитических и синтетических разрезах.
Так что смотреть нужно в сторону оптимизации загрузки, разбираться, что тормозит, где тормозит, как тормозит. Тюнить базу по индексам, смотреть что можно кластеризовать и прочее. А сунуть базе 37000 объектов — ну бред. Хочешь получить гоночную машину из обычного автомобиля, будь добр оттюнить ее вручную. А типовые конфигурации — это нифига не гоночные автомобили, а стандартные заводские седаны.
Да, что бы понятно было и меня не обвинили, что я кроме 1С ничего не знаю, поэтому хвалю. Пишу уже лет 20. Пишу на куче языков начиная от асма кончая пыхой (правда дельфи вот как-то не очень люблю и паскаль в частности). Под 1С тоже пишу, начиная с версии 7.5 (6.0 — не считаем 🙂 там писаниной сложно назвать).
А что за документы-то выгружаются? А то есть неслабое подозрение что на стороне делфи все валяется в одной таблице, документы там одного вида и куча других упрощений. В то время как 1С-ка должна проводить по регистрам, считать итоги, делать проверку остатков. Это все учитывалось в сравнении? А то может в равных условиях делфи тоже будет падать?
Собственно, речь в посте идет не о хуевой 1С, а о рукожопых разработчиках. Коих в этой сфере много из-за низкого порога входа. Как платформа для бизнес-приложений 1С просто охуительна, на самом деле.
Читать ещё на Пикабу
Куда пойти в пятницу
Обсуждаем с коллегами, куда пойти в пятницу прибухнуть, закрыть такссать тяжелую рабочую неделю.
— а пойдёмте в то кафе, где модель паровозика на окне?
— не, пошли в баруху, где бутылки в виде голых баб!
— погнали в тот паб, там пиво окуенное!
— не ипёт. Идём в тот рестик, где охрененные стейки.
Сели в такси, приуныли. Против зама не попрёшь.
На месте оказалость, что все говорили про одно и то же заведение.
Байки погромиста. Если кто-то скажет, что программирование — это скучно
Детектив kesn всегда готов помочь!
Вообще я, как правило, нормально программирую. Иногда даже такое заворачиваю, что сам тащусь весь день.
Но если б я писал, какой я красавчик, то никому не было бы интересно. Поэтому сегодня — очередная партия программистских историй от меня любимого, с косяками, багами и болью. Иногда это происходило по запарке, или когда я торопился, или после нудной работы, когда мозг уже плавился, а иногда просто я тупил, потому что я человек. В общем, такие вот типичные будни кодера. Наслаждайтесь!
❯ Функция не выполняется
Попросил меня как-то клиент отладить его скрипт. Говорит, не работает. Невероятно!
Я, когда клиент говорит, что ничего не работает
Скрипт секретный — ну как, для трейдинга на бирже, и принесёт миллионы денег, конечно же, но только когда заработает без ошибок. Поэтому клиент не пересылает мне его, а запускает screen share и делает, что я ему говорю. То ещё удовольствие, но хозяин-барин — оплата почасовая.
Всё шло хорошо, я потихоньку распутывал кривую логику, говорил как лучше сделать, а потом мы дошли до неё. До функции, которая не выполнялась. То есть буквально, чел вызывает функцию, а она ничего не возвращает и ничего не делает.
Смотрим в содержимое функции. Как и положено, это полотно кода на пару экранов, сходу так и не поймёшь, что она делает. Повсюду return что-то там, ветвления всякие итд. То глупое чувство, когда клиент тебя ждёт, а ты ничо не понимаешь и косплеишь рыбу.
Осложнялось всё тем, что отлаживать через клиента — ну такое. Он может запустить скрипт, но вот отладчик для него — страшное слово, и максимум, на что можно рассчитывать — это поставить print() в нужных местах. Разгадка оказалась проста: где-то в середине функции, там, где это было менее всего заметно, вместо return клиент написал yield. А в питоне yield — это магическое слово, которое превращает функцию в генератор, а все return . — в как бы raise StopIteration(. ), и вместо результата возвращается итератор, и выполнение кода останавливается до следующего обращения. Короче говоря, всего-навсего одним ключевым словом клиент полностью раздолбал логику своей программы. Маэстро!
❯ Как ловить эксепшн из генератора
Вообще генераторы в питоне — это и добро, и зло, и я ещё напишу про это в следующей статье (поэтому подписывайтесь, чтобы не пропустить). И хотя я программирую где-то со времён построения египетских пирамид, всё равно я умудряюсь делать ошибки.
Вот, например, кусок кода:
Тут у меня есть функция cache.apply(), которая берет quota_chunks, делает с ними какой-то вжух-вжух и возвращает новые quota_chunks. Я нарисовал диаграмму, чтобы изобразить этот процесс в более понятной форме.
Иногда случается так, что эта вжух-функция не срабатывает, и тогда, как и положено приличному питон-коду, бросается исключение.
Возможно, раньше эта вжух-функция была действительно функцией, но потом она превратилась в генератор (для большей эффективности). Генераторы всем хороши, кроме одного: они откладывают выполнение кода, и в реальности узнать, когда ваш код выполнится, бывает затруднительно. Вы можете создать генератор, отправить его на вход другому генератору, затем передать это в функцию, и уж тогда где-то внутри этой функции вызовется код.
Если проводить аналогию с реальностью, то это как, скажем, банковский чек: вы выписываете чек на сто тыщ мильонов, видите, что чек не сломался и отдаёте его другу, друг заворачивает в декоратор конверт и отдаёт подруге, подруга кладёт в коробку и отправляет по почте бабушке на деревню, бабушка распаковывает коробку, распаковывает конверт, приходит в банк с чеком и ловит эксепшн, потому что на вашем банковском счёте нет такой суммы и никогда не было.
Именно это тут и случилось. Я вызвал этот генератор и проверил, что он отработал без ошибок, но на самом деле генератор отработал совершенно в другом месте — там, где вызывается spy() — и именно там он и упал.
А знаете как я это отловил? В тестах. Поэтому пишите тесты.
❯ Строго по инструкции
Клиенты бывают разные: какие-то умеют немножко в HTML и frontend, а некоторые из наших клиентов умеют в backend. Один из таких клиентов часто сам писал backend логику и давал нам её на проверку, чтобы мы ему исправили баги, а может быть где-то сделали рефакторинг или code review.
В этот раз клиент решил сам попробовать сделать деплой небольшого проекта на сервер. У нас есть стандартный шаблон, который мы используем для всех новых проектов, и клиент взял его. Всё, что ему нужно было сделать — просто следовать шагам, которые там написаны. В идеале такие шаблоны должны сами разворачиваться при помощи скриптов, но мы заленились и просто написали список команд, которые нужно выполнить. Ну например, в каком-то месте нужно было зайти по ssh в машину и запустить какую-то команду.
И вот клиент взял нашу инструкцию и начал следовать тому, что там написано, слово в слово. Надо понимать, что разработчики обычно пытаются понять, что они делают (по крайней мере я на это надеюсь). Соответственно, те, кто читал этот скрипт, понимали, что должно быть сделано, и в случае, если у них, например, вместо pip используется poetry, а вместо apt-get у них pacman (i use arch btw), то они заменяли соответствующие команды.
Клиент же делал всё слово в слово, и он написал нам, потому что на одном из шагов у него случилась проблема. Если быть точнее, у нас в инструкции была описана ветка master, а на гитхабе по умолчанию ветка main, поэтому какая-то команда не находила нужную ветку.
«Изи фикс» — подумал я, созвонился с клиентом объяснил, что нужно делать, и хотел отключаться. когда возникла ещё одна ошибка. Оказывается, в инструкции был косяк, и при выполнении команды шелл делал подстановку, когда видел $SOMETHING — то есть не было экранирования. Мы исправили и это, и буквально через несколько секунд всплыл ещё один косяк. А потом ещё. И ещё.
Где-то через час я сказал клиенту, что пусть он всё бросит и я задеплою всё сам, а потом мы обновим ридми. Было стыдно.
❯ Ответочка
Когда-то я работал на интернет-магазин, и мы заметили, что у нас появляются фейковые заказы каждые утро и вечер. Сначала мы не смекнули, что к чему, но потом поняли фишку: идентификаторы заказа у нас были обычные IDшки из Postgres, поэтому конкурент мог сделать заказ утром (номер заказа 10), сделать заказ вечером (номер заказа 15) и просто вычесть второй номер заказа из первого и получить количество заказов, которые мы получили за день (15 — 10 = 5). Я до сих пор часто нахожу эту ошибку во многих проектах, и примерно могу оценить размер этих проектов.
Эту ошибку легко исправить: достаточно заменить последовательные ID на случайные — например, вместо номера заказа использовать timestamp или UUID.
Но сам факт мониторинга нашего магазина конкурентом меня здорово раззадорил, и я полез к нему на сайт что-нибудь тоже искать.
Мой девиз — «кто ищет тот всегда найдёт» (посмотрите мои статьи про уязвимости на хабре — 1, 2). Так и тут, я искал и обнаружил, что конкурент выкладывает розничные прайсы публично, а вот оптовые — только для зарегистрированных и проверенных партнёров. Сам файл он раздаёт nginx’ом с адреса вроде http://some-site.com/files/розничный_прайс.xls. А если так, то, скорее всего, никакой аутентификации при помощи бэкенда для самого файла нет, а значит, можно попробовать найти оптовый прайс.
Используя весь опыт, накопленный человечеством за все годы его существования, я заменил слово розничный на оптовый в названии файла. и совершенно забесплатно, без регистрации и смс получил ежедневное обновление оптовых цен конкурентов. Соответственно, я мог предлагать оптовикам цены те же или ниже и получать больше профита. Хехе.
❯ Скрапинг со скоростью света
В одном из моих проектов я использовал api ВКонтакте, чтобы анализировать кожаные мешки. Там не нужна была супер-скорость, поэтому я не полез в async, а просто написал функцию и распараллелил её по потокам при помощи ThreadPoolExecutor.
Программа начала просто летать! Вот как это делают сеньоры! Саенс, бич!
Слева направо: саенс, бич
Потом я начал подозревать, что программа работает слишком быстро даже для такого классного парня, как я. Я полез смотреть результаты, а там ничего не было, потому что в каждом из потоков программа очень быстро падала с ошибкой, а так как это потоки, то exception в потоке не «всплывал» в основную программу, и я думал, что всё норм.
Поэтому если всё работает слишком хорошо, то, возможно, всё очень плохо.
❯ Бог рефакторинга
Пришел ко мне клиент и говорит: Саня, давай позумимся и посмотрим, что-то вебхук отвалился и ничего не принимает.
Ну я такой про себя «опять клиент что-то сломал, бывает», полез туда смотреть. Глядел-глядел, глаз вообще ни за что не цеплялся. Ошибок в sentry не было. Потом нашёл вот такой код:
На этом моменте я распушил свой хвост и начал рассказывать клиенту, что нельзя вот так декорировать метод, ибо этот декоратор только для функций, да и вообще аргумент self пропущен. Короче, комбо из двух ошибок.
К несчастью, у меня стоит расширение git lens, которое пишет, кто именно написал каждую строчку кода. Я в основном использую это, когда вижу какую-то хрень: если автор кода — чувак из наших, то, скорей всего, это я тупой и что-то не понимаю в задумке автора; в других же случаях это, как правило, обычный плохой код.
И вот я смотрю, а этот код написал. я сам. Вот так я примерно выглядел:
Самое смешное, что в оригинале клиент написал рабочий код, потом пришёл я всё рефакторить и случайно сломал. Я много раз извинялся перед клиентом. Ух, до сих пор стыдно.
❯ Детектив kesn и тайна ssh
Говорят мне как-то: клиент, с которым мы работали год назад, восстал из мертвых, и теперь ему нужно перенести и обновить проект в AWS. Вон там наш девопс написал какие-то скрипты сто лет назад, возьми их и задеплой.
Я человек простой, мне сказали задеплоить — я и задеплою, хоть на AWS, хоть на тапок.
Запускаю я скрипт, он всё делает, и теперь я хочу зайти на сервер и вручную проверить, что всё работает. И тут всё заверте.
Сначала пробую ssh -i ключ root@ip. Не работает. Потом вспоминаю, что юзер в AWS обычно ec2-user, поэтому пробую ssh -i key ec2-user@ip. Не работает. Может, там авторизация не по ключу? Пробую ssh ec2-user@ip. Не работает. Сделал dig, попробовал подключиться не напрямую, а через load balancer. Согласен, тупая затея.
Пошел в дэшборд AWS смотреть настройки файрволла. Вижу два странных айпишника. Очень странно. Беру первый, проверяю геолокацию по ip. По локации понимаю, что это, кажется, статический ip девопса. Какого хрена? У нас же есть бастион, и все соединения должны проходить через него. Проверяю второй ip из файрволла. О, так это же и есть бастион. Ну отлично, теперь делов-то — добавить всю эту конфигурацию с бастионом в .ssh/config, чтобы в будущем было легко подключиться. Лезу в конфиг, а там уже есть эта конфигурация.
Итого, в поисках настроек доступа я полностью проверил всю инфраструктуру, чтобы обнаружить эти настройки на моем же компе.
❯ Ошибка платежа
На sentry прилетел отчёт об ошибке, попросили посмотреть. Стал разбираться. Мой код двухгодичной давности.
Логика была простая: есть намерение клиента платить за подписку, и есть прикрепленная карта клиента. Пока намерение активно, мы пытаемся списывать деньги с карты. Это логично: даже если на карте нет денег, то раз клиент хочет пользоваться сервисом, мы будем пытаться списать до тех пор, пока это не получится. Если клиенту не нужна подписка — он отзывает намерение.
Единственное, что я не учел — что клиент может просто всё забросить, ничего не отменяя. И вот на протяжении года наш сельдерей-разнорабочий (celery worker) запускался, пытался списать у клиента деньги, получал отлуп, жаловался в sentry, и засыпал, чтобы назватра всё повторилось, и так каждый день, без конца и края.
❯ Лёгким движением руки сэкономить кучу денег
Я заметил, что очень часто клиенты могут сэкономить неплохую такую кучу денег, сделав просто какое-то минимальное телодвижение. Вот несколько примеров:
Чувак хостил видео на aws s3 и раздавал через амазоновский CDN. Выходило $655 в месяц. Потом нашёл BunnyCDN, я перенастроил приложение (заменил где-то 4 строчки минуты за две), и внезапно с новым CDN в месяц стало уходить только $70. Ну не эпично ли за пару строчек кода?
Клиент платил сотни долларов за жирный инстанс Elasticsearch на AWS. Почему — я хз. Потом он заподозрил неладное. Мы замерили реальную нагрузку и перенесли Elastic на одну из самых дешёвых машин в digital ocean, за которую клиент теперь платит $24 в месяц. Профит!
У клиента было много файлов на s3, платил он тоже много. Потом перенесли всё на b2, там даже делать почти ничего не надо — у них интерфейс совместим с s3. Получили экономию раза в 4.
❯ От судьбы не уйдёшь
У нас есть шаблон для новых проектов на cookiecutter. Он удобен тем, что если мы что-то меняем в шаблоне, то можем легко обновить проекты клиентов при помощи cruft.
Как-то меня наняли как раз обновить проект. Проект был старый, отстал от нашего шаблона очень прилично, и когда я попытался его обновить, то обнаружил, что изменилось почти всё. Я начал аккуратно разрешать конфликты, и как раз примерно в этот момент штатные сотрудники клиента начали пилить что-то эпичное в своей ветке.
И вот дело подходит к концу, у них куча изменений, у меня столько же. Мы говорим «ну мы всё», они такие «мы тоже вот уже заканчиваем». Начальник мне пишет: «Заливай быстрее в мастер, пока они не залили своё, а то будем потом всю жизнь конфликты разбирать. одинодин». Ну я на скорости слил наши обновления в мастер-ветку и мысленно пожелал удачи их разрабам: наша работа сделана, мастер мы обновили, а то, что их разработчики отстали от мастера и у них конфликты — ну штош.
Прошло много месяцев, и угадайте, кого они наняли, чтобы разрешить все конфликты и залить их ветку в мастер?
❯ Детектив kesn и поиски пароля
Настраивал я как-то инстанс elasticsearch. Там была отдельная машина, я на ней с помощью docker разворачивал ElasticSearch. Сначала делал всё в ручном режиме, проверял, потом писал скрипт для автоматизации. Для начала просто запустил сервер без всего, потом начал разбираться с авторизацией.
В эластике есть специальный скрипт — elasticsearch-setup-passwords — он настраивает пароли. Ну я его запустил, он мне выдал списки паролей для apm_system, kibana_system, kibana, logstash_system, beats_system, remote_monitoring_user и, собсна, elastic. И хотя мне показалось, что паролей было слишком мало и вообще-то для приличной поисковой системы их должна быть хотя бы сотня, но пароль для elastic был, я его забил в систему автоматизации и пошёл дальше настраивать. Дальше было SSL — не знаю, почему это не встроено (наверно, потому что если не будет https, то и взламывать elastic будет сложнее, а куда без этого!). Ну я пошёл в гугол и говорю: пацаны, сертификаты для эластика привезли? Когда я заикнулся про letsencrypt, они мне сказали, что у нас тут не загнивающий запад и мы сами сертификаты делаем, свои собственные. Короче, прям на официальной странице лежит огроменный docker-compose.yml, в котором вжух-вжух, сертификаты настраиваются, конфиги генерируются. Я его скопировал, применил, всё заработало, и я добавил это в автоматизацию.
Через несколько дней (когда я ужё наполовину всё забыл) мне вдруг понадобилось всё снести и настроить заново (спасибо, digital ocean, за то, что не умеешь даунскейлить диски!). Я запустил скрипт автоматизации, всё развернулось, и тут я вспомнил, что вроде как пароль генерируется сам и его можно узнать, если запустить elasticsearch-setup-passwords. Ну я полез на машину, чтобы запустить эту команду — а она не работает! Сначала был не тот url инстанса, пришлось узнать, что есть опция —url. Окей, теперь не хочет подключаться, т.к. кастомные сертификаты. Как добавить сертификаты? Прописать их в elasticsearch.yml. Читаю доки и там говорится:
All of these settings can be added to the elasticsearch.yml configuration file, .
. with the exception of the secure settings
which you add to the Elasticsearch keystore. For more information about creating and updating the Elasticsearch keystore, see Secure settings
Ну я полез читать, что за Elasticsearch keystore и зачем он нужен, и даже прочитал про bootstrap password и keystore passphrase. Мне показалось, что ещё чуть-чуть, и я дойду до чтения про большой взрыв и основы зарождения вселенной, а ведь я просто хотел узнать пароль от эластика!
Тут я бросаю взгяд на docker-compose.yml, и вижу, что там везде мелькает $ELASTIC_PASSWORD, и оказывается всё это время пароль был у меня в настройках и я сам его задавал!
Сказочный. эээ. патруль!
❯ Как дропнуть продакшен-базу
Клиенты любят нанимать фрилансеров или брать сотрудников в штаты, чтобы они работали над фичами — потому что нанимать нашу компанию достаточно накладно >:)
Ну и вот как-то клиент нанял стороннего разработчика, чтобы он перенёс систему поиска с эластика на postgres full-text search. Он сделал это именно так, как делал я лет 7 назад. Следите за руками:
Огромная ветка с кучей коммитов
В коммитах смешались изменения в БД и рефакторинг логики нескольких почти не связанных приложений
Миграции не откатывались
Бэкапов перед деплоем сделано не было (хотя это одна команда)
Не было переключателя «новая система / старая система», то есть старую систему просто вынесли нафиг и заменили новой
Не было оговорено временное окно для безопасного деплоя
То есть это прям классическая, железная точка невозврата. Угадайте, что случилось.
Конечно, сломалось всё. Система начала жёстко тормозить. Клиент написал нам и сказал, что надо срочно всё оживить. Т.к. это была критическая ситуация, то мы с СЕО залетели туда и стали смотреть. В изменениях было очень много всего — это был тотальный рефакторинг, поэтому локализовать проблему, просто глядя на код, не удалось. Так как прод не работал, то у нас не было времени воспроизводить всё на локалхосте и дебажить, и мы решили просто всё откатить.
Я откатил git revision на сервере на рабочий коммит, а СЕО зашёл в админку Digital Ocean и восстановил снэпшот базы данных, назвав его production-db-backup-Mar-24. Всё запустилось. Из-за использования снэпшота мы потеряли немного новых данных, но ничего критичного.
Потом мы сказали: всё, мы всё откатили, вот текущий коммит, вот текущая база, пусть ваш погромист всё дебажит и чинит или живите дальше в проклятом мире, который сами и создали ©
Через много месяцев (да, много историй именно после этого и начинаются) клиент говорит: а чё это за production-backup-Mar-24, давайте её удалим. Как же здорово, что он спросил у нас. Потому что программист клиента на самом деле ничего не починил, а просто свалил в закат, и вся инфра осталась в этом «пофикшенном» состоянии. И база использовалась резервная. Поэтому удалять нужно было сломанную БД с названием production, а рабочей была именно production-backup-Mar-24.
❯ Детектив kesn и загадочные тормоза
Серьёзно, я уже подумываю написать книгу про похождения детектива kesn’а.
Как-то я отлаживал асинхронный код, он читал бинарные данные с девайса, парсил их и отправлял куда подальше. Конечно, меня позвали, когда этот код начал тупить и кое-как работать, поэтому на входе меня ждала портянка спагетти-кода. Нам не привыкать, и я начал рефакторить и замерять скорость при помощи @funcy.log_durations.
Я кэшировал функции, пропускал ненужные фрагменты данных, уменьшал циклы. Сначала стало быстрее, но потом чем больше я отлаживал, тем медленнее код работал. Может, мой рефакторинг упустил какую-то важную деталь, и поэтому я делаю что-то совсем не то? Я начал логгировать и отлаживать даже самые маленькие функции. В конце концов дошло до того, что я, кажется, всерьёз начал задумываться об оптимизации скорости словарей в питоне (sic!), и в то же время моя версия работала медленнее, чем оригинальный код.
Потом до меня допёрло.
Чем больше я добавлял отладочной инфы, тем больше был оверхед. То есть я делал программу быстрее, но отладочная инфа делала программу медленнее.
Ха-ха. Я выключил отладочную инфу, и всё залетало. Ну и дурак!
Если вам понравилась эта статья, то посмотрите вот эту, она тоже весёлая: Погромист. Мои самые эпичные провалы за всю карьеру.
Если вам понравился я лично, как умная и образованная гиена, то вот моя тележка: Блог погромиста
Подпишись на наш блог, чтобы не пропустить новые интересные посты!
Ответ Scorpio4 в «Ситуации, когда человек строит из себя эксперта, не зная, что вы в этом деле профессионал»
Работал с начальником, который лет 15-20 назад был средним программистом, к текущему моменту его даже средним было не назвать, потому что он вообще никак профессионально не развивался.
Все это время писал на VBA (древний, достаточно узкоспециализированный и, как я понял, единственный язык программирования, с которым он был знаком).
Но самомнение и степень самолюбования были зашкаливающими. В контору приходили молодые (молодые относительно него, так-то им лет 27-30 было) шарписты и джависты, но уже с наработанным опытом, и всем он начинал петь одну и ту же песню: «Я специалист с 25-летним стажем, если у вас что-то не получается — обязательно обращайтесь ко мне, с высоты своего опыта я обязательно подскажу верное решение».
Разумеется, народ за его спиной хихикал каждый раз, когда он демонстрировал свою некомпетентность и отсталость.
А он продолжал надувать щеки и рассказывать банальные и самоочевидные вещи. У человека уже просто мания какая-то, ему все время нужны были уши, на которые можно было присесть.
Если к нему обратиться с вопросом, ответ на который предполагает варианты «да» и «нет», то он умудрялся прочесть лекцию минут на 40.
Иногда он подходил с вопросом к сотруднику:
Н: Тебе все понятно?
С: Да, вопросов нет
Н: Нет, ты подожди, некоторые говорят, что им все понятно, а на самом деле им непонятно и в результате сделаешь не то, что требуется.
И снова лекция на час ни о чем.
При этом в конце дня он частенько говорил «Ребята, мы ж сегодня очень мало успели (*интересно, блин, почему*), задержитесь на пару часиков, доделайте чтобы в сроки уложиться».
Меня в той конторе на 4 месяца хватило.
Начальник взял в руки лопату
Телеграм канал для тех, кому интересны другие мои приключения руководителя в IT.
Учёным можешь ты не стать, а инженером стать обязан. Часть 5
Я стал чаще бывать у Яшки. Я просто приходил и молча садился у него за спиной. Яшка был недоволен и поначалу сразу выключал игры и начинал что-то делать в компьютере, писать программы. Но мне было без разницы чем он занимается, я хотел уметь так же как он.
Надо сказать, что мышек тогда не было. Всё управление компьютером сводилось ко вводу текстовых команд. Интернета тогда тоже не было, документации не было. Ну, по крайней мере, я её не видел и даже не предполагал, как она выглядит и где её взять. Так что Яшка для меня был единственным кладезем мудрости. Но этот кладезь делиться информацией совсем не собирался и мне ничего сам не рассказывал. Приходилось эту мудрость добывать самому. Чаще всего я набирался мудрости созерцанием. Я просто сидел сзади и смотрел, что делает Яшка, а введенные им команды я записывал в блокнотик иногда интересуясь для чего он эту команду вводит. Я думаю, что вряд ли кому-либо понравилось бы, когда за ним постоянно присматривают. Но «охота пуще неволи» и потому мне было совершенно наплевать на моральные терзания Яшки. А Яшка в это время писал какую-то программу на языке Фортран.
Все команды приходилось вводить вручную, в командной строке. Яшка же, видя, что я не успеваю запомнить и пытаюсь команды записать, старался команды набирать побыстрее, чтобы я не успел их прочитать. Компьютер тоже не успевал команды выполнять, буквы даже не успевали отображаться на экране. Получалась своеобразная игра: Яшка торопится клацать по клавиатуре, а я тороплюсь записать – кто успеет быстрее? Яшка гордился собой. Он достиг максимума, успевал вводить целых шесть команд подряд – больше компьютер не мог «прохавать» и на экране была видна только первая команда. Но я его обошел, я стал записывать не символы на экране, а нажимаемые кнопки.
Так как при написании программы Яшке приходилось много раз повторять одни и те же действия, то в конце концов я сумел их запомнить и расшифровать. Но все равно часто приходилось задавать вопросы. Я был «чайником» и наверное задавал очень глупые вопросы, так как Яшка очень сердился и отвечал не с первого раза, и иногда даже не с четвёртого. Приходилось просто натурально задалбывать его одним и тем же вопросом, повторяемым в разных вариациях, пока, наконец, Яшке не надоедало слушать этот вопрос. И тогда можно было услышать в ответ целую тираду перемешанную оскорблениями. В конце концов, мне это понравилось. Мне понравилось смотреть, как Яшка сердится и как, в конце концов, мне отвечает. И я стал специально выдумывать самые глупые, идиотские вопросы, не имеющие ответа и задавал их Яшке в какой-нибудь особенно не подходящий для этого момент просто для того, чтобы посмотреть, как Яшка сердится и приходит в отчаяние от моей тупости.
Как то много позже, когда я уже хорошенько освоил операционную систему Рафос, отвечая на мой очередной дурацкий вопрос, Яшка мне сказал, что если бы я хотел, то мог бы взять мануал, который он распечатал и переплёл в типографии, и учиться по нём. Я удивлённо спросил, а где же его взять? Оказалось, что он давно стоит на полке среди другой макулатуры. Тут конечно я был удивлён. Откуда я мог знать, что у Яшки есть мануал и его можно почитать? Не буду же я у него шариться по полкам. И почему Яшка сразу не сунул мне эту здоровенную книгу? И честно говоря, мне тогда даже в голову не приходило, что есть книга, в которой полностью описываются все команды, которые понимает компьютер. У Искры была тоненькая инструкция и ее я изучил досконально, а откуда Яшка знает все команды М400 — я даже не задумывался, я просто считал его гением.
Через некоторое время после нашего знакомства Яшка куда-то пропал на пару дней и появился весь светящийся радостью. Оказалось, что он откуда-то притащил компилятор с языка Паскаль. До этого он писал какие-то научные программы на языке Фортран. Переплетенную книгу с описанием Паскаля и его библиотек он получил из типографии. Это был большая и довольно увесистая книга, напечатанная на принтере.
Яшка решил этот Паскаль изучать. Мне как-то особой разницы не было, но раз Яшка сказал, что Паскаль помощнее будет и нужно его учить, то стали учить. Вернее я еще пытался некоторое время удовлетворять свою тягу к программированию на фортране. Но сидел за клавиатурой чаще всего Яшка, как хозяин, а я чаще всего наблюдал, как гость. И, в конце концов, я тоже стал осваивать паскаль. У нас получалось то, что сейчас называют экстремальным программированием. Яшка писал программы, я подсказывал, когда мог, и находил его ошибки и опечатки. А когда Яшка выходил покурить, то я садился на его место старался успеть сделать хоть что-нибудь. Написанный код программы на языке Паскаль надо было странслировать, потом скомпилировать и лишь потом программу можно было запустить. Очень смешно было, когда Яшка ошибался в программе, то транслятор ему писал на русском языке: «Вибрарион Пасцал».
Продукты компании 1С: манна небесная или проклятие Люцифера?
Мне пришлось пользоваться софтом 1С несколько лет: сначала это была “Торговля и Склад” для моего несчастного магазина одежды — там надо было долго всё оприходовать, а в конце дня помечать, что продано. Причём по какой-то дьявольской (тогда ещё непонятной для меня) причине нельзя было почему-то взять и просто загрузить себе то, что я купил у поставщика по его накладным. Так оно не работало (я уверен, что и сейчас добрая половина мелких пользователей приходные накладные вбивает вручную) .
Потом был небольшой период работы финансовым директором швейной фабрики. Чтобы получить какие-то нужные мне управленческие цифры (совершенно обычные) , нельзя было просто нажать кнопку. Нужно было заказать отчёт программисту на аутсорсе. Он его несколько недель “программировал” и тогда отчёт появлялся. Но меня хватило всего на 2 месяца.
Потом в бытность вебмастером мне пришлось купить 8 лицензий на Битрикс (вместе с покупкой сайтов). После Вордпресса, где новая запись публикуется 2 кнопками, Битрикс взорвал мне мозг и я поклялся, что никогда больше не буду пользоваться продуктами этой компании. Но судьба распорядилась иначе.
Мне пришлось поработать директором мини-сети алкомагазинов, и там я познал, что есть “платформа”, а есть ещё что-то другое, непонятное — под названием “конфигурация”. Ломалось то одно, то другое примерно раз в неделю (иногда само, иногда — после обновления, иногда помогало Росалкогольрегулирование), а наш саппорт рассказывал, что это нормально, и что другие (даже большие) сети тоже страдают, не надо жаловаться, ведь такова жизнь. Я помню что за печать кастомных ценников мы заплатили программистам 200 тысяч рублей и таким образом стали IT-компанией.
Спустя много лет один из читателей задал мне вопрос:
“Расскажите, пожалуйста, чем вредит экономике 1С?”. А я ответил.
Всё очень просто: долгое время пользуясь монопольным положением, создатели продукта привыкли думать только о себе. В результате баги стали фичами, возникла совершенно адская экосистема 1С-программистов, которая в силу невероятной уёбищности продуктов засасывает кучу ресурсов (как кадровых, так и софтовых, да и железных) наших и без того нищих предприятий.
Все, абсолютно все релизы 1С переполнены ошибками. Старые исправляются, новые добавляются. Это происходит очень часто, а каждый апдейт — как прыжок в ад: заработает или нет? Совершенно обычна ситуация, когда после фирменного апдейта валятся кассы в сети из 20 (двадцати!) розничных магазинов и систему приходится откатывать, потому что никто не может ничего купить. Представляете, какое это дно?
Интерфейс ужасен, сами разработчики, очевидно, никогда не пользовались своим говном (ну, они же программисты, а не бухгалтеры) . Софт дико тормозной, поддержки никакой нет — нанимайте себе дармоеда под названием “1С-программист”. В каждую бухгалтерию по программисту — вот это экономия!
Отличный пример поступи этого мастодонта — Битрикс. Вроде как это был неплохой независимый продукт, но после покупки его одинэсом он стал чудовищем. Его заставляют покупать ради нативной интеграции, но на неё надо ещё потратить ххх тысяч рублей.
Но самый главный ужас (и самое страшное влияние на нашу экономику) — это то, что к этому говну все уже привыкли. Ну, типа, сломалось — не беда, оно же всё время ломается. Починим.
Так и живут.
Пост про 1С тогда вызвал бурную полемику. Человек 10 (видимо, 1с-программистов) единодушно написали:
— а лучше-то ничего нет
— у тебя просто руки из жопы
— некоторые конфигурации стабильно работают годами
— нормальный программист всё отлично настроит
— тебе заплатило Моёдело
— SAP ещё хуже и гораздо дороже
Вот комментарий интересный: «Убогость 1С — это её сила, они поддерживают свою монополию именно тем, что дают работу орде тупарей-программистов. А эти товарищи максимально заинтересованы, что бы всё ломалось, а им капали нормочасы. Мало того, никакой Дартаньян с суперским продуктом не проломит эту стену — ибо этот продукт лишит орду работы, а орде оно не надо. По той же самой схеме Битрикс выжимает с рынка остальные CMS, у продавцов сайтов есть пачка один раз написанных костылей, которые продаются каждому клиенту, как пакет необходимых доработок по интергарции с 1с и бла бла бла. Продукт, конечно, говно, но маркетинг блестящий.»
Я бы добавил, что блестящая у 1С дистрибуция, а маркетинг… ну, такое.
Я владелец веб-студии. И полностью разделяю ваше мнение по поводу битрикса и 1C. Но вот что интересно: с одной стороны, это распространенные продукты, и в последнее время клиентов с уже купленной лицензией битрикса стало расти, то есть они типа сумничали и сами заранее купили лицуху до создания сайта.
Но обратная сторона медали в том, что Битрикс и 1C — это два куска говна и при работе с ними обычно просят х2-х3 от базовой цены. То есть клиент платит дважды: один раз купив кусок говна, второй раз за его хоть какое-то рабочее состояние.
Про орду бездарей тоже согласен — много переделывали интернет магазинов с битрикса на другие cms. Всё направлено на выжимание бабла, а рядовой пользователь даже не в курсе, что машина на купленной стадии без руля, педалей, и коробки передач — не поедет.
После того, как эти комментарии я запостил у себя на канале, родилась ещё масса мнений, как хороших, так и плохих, которые я приведу дальше (даже если я с кем-то не согласен). Невероятные иллюстрации предоставил сервис Яндекс.Шедеврум (промт в описании картинок).
“10 лет своей жизни отдал одинэсу, с постом согласен на 146%”
“программисты на 1С — просто болото кодеров, из сонма которых вырваться непросто даже при желании и способностях. ”
«Довелось лет пятнадцать назад на 1С где-то год работать, 8.1 вроде. Не так страшна одинэсина сама по себе, как одинэсники.»
“как айтишник могу сказать, что битрикс — абсолютная шляпа для решения задачи управления проектами”
“Как тот самый дармоед 1С программист (хотя должность называется разработчик 1С) согласен с каждым словом.”
«Как страшный сон вспоминаю, как в 2002 контора, где я работала, переходила со СБиСа на 1С, а мой отдел отвечал за поставки в Метро Кеш эндКери. Месяца три я жила как на полигоне, со всех сторон народ атаковал, просто бои без правил были между складскими и бухгалтериями с обеих сторон.»
“1С точно создали рептилоиды, и с ее помощью переформатировали мозги бухгалтеров. Битрикс прожорливый кусок г-на, жутко требовательный к ресурсам, с максимально кривой админкой и избыточный для большинства проектов которые на нем пытаются сделать. Он похож на девятку, обвешанную тюнингом так, что она ехать не может”.
“С переходом на 1с ERP штат дармоедов вырос с 2 до 8, везде косяки, лаги, после каждой обновы слетает что то казавшееся незыблемым(((“
“Как же это все в точку, самое недружелюбное ПО, которым мы вынуждены пользоваться уже 15 лет и пользуемся, за это время сменилась пара десятков «своих» программистов, которых я даже друзьям порекомендовать не могу, для того чтобы сделать интерфейс работоспособным (я не говорю удобным- эта роскошь нам недоступна), нужно покупать либо часы, строго от 2 часов, либо готовый файл конфигуратор, который за 2тр добавит куда-то галочку. Стараюсь лишний раз уже не дышать на нее.”
«Мы после ухода майкрософта вынуждены были на это переехать (битрикс24, не сайт) . За 1 день из-за кривой логики синхронизации юзвери несколько раз убивали проектную папку на их «диске» (с шарепойнтом такого не было ни разу); лаги звука в конференциях достигают 10 секунд, их саппорт отвечает, что это в пределах нормы)
Общее впечатление от интерфейса — как это развидеть? Найти нужную функцию близко к невозможному, если ты ей не пользуешься каждый день. ”
“Я выпускник ВШЭ, ФКН. После выпуска искал работу. Чему меня научили помимо математики в Вузе: С++, С#, Python и остальное по мелочи. Сколько мне предлагали на вакансиях с этими языками после выпуска? 35-45к. Сколько мне предложили в 1С с нулем знаний? 70к. Угадайте, куда я пошел?”
“Работаю ведущим программистом 1С за большие деньги в крупной компании, меня все устраивает) сам бы не стал пользоваться, но работка не пыльная и деньги хорошие) Переведение на что то другое остановит все работы, топы никогда на это не пойдут, так что живем кайфуем”.
«Как-то видел объявление о работе в веб-студии, там было написано что-то типа «любить или хотя бы не ненавидеть битрикс». Система легендарна своей отвратительностью, конечно. ”
“Как руководитель отдела, как вы выражаетесь, 1с-дармоедов, могу сказать, что в посте 90% нытья смузихлебов, которые не понимают как работают учетные системы и автоматизация внутренних бизнес-процессов компаний. У нас вся автоматизация бека на 1С с кучей интеграций с различными сервисами: сайт интернет-магазина на rabbitmq, маркетплейсы, телефония, ЭДО, EDI итд итп. И всё это вполне себе неплохо работает с учетом что нас 5 человек и бюджет у нас на всю автоматизацию до 1 млн включая поддержку всей инфраструктуры. Есть devops, тестовые контуры, система релизов итд, так что баги если и пролезают на прод, то их мало и их можно быстро закрыть механизмом патчей платформы 1с. Плюсом к этому соотношение цены\таймтумаркет новых фич в автоматизации бизнес-процессов низкий в отличии от чего-нибудь самописноного на java. Знаю человека, который лидит команду, которая пилит на том же jmix erp для одной энергобиржи, там бюджеты порядка 50 лямов в год, они уже 3 год пилят, а сам продукт ещё только на этапе подготовки релиза. Везде есть свои баги и свои фичи, я не говорю что 1с лучшая платформа, она такая же как и другие, со своими особенностями. Тут весь вопрос в том, как это готовить. С сапом там вообще другая история, там стоимость кастомизации овердохера, поэтому внедряют, то что есть и скрипя зубами перепиливают свои бизнес-процессы под сап, когда в 1с можно всё запилить под себя. А вот это под себя уже можно сделать в виде говна и палок за 3 рубля каким-нибудь васей, либо сделать всё по красоте с командой из аналитиков, архитекторов и разработчиков”
«Есть «Бухгалтерия» и »Зарплата и управление. ». Там регламентированная отчетность. Их обычно просто ставят из коробки и все. И они сейчас выходят почти без ошибок. Т. е. с типовой версии уверенно сдаются все отчеты.
Есть «Управление торговлей«, «Управление нашей фирмой», «ERP», »Комплексная Автоматизация» и прочие. Это управленческие конфигурации. Они требуют доработки и настройки. И иначе никак: у нас мясокомбинат, моторный завод и IT стартап работаю в корне по разному! И 1С из коробки предлагает набор +- типовых решений, который надо допиливать напильником до кондиции.
Есть отраслевые решения. Например, «Бит. Стоматология». Это когда какой-то франчайз САМ сделал набор правок, которые САМ поддерживает и которые заточены под конкретный бизнес.”
“У этого дерьма есть 2 больших плюса:
— Оно как-то работает. Иногда даже работает правильно.
— В этой сфере нет жестокого кадрового голода. В любом Усть-Подзалупинске Зажопинской губернии есть десяток-другой 1С программистов. Для Ашота(Ивана?) который еще вчера торговал мандаринами с багажниками (подержанными машинами на авторынке?) и нихуя не понимает в этих ваших компухтерах есть только один критерий — дешево и мозги не ебать. И 1С справляется на начальном этапе, дает быстрый старт для 9 типовых задач из 10.
Потом это дерьмо обрастает кучей плагинов (если бизнес не умирает) и большим комом самописного дерьма, написанного этими самыми Усть-подзалупинскими 1С программистами, и оно продолжает как-то работать, с костылями, кривыми интеграциями с 1С контрагентов, налоговыми отчетами и кучей важного и неважного дерьма. В определенный момент уже никто не понимает как оно работает, а переделывать никто не хочет, потому что оно привет как дорого. Или нахер не надо, потому что работает (а Ашот может и не понимать что оно работает из рук вон через жопу, работает же).
Вот по такому набору причин оно и живет. Дорогая миграция, относительно дешевые кадры и привычка у 9 бухгалтеров из 10. Вендор лок мать его)” .
“С 2007 года сделал себе конфигурацию 1с. Самописную, конечно. На семёрке.
Обновлений никаких нет, поэтому проблем с зависанием каких то магазинов не может быть даже в теории. Работает быстро, не тормозит. Это же семёрка! Да ещё конфигурация с нуля создавалась, там нет ничего лишнего. А стало быть, и тормозить нечему. Знаю, что при 200 юзерах в сети будут проблемы, но у меня сильно меньше, так что переходить никуда не собираемся. Программистов 1с в штате нет. Когда надо, пользуемся внештатными. Пользователей стандартных конфигураций восьмерки жалко, это да. “
“Если бы 1с был бы настолько плох, то рыночек его бы давно порешал. Альтернатив море — программистов на нормальных языках валом, но у всех наступает творческая импотенция, когда речь заходит о том чтобы сделать нормальную замену 1с. ”
“Возможно, для 1 склада или ларька с сигаретами и есть альтернативные решения (эксель) ; но покажите мне альтернативу 1С для комплексной автоматизации на уровне хотя бы маленького заводика? Парус — видел, это говно (если оно еще живо) ; Галактика — не видел, но если они так хороши — покажите сегмент рынка, где они занимают больше места, чем продукты от 1С? И спросите у пользователей, почему. Вот и получается, что при всем богатстве выбора, выбора особо и нет. ”
“1С вроде как на рынке уже 20 лет, так почему другая орда дармоедов не смогла создать подобный продукт, но лучше? Было бы что-то подобное, не было бы и монополии и соответственно, плохого продукта, который не развивается, так как некому под зад дать. Вокруг 1С могут лишь плакать и терпеть. Пока пипл хавает и деньги зарабатываются”.
“У 1с никогда не было монопольного положения. В малом и среднем бизнесе у него была куча конкурентов, которые со временем померли, ну так нафига они это сделали, если 1с настолько плох? А в крупном — там сап, оракл, аксапта и навижн, галактика в конце концов и парус. ”
“Поработав с сапом и ораклом я полюбил тормозную и глючную 1С. В 1С можно настроить любой отчет под себя, не выгружая сырые данные в эксель со сводными таблицами. Здесь можно вытащить из системы эти самые сырые данные в принципе (в сапе для этого надо заказать отдельный отчет, который будут 3 месяца согласовывать и еще 3 месяца разрабатывать. А мне просто еще один реквизит надо в выгрузку вывести, причем реквизит уже существующего в ней элемента: в 1С я это сделаю настройкой структуры отчета в пользовательском режиме, в сапе я этого не смогу сделать вообще) . Здесь можно исправить ошибку системы за 10 минут на тестовой базе и за сутки — в продуктиве. Сап — несколько месяцев.
OEBS от оракла — глючная херня, написанная на коленке индусами и внедряемая, как правило, рукожопами. 7 тикетов на одну и ту же падающую форму при одних и тех же условиях.
САП — ископаемое говно мамонта с ужасным интерфейсом из 80х (спасибо, что хоть не вывод таблиц в виде потока символов, как было во времена доса) , нереально неповоротливое, с еще более ужасной чем в 1С культурой разработки, по нереальной цене (в сети валяется пресс-релиз о том, как на Туламашзаводе внедряли САП 4 года и внедрили — парам-пам-пам! — пропускную систему и кадровый учет) , с традицией утверждать, что если ваши процессы не соответствуют типовым — значит, вы неправильно ведете учет (а вовсе не потому, что исправить 30 лет назад придуманный порядок работы стоит дороже, чем построить новый завод — по причине нелепой архитектуры) . О, а еще ограничение на длину полей как из доса, из-за чего вместо работы с названиями элементов справочников нужно помнить их 11символьные коды. А если не помнишь — каждый реквизит заполняется выводом тормозной формочки с поиском. В результате заполнить транзакцию из 10 реквизитов занимает примерно полчаса (в 1 на это уйдет минута) .
Всякие Axapta/Navision по функциональности сопоставимы с 1С 7.7, и в подметки не годятся современной 1С ERP (а стоят существенно дороже). ”
“За 15 лет работы имел дело с МС Навижн, 1С всех мастей, самописным софтом, а до СВО успел еще потестить облачный Оракл. Считаю, 1с не хуже и не лучше других. У всех свои глюки/фичи, а в среднем — всё жуткое днище”
“1С Битрикс — хорошая CMS. В ней куча говен, к примеру создатели не знают что «краткость сестра таланта». И отличается от многих достойных фреймворков: Yii, Lavarel, поэтому прогерам после них кажется УГ. При этом на уровне архитектуры заложены хорошие принципы: MVC, компоненты. Достойная админка. Много фич. И часть говен устраняется умелой настройкой, в том числе и сервера. Преемственность поколений, написанное давно в целом работает. После того как провзаимодействовал с Magento, стал больше ценить битрикс.”
“Ужас 1с объясняется нелепостью тех процессов, для автоматизации которых она была создана.”
“А я думала, наши программисты бестолочи!”
А что у вас? Жду вашего мнения в комментариях.
Мы много лет занимаемся разработкой решений на 1С и для 1С. Нашли свою нишу в интеграции 1С и телефонии на базе Asterisk. И нам приходится постоянно мониторить выход новых релизов, чтобы тестировать свои и готовить расширения, если у кого стоит такая задача, обращайтесь https://telefon.miko.ru
Я как руководитель 1С: Франчайзи пропустил через свою компанию за 17 лет больше сотни программистов, консультантов, инженеров. Люди разные, кто-то ответственно подходит к работе, кто-то халтурит, но 1С отличный старт для толковых ребят, здесь действительно можно не только стать тупо-разработчиком, но и познать основы бизнеса, окунуться с головой в реальную автоматизацию. Проблема в 1С в том, что мы пытаемся автоматизировать бардак, привнести порядок в хаос, но чаще всего, особенно, если у консультанта не хватает софтскиллов, он может прогнуться под требования клиента и наворотить.
Продукты 1С большие и сложные, с кучей интеграций, с кучей легаси кода. По моему опыту, было уже несколько циклов, когда появлялся супер крутой продукт на рынке, простой, интуитивно понятный, идеальный для работы ларька, а потом постепенно он превращался в монстра, когда он адаптировался под бизнес разного уровня и требования законодательства. Это происходило и с 1С:Управление Торговлей, и с 1С:Зарплатой и с 1С:Управление небольшой фирмой.
На рынке же появился крутой и удобный АмоCRM, спустя 5 лет, он также превратиться в 1С, хотя там и пробуют облачный подход. Там кастомизацию сделали через расширения, плагинов миллион и при обновлении они так-же мешают друг другу, ломают работу системы. А запустить работу условной зубной клиники или оптовой овощебазы невозможно на одном продукте.
Так что, ругают много, а результат один, или универсальная система, с кучей специалистов в любом конце СНГ или пишем свою, за огромные деньги, с уникальным спецом, который в конце концов выгорит и некому будет взять эстафету. Потому и мрут супер продукты, а 1С живет и развивается 🙂
Я 10 лет назад разделил компанию на классический 1С:Франчайзинг и ту, что занимается разработкой решений для интеграции 1С и телефонии. У нас вполне devops подход, с кучей современных языков, стеков и фреймворков, которые мы используем, не обязательно кодить только на 1С, в ходу Go, C++, JS, PHP.
Проблем много, но их нет только там где ничего не просходит, на кладбище платформ-киллеров 1С 🙂
Ну а если всё-таки приходится работать с 1С, но хочется облегчить свои страдания, обращайтесь к нам https://alexrovich.ru/
Поможем допилить вашу 1С, внедрить в неё CRM или даже перевести её интерфейс на иностранный язык (да-да, и о таком просят). Сделаем из чудовищного бардака в системе бардак поменьше.
Меня как руководителя веб-студии, работающей уже 16 лет, сильно расстраивает то, что проделал Битрикс с рынком cms в РФ. Так вышло, что кроме клиентских сайтов мы поддерживаем свой собственный большой проект на фреймворке yii, ну и все мои программисты по долгу службы работали и с yii на внутреннем проекте, и с Битриксами на клиентских. И я не встретил ещё ни одного программиста, который ознакомившись с обеими системами предпочитал бы работать с Битриксом. Почему так?
Во-первых, когда берёшь чужой сайт Битрикса на поддержку, каждый раз проходишь квест, разыскивая, что где лежит. В отличие от чётких структур фреймворков, где всё всегда лежит на месте и понятно, где искать, в Битриксе структура проекта зависит только от фантазии разработчика. Одно это делает поддержку сайта на битриксе довольно дорогой.
Во-вторых, в современном вебдеве очень важно сделать сайт быстрым и лёгким, в том числе для мобил. Битрикс по умолчанию тяжёлый, так, например, в Битриксе стандартный джаваскрипт вывода попап-окон занимает более 3000 строк кода. Попробуйте-ка подружить такое с высокими оценками Google PageSpeed Insights. и если стоит задача по ускорению, то такие вот большие куски js приходится выпиливать, а это бывает ой как непросто сделать, приходится переписывать большие куски.
В-третьих, Битрикс как систему управления сайтами по умолчанию предлагают для любых сайтов, где он нужен и где не нужен. Битрикс является нормальным решением при синхронизации каталога товаров на сайте с 1С, а также при синхронизации заявок и диалогов с CRM Битрикс24, в других случаях его использование чаще всего нецелесообразно. После того, как почти все веб-разработчики на Руси несколько лет предлагали Битрикс в качестве основного решения (а битрикс просто купил их всех зашив 50% стоимости продукта в откат разработчику, продавшего CMS), они приучили рынок к простой мысли, что если сайт, то Битрикс. И это заблуждение прочно укоренилось в головах заказчиков. Приходит заявка на разработку сайта, и в 95% случаев там напишут, что CMS надо использовать Битрикс, блять. Прикол в том, что в 95% случаев он НЕ нужен.
Пару лет назад к нам обратился заказчик, которому мы делали контекстную рекламу и SEO, новый сайт им сделала та самая студия №1 Самизнаетекого. Так вот, они сделали так, что главная страница весила 33Мб, и некоторые просто не дожидались, пока она загрузится, нужно было сайт за ними ускорить. Если интересно, погуглите "Ускорение сайта для «Пегас-агро»", кейс очень интересный. Там и про качество вебдева в Студии №1 (при Чикуёнке такого не было!), и про то, как всем клиентам без разбора ебашат сайты на Битриксе, dв т.ч. где он не нужен от слова совсем.
Года три назад назад мы стали позиционировать себя как разработчики только на фреймворках. Битрикс умеем, на поддержку берём (плюёмся, но берём), но новые сайты на нём не делаем. Просто не понятно, зачем это делать, когда есть laravel, yii. Гордое позиционирование, но очень мало заказов, потому что почти никто не хочет слушать аргументы и включает «я хочу Битрикс», вот такие дела. Если честно, зла не хватает от этой херни.
Почему 1С-программисты — не программисты?
Услышал у знакомых такую вещь, что 1С-программисты — не программисты
Почему их принижают и зашкварно ли в 2200 году быть им?
05 Mar 2020 в 10:33 #2
Очень узкая специализация, что актуальна только в реалиях СНГ.
Программирование? — Да, безусловно. Но не подходящие под некоторые стандарты.
05 Mar 2020 в 10:35 #3
Потому что если это «код», то тогда я даже не знаю..
05 Mar 2020 в 10:36 #4
Можно не программируя много что делать. Даже sql толком знать не надо, есть конструкторы запросов
05 Mar 2020 в 10:37 #5
Очень узенькие. Тру кодеры должны быть широкие.
05 Mar 2020 в 10:38 #6
Потому что если это «код», то тогда я даже не знаю..
ты судишь код по языку? наркоман ?
05 Mar 2020 в 10:39 #7
Услышал у знакомых такую вещь, что 1С-программисты — не программисты
Почему их принижают и зашкварно ли в 2200 году быть им?
это как программисты макросов excel
05 Mar 2020 в 10:40 #8
ты судишь код по языку? наркоман ?
Наркоман явно не я, но тот, кто получает удовольствия, написывая подобные строчки
05 Mar 2020 в 10:40 #9
ты судишь код по языку? наркоман ?
Этим занимаются почти все более-менее знакомые с программированием люди.
05 Mar 2020 в 10:42 #10
Услышал у знакомых такую вещь, что 1С-программисты — не программисты
Почему их принижают и зашкварно ли в 2200 году быть им?
Я все понимаю если была бы темка про зашквар быть лолером, а не дотером. Но почему здесь эта тема . Здесь на форуме тусовка прогеров есть ? Здесь от силы человек 10 на форуме кто в программировании шарит.
05 Mar 2020 в 10:43 #11
Всю жизнь будешь за 3 рубля бухгалтерские рандомные таблицы и запросы пилить на руссифицированном в гугл транслейте вижуал бейсике — действительно, почему 1с программисты — не программисты?
05 Mar 2020 в 10:45 #12
Потому что если это «код», то тогда я даже не знаю..
Почему этот шок контент вне спойлера расположен? Мои глаза, они в огне
05 Mar 2020 в 10:48 #13
Это скорее бухгалтеры на максималках. Основная компетенция бухгалтер + немного говнокодера.
05 Mar 2020 в 10:50 #14
Всю жизнь будешь за 3 рубля бухгалтерские рандомные таблицы и запросы пилить на руссифицированном в гугл транслейте вижуал бейсике — действительно, почему 1с программисты — не программисты?
чекнул на хх.ру, там зп более менее на уровне. офк не обращал внимания на тир-1000 орги, где сидят 60 лет бабки, которые вынуждены принимать корвалол когда слышат слово «интернет»
05 Mar 2020 в 10:50 #15
Почему этот шок контент вне спойлера расположен? Мои глаза, они в огне
Все должны знать
05 Mar 2020 в 10:50 #16
Потому что 1с — пародия на уже имеющийся язык. В большинстве своём что у них было сделано? — Создатели тупо перевели американский язык программирование Бейсик на русский. Это даже не привкус, это стойкий запах тройного одеколона под названием «советская политика», где сильно принципиально было иметь абсолютно всё своё, а если такого не имелось, то тупо копировали один в один.
Отойдя от хейта «бездумного копирования», что за собой имеет 1с?.
Годами нарабатываемую и устоявшуюся систему, которая достаточно хорошо покрывает основные нужды предпринимательского сегмента. Да, она достаточно плохо, взаимодействует с другими экосистемами, однако сама по себе достаточно самостоятельная.
Неподготовленному программисту крайне некомфортно после устоявшегося стандарта «все языки программирования используют латиницу» переходить и привыкать к русским наименованиям, это так же минус (пример привёл парень выше).
Из-за этих же синтаксических конструкций, по понятным причинам язык актуален максимум в снг и ни шагом дальше.
В итоге, что мы имеем: язык программирования на русском, который не имеет никаких функциональных преимуществ перед аналогами, хотя и богат на свои собственные модули; язык, который может использоваться только в снг; язык, который только при огромном желании и энтузиазме можно связать с чем-то, написанном на другом языке.
05 Mar 2020 в 10:59 #17
чекнул на хх.ру, там зп более менее на уровне. офк не обращал внимания на тир-1000 орги, где сидят 60 лет бабки, которые вынуждены принимать корвалол когда слышат слово «интернет»
Чекнул на Украинском тёплом ламповом dou, там аж 6 анкет в столице и по одной в регионах со медианой 1500 баксов (кстати и это мало для мидла, та же джава — медиана 2500, .NET — 2200, ну да ладно), джунов анкет нет вообще. А сколько 1Сников из под курсов всяких ссаных должно было всплыть — где они все? Подозреваю что более менее нормальную зп получают единицы, которым повезло оказаться на правильном месте, и скорей всего даже они пашут как проклятые за эти 1500 бачей в пиджачке среди 60 летних бабок
Хотите внедрить 1С? Не берите программиста
6 вещей, которые он сделает неправильно, и одно решение.
Эти размышления адресованы в первую очередь собственнику, или руководителю компании, в которой возник на горизонте 1С проект.
07 минут 37 секунд
- Может быть, бухгалтер говорит: «мы хотим перейти на новый релиз 1С: Зарплата и управление персоналом».
- Может, отдел продаж требует CRM систему.
- А может быть, вы сами решили комплексно автоматизировать весь свой бизнес, внедрить себе 1С, чтобы наконец получать цельную и корректную управленческую отчетность «по одной кнопке»?
Не будем здесь и сейчас говорить о всех сложностях, которые подстерегают вас на пути «автоматизировать учет всего». Даже не будем пугать вас тем, что для того чтобы вы «одной кнопкой» увидели финансовый результат, очень много людей в вашей компании должно поработать, и внести кучу информации в 1С, и точно не «одной кнопкой» Со всем этим вы и сами столкнетесь в ходе автоматизации управления и учета.
Для начала предостерегу вас от самой главной ошибки, не берите 1С программиста!
Возможно вы сейчас удивились – «Как так? У нас уже вакансия на hh размещена, нужен программист 1С для запуска системы оперативного учета в компании …».
Остановитесь, не делайте ошибку, которая так дорого стоит. Тут я мог бы порекомендовать обратиться в компанию, которая профессионально занимается проектными работами и запускает учетные системы. Но это была бы рекламная статья, а я не пишу рекламные статьи.
Сейчас объясню, почему я считаю, что наём в штат 1С программиста для запуска 1С, это худшее решение.
В проекте внедрения 1С в компании всегда есть несколько важных задач, они достаточно стандартны, присутствуют в большем или меньшем объеме на каждом проекте. Перечислим их и поясним:
Основные задачи, которые нужно выполнить чтобы проект запуска 1С был успешным.
Кто обычно делает это в проекте
Что программист будет делать у вас за зарплату.
Обследование учета (бухгалтерского, зарплатного, управленческого и т.д.) Описание процессов, проходящих в организации и подлежащих отражению в 1С в любом, хотя бы упрощенном виде.
Бизнес-аналитик или консультант. Человек, знающий учет, умеющий говорить с бизнесом на одном языке, и умеющий все записать и нарисовать. Желательно, понятно.
Ничего . Скорее всего он не станет описывать процессы, не только потому что не умеет. Но и не считает это нужным.
Выбор и настройка типовых конфигураций 1С . Большинство задач и требований бизнеса может быть решено настройкой типовой конфигурации 1С. Для этого необходимо знать возможности типовых 1С, и уметь интерпретировать требования бизнеса (см.п.1), в настройки. Использовать типовые 1С — это здорово. Они обновляются, стабильно работают, в них часто появляется новый полезный функционал, выпускаемый фирмой 1С.
Бизнес-аналитик, или методолог.
Человек, идеально знающий одну или несколько типовых конфигураций 1С. До уровня «если я в бизнесе хочу считать это — мне нужно включить такую галочку, и выключить такую»
Программирует . Если у тебя в руках молоток, каждая проблема кажется гвоздем. Если ты не знаешь, как настроить 1С, программируй (почему это плохо: доработанная 1С будет плохо обновляться, давать некорректные данные и вести себя непредсказуемо).
Загрузка данных.
Почти всегда компания начинает работать не с «чистого листа». Нужно загрузить справочные и числовые данные откуда-нибудь. Эксель, старые учетные системы.
Программист под руководством внедренца или методолога.
Очень важно с самого начала правильно настроить все аналитики, и решить, что, куда и как будет загружаться. На этапе загрузки нужно проверить корректность данных, и решить, что делать с дублями, ошибками. Это решает методолог, и дает конкретные задачи программисту.
Программирует.
Загружает как умеет, в результате пользователи долго не могут добиться совпадения данных в старой и новой системе, проклинают 1С, зачастую много месяцев ведут учет параллельно в двух системах (старой и новой)
Доработки.
Да, возможно нужны отдельные доработки системы, печатные формы, отчеты, и так далее.
Программист.
Наконец-то программист получает волю, и делает свою работу. Правда, по заранее написанным требованиям.
Программирует.
Но мало кто из штатных программистов добровольно, письменно, фиксируют требования до того, как начать «кодить». Не любят они это.
Внедрение.
Очень важный этап, когда люди перестают работать в старой, и начинают в новой системе. В принципе, все что было раньше — это подготовка. А вот теперь будет пара дней «жары».
Внедренец .
Внедренцы — люди с нервами-стальными канатами. Они учат пользователей, они помогают им, они спокойно разбирают поток воплей «ничего не работает» по приоритетам и решают задачи. Они проходят вместе с компанией точку невозврата между старой и новой учетной системой.
Злится на пользователей.
Он же столько всего напрограммировал, и эти . не хотят работать. Всё работает, программист проверял. Просто пользователи безграмотные и не хотят.
Руководство проектом.
Это важнейшая(!) часть. Выставить все работы в правильном порядке и создать план, а затем добиться выполнения этого плана.
Именно РП лично отвечает за то, чтобы проект был выполнен в согласованный срок.
Руководитель проекта или администратор.
Проконтролировать сроки выполнения всех задач, и качество описания всего. Проверить все данные. Проверить готовность систем. Побивать всех участников регулярно (каждый день!). Проверить обученность пользователей и их готовность работать. Рулить запуском и поддерживать внедренца.
Ничего.
И это самое ужасно. Программист не управляет ни собой, ни проектом, ни пользователями. Спрашиваешь его — а можно план посмотреть? А нету плана. Есть только процесс (а что, хорошо, сидишь, ЗП получаешь каждый месяц, что-то пилишь непонятное).
Вы спросите, есть ли такие уникумы, которые называя себя 1С программистами, могут и снять задачу, и настроить типовую конфигурацию 1С, и вести проект и довести его до конца? Отвечу – конечно есть. Вопрос в том, сколько стоят такие люди. Если вы находитесь в Москве, такой «человек-оркестр», который может все, легко может стоить 150 т.р./месяц, или больше. А на какие деньги вы планируете нанять себе штатного 1Сника? За 60, или за 80 тысяч?
И еще немаловажно – даже если вы готовы выделить такой бюджет на 4-6 месяцев (столько обычно идет среднее внедрение 1С в небольшой компании), пойдет ли он к вам? Ему же еще и интересную работу подавай (огромные проекты, с тысячами пользователей в компаниях известных на всю страну), и поверьте, со своими навыками он может выбирать где работать.
Что же делать? Выходит, можно только пойти и нанять компанию подрядчика (Кораду например), то есть статья все-таки рекламная?
А если очень хочется своими силами запустить 1С? Ну вот хочется, чтобы человек был тут, рядышком, за соседним столом сидел?
Решение!
Берите себе РП. Возьмите руководителя проекта, или консультанта по 1С, с опытом запуска проектов. Назовите его должность «руководитель проекта запуска 1С», пусть он понимает свое позиционирование в компании. Требуйте с него управления вашим 1С проектом. Требуйте с него план, и отчеты о том, как план выполняется. Спрашивайте с него сроки.
Часть работ он сделает сам. Почти все 1С консультанты, могут отдельные задачи разработки сделать сами (а много программирования вам и не надо). А уж настройка, обучение пользователей, описание процессов (ну хоть какое-то), вообще его родная задача. На часть, которую сделать не сможет – скорее всего он позовет фрилансера. Это не страшно, если ваш РП будет сам ставить задачи, контролировать их выполнение, и отвечать за них.
- Дайте ему время изучить вашу ситуацию, пусть погрузится в бизнес и существующий учет. Это может занять от пары недель, до пары месяцев, но не больше.
- А потом пускай он напишет точный план действий, что, как и когда будет делаться, чтобы новая 1С была запущена и работала.
- Внимательно изучите план – убедитесь, что в ней есть такие задачи как «настройка 1С», «загрузка начальных данных», «подготовка инструкций», «настройка ролей и прав», «обучение пользователей», «запуск».
- Посмотрите, когда произойдет запуск. Вас устраивает дата?
- Спросите у него, что может пойти не так, что может помешать? И что он предпримет, если такие вот нехорошие обстоятельства наступят?
- Спросите его, какие ресурсы ему нужны? Возможно сервера, или деньги на фрилансеров? А время пользователей, которое нужно выделить для тестирования новой системы, он учёл?
- Спросите, откуда и какие данные будут загружены, чтобы в новой системе можно было работать?
Вам понравились его ответы? У вас возникло ощущение, что он понимает, что делает? Если да – отлично, вам повезло. Поздравляю вас, у вас есть хороший шанс дойти до конца с этим человеком.