Моя работа в монополии: история о фиаско | 28 мая 2021 года, 10:27

Очень смешная история. Но вообще я поработал в свое время в таких компаниях и в целом понимаю, как понимать такие ситуации. Ну с позиции Software Architect.

Расскажу как программист с опытом оптимизации процессов в крупной компании.

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

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

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

Если же превысило threshold, нужно выпускать и распространять “патч”. Этот патч может починить одно, но сломать другое. Поэтому патч нужно тестировать на маленькой сети отделений, а потом постепенно распространять на более крупные. Это все довольно долго, потому что нужно собрать статистику и фидбэк, понять, ничего ли важного не ломает и т.д.

Ну и в такой системе всегда есть огромный перечень фич, который нужно имплементировать и внедрить. Фактически это очень длинный бэклог. Поставьте себя на место владельца такой сети – вы скорее выберете фичу, которая положительно влияет на выручку (плюс 0.05%) или фичу, которая влияет на удовлетворенность 0.05% клиентов?

Плюс очень часто выходит так, что неудобства и проблемы просто не пересекают этот threshold просто потому, что не налажена нормально система обратной связи. Клиенты не жалуются, потому что “оно всегда так было” и потому что “не с чем сравнивать, они тут вообще одни в городе”. Сотрудники не жалуются, потому что и так работает, чего себе работы прибавлять.

Кроме всего, такую распределенная система постоянно подвергается “атакам” и “взломам”. Не только со стороны конечных пользователей, но и со стороны ее операторов – сотрудников отделений. Это когда слабости начинаются использоваться для собственной выгоды. Часто это даже не незаконно. Как и в ситуации с “оптимизацией налогов”, тут просто включается русская смекалка – как использовать слабости в процессах себе на пользу. И получается как со стульями в Икее, которые берут на выходные на пикник, чтобы вернуть в понедельник обратно в магазин.

Любая очень большая система просто полна таких проблем. Решить их можно только раздроблением системы на куски меньшего размера, которые бы между собой конкурировали за качество обслуживания. Так устроены франшизы – взять тот же Макдональдс. Также важно, чтобы на одном поле работало более одной компании – конкуренция все исправит. Это бы починило “Почту России”, которая монополист.

Мои любимые и не любимые стороны работы | 08 апреля 2021 года, 11:46

Я разобрался, что мне больше всего нравится в работе:

1) искать причину проблемы в сложной системе или решение сложной задачи. Это то, что называется troubleshooting, но часто для этого не нужно даже прикасаться к клавиатуре. Еще это часто попадает в категорию reinvent the bicycle. В первом случае это что-то типа головоломки, для решения которых мозг генерит много потенциальных решений, и они друг с другом соревнуются. А руки уже проверяют эти решения и сужают круг вариантов для рассмотрения. Этот режим часто не выпускает меня с работы до поздней-поздней ночи. Во втором случае это желание сделать что-то не из готовых черных ящиков, а с нуля, чтобы разобраться. Коррелирует с п.3

2) создавать что-то по типу: придумал, и вот оно уже работает. Не только в программировании, но и в электронике и механике. Когда-то двадцать с чем-то лет назад я писал тетрис и 3D-редактор. Сложно было объяснить зачем, но было интересно. Ну ок, за 3D-редактор мне какие-то даже деньги заплатили.

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

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

Что не нравится:

1) любые регулярные рутинные вещи. Их приходится делать, но я всегда с удивлением узнаю, что есть люди, которые это любят.

2) принимать участие в общении, темп которого отстает от моего личного темпа и тема не интересна мне лично. Я теряю фокус и со временем перестаю слушать вообще.

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

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

с кем у меня совпадают интересы и неинтересы?

16 марта 2021 года, 23:04

Первая ласточка. Или я даже не знаю, блин. Попытка, частично удачная, сделать на 3D принтере объект, по форме обтекающий часть передней панели машины. Довольно непростая инженерная задача. Слепок отсканировал самодельным сканером, но дальше цифровую копию нужно привести к размеру слепка. Это нетривиально, пооому что нет понятных точек. Ну тут я вроде попал точно, увеличивать цифровую копию пришлось в 8.3 раза. Далее нужно учесть, что промах в миллиметр уже даст плохую усадку. Я тут слегка пропихнулся, но кусачки и напильник….

18 октября 2020 года, 00:26

Мой первый блин комом на 3D-принтере. Деталь получилась, но испытания в качестве адаптера ручной кофемолки к овощерезке провалила. Кроме того, что я не додумался проверить направление вращения вала двигателя (оказалось в противоположную сторону, чем надо мне), так ещё очевидно надо было сопромат вспоминать – толкатель на рычаг объективно слабый. Но зато теперь я знаю, как спроектировать деталь в CAD с нуля и получить ее в пластике через несколько часов. Принтер – Ender 3.

Совместимость Native SQL и SAP Commerce ORM: часть 2 | 21 сентября 2020 года, 00:09

Публикнул вторую часть статьи про работу с базой данных напрямую из Хайбриса. Спасибо @[100001772111225:2048:Тимофей Клюбин] за почти всё в том, что в итоге получилось.

В статье про L1 кэш, особенности multitenance, массовые апдейты – в разрезе как оно, если очень нужно работать с базой данных напрямую, а не через ORM, как “положено”. Статья очень “гиковая”, нацелена на опытных разработчиков на SAP Commerce, или на тех, кто хочет им стать 🙂

https://hybrismart.com/2020/09/20/how-to-make-native-sql-coexist-with-sap-commerce-orm-part-2/

https://hybrismart.com/2020/09/20/how-to-make-native-sql-coexist-with-sap-commerce-orm-part-2/

26 мая 2020 года, 21:19

Как оно работает, а? Стоило мне сделать на коленках прототип и написать в фб, так мне фб сразу стал показывать рекламу приложения, которое этот уже умеет https://apps.apple.com/us/app/onyx-home-workout/id1440639203

24 мая 2019 года, 01:10

На скорую руку соорудил сканирующую машину. Цель – отсканировать книгу, много-много страниц, следов сканирования на книге остаться не должно (посему два домашних сканера идут лесом). Сработало!

First Steps with ABAP: A Journey into SAP ERPs Programming Language | 20 апреля 2019 года, 11:26

Изучаю ABAP, язык программирования для SAP ERP. Написал свою первую программу, которая что-то там выгружает из таблицы материалов.

Из забавного:

1. ABAP – whitespace-sensitive, и ещё с довольно извращенным синтаксисом. То есть, x=a+b(c) означает не то, что вы подумали, а (пишу на джаве) a.substring(b,c), но если поставить пробелы x = a + b( c ), то будет вызов метода b с параметром c.

2. Печать integer по умолчанию выполняется форматная, то есть WRITE A выдаст 0000000056. Чтобы убрать нули, после названия переменной через пробел надо написать спецификатор формата NO-ZERO.

(Пост дополняется)

Unleashing the Power of SmartEdit in SAP Commerce Cloud: A Geeky Dive into Customization and Architecture | 09 апреля 2019 года, 09:41

Мой публичный вебинар (на русском) про архитектуру и кастомизацию SmartEdit в SAP Commerce Cloud. SmartEdit – это headless CMS решение от SAP, идущее вместе с Хайбрисом (SAP Commerce Cloud). Два года SAP пилили-пилили, и вот вроде допилили до приемлемого уровня. Вебинар довольно geeky, особенно во второй части. Angular 1.6, API, все такое.

https://www.youtube.com/watch?v=Ohf46DROhUY