Разработка кода и здоровый шмептицизм
209 subscribers
227 photos
23 videos
1 file
109 links
Пишу про коммерческую веб-разработку с ИИ и без него, тимлидинг и будни моей небольшой студии netspark.ru. 20 лет опыта с Drupal, также работаю с Laravel и Vue.js.

Между постами про разработку пишу просто про жизнь, которая в это время происходит.
Download Telegram
Сколько стоит работа фрилансера?
Отвечает эксперт из комьюнити Mellow 👆

Подписывайтесь на наш канал о зарубежном фрилансе и заходите в чат: там можно задать вопрос фрилансерам с опытом, найти новых знакомых из своей сферы и даже (иногда) получить заказ.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍7
Важное пятничное напоминание:

Что один программист сделает за месяц, два программиста сделают за два месяца.
💯42😁2
Воскресная открыточка на день разработчиков по white label. Такого дня в календаре почему-то нет, а хорошо бы был.
6
Практическая задачка про командную разработку

Допустим, есть тимлид и он поставил разработчику задачу. Достаточно сложную. Описал концепцию, предложил известный метод А для решения.

Разработчик изучает концепцию и молча избирает для решения метод Б (тоже известный). Выкатывает результат. Тимлид читает, удивляется смене концепции, но видит, что метод Б может сработать как минимум не хуже А. Поэтому пропускает результат в тестирование, тем более что проверить уже реализованный метод Б быстрее, чем сразу требовать вернуться к A.

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

Разработчик переключается на изначально предложенный метод А. Метод А срабатывает как ожидалось, задачу удается решить, но с превышением оценки на ~80% из-за потраченного на Б времени.

Система S — внешняя, узконишевая, почти безальтернативная и довольно инновационная. Найти разработчиков с опытом в ней непросто. Документация к S есть, но неполная. Как водится, её неполнота усугубляется с каждым обновлением. По сути разработчики работают с S раз в жизни — если придётся. У тимлида есть прямая линия с CEO системы S, но она не предполагает ежедневных бесед по любому поводу.

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

Ниже опрос.
🔥2
Обсуждение бесполезности тимлидов на одной из платформ, куда я запостил «чудовищную ошибку» выше, напомнило старый анекдот.

Токарь вдумчиво протирает гаечный ключик тряпочкой. К нему подходит начальник цеха:
— Петров, [censored]! Ты какого лешего домой так рано собираешься? Время всего 17:30!
— Понимаешь, я пока ключик тряпочкой протру, пока станок железной щеточкой почищу, пока ручки мыльцем отмою, пока переоденусь… Вот как раз и конец рабочего дня наступит.
— Нет, Петров! Считаю, что это неправильно! Вот я, например, собираюсь с работы ровно в 18:00.
— А тебе-то что собираться? Рот закрыл и пошёл…


Надо написать что-нибудь ещё жизнеутверждающее про пользу тимлидства.
👍4🔥3
В ходе нетворкинга общаюсь с разными людьми, тоже связанными с веб-разработкой. И конечно часто упоминаю Drupal, раз уж последние 20 лет чаще всего работаю с ним.

И довольно часто слышу в ответ что-то вроде: «Друпал? А он что, еще жив?»

Понять можно. Если человек сталкивался с ним когда-то давно, в начале 10х годов например, и тогда показалось что он не очень актуален, то сегодня-то тем более. Тогда Друпал критиковали за всякое — и за «отсутствие ООП», и излишнюю функциональность, и за принцип not invented here, и за сложность перехода от одной мажорной версии к другой. Хотя лично мне и D6, и D7 хорошо заходили.

Это как встретить старого приятеля, которого не видел 20 лет. Сознание не очень-то интерполирует его «возможный жизненный путь» и не натягивает его на эти 20 лет. Поэтому может показаться, что он все такой же, как «тогда». А он уже не такой.


Вот и Друпал уже не такой. Правда, за эти годы он нажил не седину, геморрой и алименты. А наоборот — стал гораздо краше! В конце 2015-го с ним произошло лучшее, что могло произойти: вышла версия 8, в которой сделали:

