Эссе о разработке игр, мышлении и книгах

Жизнь и работа с ошибками

Том не следил за накоплением ошибки и оказался в космосе.

Есть одна простая идея, которая очень облегчает мне и жизнь и работу. Звучит она примерно так: «Ошибки неизбежны». В частном случае: «Все лажают».

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

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

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

Большинство же как будто живёт в параллельной вселенной с другими вероятностными законами.

Ладно бы всё ограничивалось элементарными ошибками в планировании, вроде: «потратили 100600 денег вместо 100500 или даже вместо 10500».

К сожалению, игнорирование природы ошибок приводит к более существенным и, одновременно, менее заметным проблемам. Целые коллективы «внезапно» перестают производить сколь-нибудь полезную работу и оказываются в состоянии систематического повторения ситуации «хотели как лучше, получилось как всегда».

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

О природе ошибок и следствиях из неё я и хочу поговорить.

Статья получилась большая.

Первая половина — рассуждения на тему: «Ошибка — что это за зверь и как он выглядит». Если вы считаете, что и так это знаете, можете сразу перейти к главе «Следствия».

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

Далее

Как я делал и делал бы поддержку GDPR

GDPR log

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

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

Про GUI я тут тоже говорить не буду.

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

Далее

Первый взгляд на LaTeX

Аллюзия на документацию по LaTeX

Аллюзия на документацию по LaTeX

Для личных нужд решил изучить эту штуку. Пока просмотрел только документацию, но определённое мнение сформировалось. Сейчас поделюсь.

Для затравки вот цитата из исследования эффективности MS Word & LaTeX.

We show that LaTeX users were slower than Word users, wrote less text in the same amount of time, and produced more typesetting, orthographical, grammatical, and formatting errors. On most measures, expert LaTeX users performed even worse than novice Word users. LaTeX users, however, more often report enjoying using their respective software.

An Efficiency Comparison of Document Preparation Systems Used in Academic Research and Development Markus Knauff*, Jelica Nejasmic.

Далее

Интеллект, компетентность и принятие решений

Часто, когда я встреваю в «политические» «дискуссии», мне начинают вменять примерно такое мнение: «людей низводим до уровня идиотов». Формулируется оно разными словами, но суть цитата передаёт ярко.

На самом деле, конечно, я так не думаю, и оппоненты путают два очень важных понятия: интеллект и компетентность. Их многие не разделяют.

Давайте разберёмся в чём отличие, к чему оно приводит и посмотрим с через эту призму на IT-кредиты.

Далее

Уникальные идентификаторы для связи исходников. Как?

Хочу странного, может подскажете способ сделать.

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

Фичей не в смысле больших user-story, а в смысле конкретных пунктов, реализацию которых надо контролировать. Например «имя гильдии должно быть уникально», «Это поле должно отображаться только залогиненому пользователю».

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

Вопрос вот в чём: как делать идентификаторы, которые будут связывать фичи с кодом?

Варианты, которые вижу:

  1. Писать руками. Проблемы: геморрой и простор для ошибок/опечаток.
  2. Плагин для emacs (любого другого редактора), который в файле с фичами генерирует уникальные идентификаторы, после чего копировать их куда надо. Проблемы: его надо сделать, нужно поддерживать уникальность между файлами, хочу фичи не только в отдельном файле, но и в коде, если это будет удобно.
  3. Литературное программирование: писать фичу сразу там, где реализуется. Проблемы: фича реализуется в нескольких местах (код, тесты, вёрстка, документация), поэтому идентификаторы всё равно нужны.
  4. Идентификатором делать сам текст фичи. Проблемы: занимает много места, текст может меняться и будет геморойно менять его везде.