Конфиги на yaml. То есть всё, что ты накликал в админке, лёгким движением руки выгружалось в файлики и автоматически разворачивалось в продакшне. Это упростило в разы не только разработку, но и поддержку: теперь можно легко увидеть, чего там клиент в настройках нажал и всё сломалось. Увидеть и отменить.

Установку и обновление всего через composer. Апгрейд мажорных версий тоже упростили. Для перехода с 8 на 9, 10 и 11 переписывать сайт целиком уже необязательно.

— Темизацию на Twig, медиа-библиотеку а ля Wordpress, поддержку REST для вывода контента в JSON/XML и получения headless CMS, и много чего ещё.

Отринули критикуемый многими принцип not invented here, по которому не любо было тащить в ядро сторонние решения. Отринули и тут же затащили под капот Symfony.

Это такой крутой фреймворк на PHP, на котором можно писать в три раза больше кода, чем в Laravel, зато он будет чистый и правильный.


Это сразу зарешало большинство претензий к несовременному коду и отсутствию ООП. Классов, объектов и паттернов теперь сколько угодно. И контроллеры есть, и роутинг, и внедрение зависимостей, и декораторы, и подписка на события.

Ляпота, короче. «Свинья в помаде» (для тех кто не помнит) превратилась в прекрасную бабочку серьезный современный продукт. С высоким по-прежнему порогом вхождения и с чувством полного удовлетворения от своей работы, если этот порог преодолеть.

— Так что, да, Друпал жив! — глаголю я вам в ответ, дорогие друзья. И уж точно поживее многих.

Да, в нашей стране ситуация с ним не очень удачная: всё вокруг поглотил 1С Битрикс. Хотя обидно не это, так бывает. Мне как разработчику обидно, что на то нет никаких технических причин. Писал про это в статье CMS vs Framework.

При этом во всем остальном мире с Друпалом полный порядок. Серьёзные контентные сайты, крупные, со связанными поддоменами, университеты, e-com, государственные порталы — везде ему находится применение. Поработал с парой десятков проектов в Европе и США, за последние 7 лет 1 каталог перешел на битрикс WordPress, 1 магазин на Shopify — в связи со сменой маркетинговых команд, которым на входе конечно надо всё переделать. Остальным всё круто, работают годами. Хотелось бы конечно и на нашем рынке с ним чаще работать.

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

А ещё недавно Canvas 1.0 вышел, визуальный конструктор лендосиков на Drupal. На днях мы с ним поиграем, посмотрим чего он может, а чего нет. Результаты будут тут, не переключайтесь.
5🔥6👍32
The Revenge Club / Клуб мести

В пятницу вышел новый британский минисериальчик, я вчера посмотрел, рассказываю.

Шестеро незнакомцев встретились в группе поддержки для переживающих развод. Это как анонимные алкоголики, только не анонимные и бухать пока можно. И вот они сидят в кружке на стульчиках, рассказывают как их бросили, обманули, изменили и кинули. А потом идут собстна в бар и там слово за слово решают, что надо с этим что-то делать. А именно — страшно мстить. Ну или не очень страшно, но как-то немножко мстить нужно обязательно. Потому что сколько можно это терпеть, доколе и вообще nevermore.

Вот к мести они вшестером и приступают. И, судя по тому, что в самом начале их допрашивает полиция, всё пойдет не совсем так, как задумано.

В жанрах у сериала указаны комедия, драма и триллер. В плане комедии — поржать не удастся. Шутки какие-то есть и ирония чувствуется, но не более того. Триллера маловато. Но как ироничная драма с элементами детектива смотрится неплохо. В главных ролях Эйми-Ффион Эдвардс из Slow Horses и Мартин Компстон из Line of Duty. И это безусловно плюс.

Также стоит отметить, что все шесть героев пострадали во вполне традиционных отношениях. В чём одни могут с радостью обнаружить отсутствие повесточки, а другие — её коварный подтекст.

На imdb рейтинг сейчас 7.6. Сериал всего из 6 серий, неплохой, чтобы скрасить пару вечеров. Тем более, как сообщает сериальный ботопотам, смотреть сейчас всё равно больше нечего. 17-го только выйдет новый сезон Fallout, а 25-го — еще три серии «Странных дел», и больше ни-че-го.

#сериалы
1👍4
Вчера перед сном решил — а ну-ка сейчас за 20 минут добью большую фичу. Долго делал, чуть-чуть осталось. Сел, открыл, и правда — через 20 минут фича была готова. Но чёрт меня дернул запустить после этого все тесты. Пока фичу делал — смысла не было запускать весь пакет. А тут, в ночи, решил запустить.

И конечно как посыпались ошибки! Пару простых исправил, и оказалось, что все остальные — потому что сломался поиск. У меня в проекте используется Laravel Scout для быстрого поиска-автодополнения по нескольким типам моделей одновременно, чтобы было удобно искать что угодно. И вот он сломался сразу весь. Абсолютно все поиски возвращались пустыми.

Посмотрел на проде — всё еще работает. Стал разбираться, чего такого я мог сломать. Отключил несколько установленных библиотек — вдруг конфликт у трейта Searchable с чем-нибудь. Включил обратно ту, которую наоборот — стёр за ненадобностью. Не работает.

Откатил контроль версий на точку до начала разработки фичи. Не работает! Подозрительно как-то. Накатил обратно. Обновил зависимости. Не работает.

Поотлаживал классы Скаута — увидел, что почему-то драйвер поиска определяется как null (то есть никакой)! Полез смотреть, оказывается у меня внезапно в .env прописано SCOUT_DRIVER=null! Хотя я просто полагался на дефолтное значение из конфига scout.php (который не менялся), и в .env вообще драйвер не прописывал.

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

В общем, пока нашёл ошибку и вернул нормальный драйвер, прошло уже конечно в разы больше 20 минут. Зато в конце увидел все тесты зелёными. На чем и ушел спать, вот только
🔥5👍42
Издревле, еще до взлета на холмы, было принято на Руси делать сайты на Drupal.
Сайты на Drupal — надежно, добротно, любо! Заходи добрый путник в комментарии, обсудим!
1👍5🥰32🔥1
Когда-то давно у меня был первый научный руководитель в аспирантуре и мы с ним писали код на ассемблере. Покадровую обработку специфического видеопотока в реальном времени. Я сидел на работе, писал, а руководитель заглядывал 1–2 раза в неделю, проверить, помочь, обсудить. Каждый раз, когда он приходил, мы начинали с получасового разбора его тетради с записями алгоритмов и примерных реализаций по проекту. Меня, молодого, это просто бесило: зачем тратить 30–40 минут на рекап, когда очевидно, что это сделано, сделано именно так, мы это проверяли в прошлый (и позапрошлый) раз, и да, я помню, что дальше нужно писать, забудешь тут.

Однако чем старше становишься, тем больше смысла в этом видишь. Должен быть единственный источник истины. В данном случае, тетрадь руководителя. Мало ли что ты там написал в коде. Мало ли что ты задумал ещё сделать. Кто и когда будет это за тобой проверять и переделывать? Сколько времени на это уйдет, если мы сначала не сверимся с тем, как должно быть?

Вот, например, прошлогодняя история про сгоревший медиаконвертер. В спешке и угаре я полдня убил на настройку домового роутера под резервный канал, пробуя так и эдак и не зная, что сразу всё настраивал правильно. Надо было просто убедиться, что канал работает в «нормальных условиях» — воткнуть LTE-модем в нотбук, загрузить винду, и получить Proof of Concept, то есть подтверждение работоспособности. Оно же в данном случае — временный источник истины: модем точно работает (или нет) и ты точно можешь теперь знать, что дело в твоих настройках (или нет), а не в тонких вибрациях вселенной. Сделай я эту простую проверку — вместо половины дня настройка заняла бы 15 минут.

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

Так что не нужно стесняться зачитывать вслух, проговаривать и повторять. И тем более не нужно осуждать тех, кто так делает. Это не плохая память, это опыт, вдумчивость и уважение к общему результату.
👍5💯52
Forwarded from ZelDev INFO
This media is not supported in your browser
VIEW IN TELEGRAM
26 декабря 19:00 https://zeldev.ru
Место: БЦ Юности д.8, 3 этаж
Чайный формат / Бизнес игра / Два спикера / Афтепати+
Регистрация в боте @zeldev_po_bot
👍5
С Рождеством, котолики!
😁5🎅2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Отложим все айтишные дела и возьмёмся за простой советский снеговой лопат!
😁3🎄1
Чуть больше месяца назад я чисто по приколу включил на Duolingo китайский. Из любопытства — посмотреть, как устроено то, что, кажется, должно быть устроено совсем необычно, не так, как ты привык. Чтоб тональности, ероглифы всякие, чтоб вообще непонятно. Ну и как можно видеть из картинки, залип на месяц. Не подолгу, нет, минуток по 15 в день, больше у меня и нету. Но уже узнал многое.

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

Во-вторых, немецкий с первых уроков вводит в жизнь. Я есть мужчина, ты есть женщина, твоя лошадь ест это насекомое. Социальная подготовка завершена, можно выходить в свет. Добавь сюда Elektriker, Klempner и Kabelmann — считай уже готов к основным шедеврам немецкого кино.

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

А пока по советам опытных подписчиков, поставил в дуо к Duo программку Drops (её тоже видно на картинке). Drops немедленно спросил, какой китайский я хочу учить. Потому что вообще-то у меня их тут два. Кантонский, для утонченных востоковедов, филологов, интеллигентов и мудрецов. И Путунхуа, он же мандаринский, с облегченной грамматикой, латинским алфавитом-пиньинем и упрощенными (ха-ха-ха) иероглифами. А еще — зацени — в кантонском основных тональностей то ли 6, то ли 9. А в путунхве всего 4. В общем, не кривляйся, все мы знаем, что ты выберешь.

Зато Дропс сразу предлагает к обучению более понятные слова: хлеб, дом, вечеринка, собака и даже женщина (или половина женщины — 女, если целая женщина — 女人 🤔). А дальше — ради чего мне его и посоветовали — предлагает плотно заняться изучением ключей в словаре Канси, то есть составных частей иероглифов. Я сначала подумал, что Канси и Ханьцзы — это одно и то же, может разная транскрипция или типа того. Но, оказывается, нет. Ханьцзы — это название китайской письменности, тогда как Канси — это человек. Как Бэнкси, только китайский император (XVII-XVIII вв). При нём и по его команде был издан словарь Канси — словарь из 214 ключей, составляющих иероглифы.

Говорят, если выучить эти 214 ключей, дальше должно пойти значительно бодрее. И тогда ни в одном тату-салоне тебе уже не набьют «варёный рис недорого» вместо могучей и глубокомысленной фразы, которую ты задумал. Для чего Канси и приказал словарь составить. Это, конечно, шутка. Но Drops натаскивает меня на эти самые ключи гораздо методичнее Duo. Я запомнил пока немного, рот, солнце, луна, речь, потому что они похожие и смешные. Человек, собака, язык, может еще какие-то. Осталось еще 200 с небольшим, буду работать над собой!

Ещё я выяснил, почему Дин Лижэнь — это Dīng Lìrén на пиньине, хотя какую-то таблицу со звуками хорошо бы найти для лучшего понимания.

А вообще все эти занятия в игривой форме мне нравятся. Пошутили, посмеялись, кнопки понажимали, картинки порисовали, что-то в голове и осталось. Немецким я целенаправленно не занимаюсь уже 3 или 4 года. Хотя с интерфейсами на немецком взаимодействую всё еще каждый день. Но главное — вижу тут и там знакомые слова. Есть польза, стало быть. Ну а если не требуется для работы, а просто из интереса — самое то. Но если чуть серьёзнее — то отсутствие (или скудность) поясняющих статей огорчает. Для немецкого когда-то сам находил и читал параллельно, наверно и тут надо найти что-то типа жёлтой книжки из серии for dummies.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥53👏2