<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Коля Митин</title><generator>teletype.in</generator><description><![CDATA[Коля Митин]]></description><link>https://teletype.in/@nickmitin?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nickmitin</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/nickmitin?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/nickmitin?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Wed, 17 Jun 2026 16:21:59 GMT</pubDate><lastBuildDate>Wed, 17 Jun 2026 16:21:59 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@nickmitin/save-you-weekend</guid><link>https://teletype.in/@nickmitin/save-you-weekend?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nickmitin</link><comments>https://teletype.in/@nickmitin/save-you-weekend?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nickmitin#comments</comments><dc:creator>nickmitin</dc:creator><title>Включайте подготовку в задачу</title><pubDate>Fri, 25 Dec 2020 05:34:27 GMT</pubDate><description><![CDATA[Допустим есть заказчик, который обращается к вам раз в полгода. Он пришёл в очередной раз и хочет, чтобы вы сделали на его сайте корзину покупок. Вы можете приступить на следующей неделе. Так как это большая задача, вы написали план работы:]]></description><content:encoded><![CDATA[
  <p>Допустим есть заказчик, который обращается к вам раз в полгода. Он пришёл в очередной раз и хочет, чтобы вы сделали на его сайте корзину покупок. Вы можете приступить на следующей неделе. Так как это большая задача, вы написали <strong>план работы</strong>:</p>
  <p>— пн: создание моделей и контроллеров и предствалений для корзины: кнопка «добавить», список товаров, оплата, список заказов с их состояниями.</p>
  <p>— вт-ср: написание тестов и логики работы корзины.</p>
  <p>— чт: сборка на тестовом сервере, показ заказчику, согласование</p>
  <p>— пт: деплой</p>
  <blockquote>(Это, безусловно, нереальный план, но для нашего обсуждения пойдёт)</blockquote>
  <p>Объявили о своих намерениях заказчику, он согласился. Вы продолжаете работать над текущими задачами, размышляя на фоне о корзине. Внезапно вы осознаёте, что уже не очень хорошо помните как в том проекте что устроено, полгода ведь прошло и решаете выкачать последнюю версию кода из репозитория. Выкачиваете, а там 46 изменённых файлов и 4237 новых строк кода! </p>
  <p>Теперь придётся это всё просматривать и разбираться, кто и зачем это всё написал и как это повлияет на вашу задачу. Нужно выделять на это время, значит посиделки с друзьями сегодня вечером в пролёте.</p>
  <p>Разбирая код, вы обнаруживаете, что кто-то как раз пытался сделать корзину. Узнаёте у заказчика, он вспоминает, что три месяца назад он попытался поработать с другим подрядчиком, но у них не сложились отношения.</p>
  <p>Вам теперь совсем непонятно, что конкретно там было сделано, можно ли это полностью откатить или попытаться это доделать. </p>
  <p>В этот момент вы осознаёте, что у вас нарисовались адские выходные, потому что вы уже занимаетесь задачей, а планировали с понедельника.</p>
  <p>Давайте теперь отмотаем время на начало истории, когда вы сели писать план и перепишем его:</p>
  <p>— пн: приём текущего состояния проекта, обновление кода, сборка, анализ изменений.</p>
  <p>— вт: выбор оптимальной тактики: написание собственной корзины, использование сторонней библиотеки, внешнего сервиса.</p>
  <p>— ср: согласование тактики с заказчиком, написание плана работ, согласование плана работ по реализации согласованной тактики.</p>
  <p>Вуаля, теперь вам не нужно думать о задаче до понедельника. <strong>Посиделки с друзьями и выходные спасены!</strong></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@nickmitin/productive-conversations</guid><link>https://teletype.in/@nickmitin/productive-conversations?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nickmitin</link><comments>https://teletype.in/@nickmitin/productive-conversations?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nickmitin#comments</comments><dc:creator>nickmitin</dc:creator><title>Продуктивные обсуждения</title><pubDate>Wed, 23 Dec 2020 03:36:45 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/f8/d8/f8d8acf6-dde5-4dfe-a8f5-94625a443f19.png"></media:content><description><![CDATA[<img src="https://teletype.in/files/51/21/51216440-b6ee-41c8-84e3-a1a503daa9cf.png"></img>Каждый день в районе 6 утра, я завариваю кофе и сажусь проверять пул-реквесты разработчиков в Гитхабе:]]></description><content:encoded><![CDATA[
  <p>Каждый день в районе 6 утра, я завариваю кофе и сажусь проверять пул-реквесты разработчиков в Гитхабе:</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/51/21/51216440-b6ee-41c8-84e3-a1a503daa9cf.png" width="1618" />
  </figure>
  <p>На следующий день я вижу ответ от разработчика:</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/6a/50/6a508286-a441-4a87-81f3-80e9790213a8.png" width="2360" />
  </figure>
  <p>Сначала я такой:</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/c0/9e/c09eb256-2e78-42b9-97dd-c6d1f0afbc58.png" width="693" />
  </figure>
  <p>А потом думаю: «Хм... А это тема для поста.»</p>
  <p>Итак. Проблема ответа разработчика в том, что мне теперь непонятно, что с этим ответом делать. Во-первых, я не понимаю, что он собирается по этому поводу предпринять. Во-вторых, я не знаю, почему ему кажется, что это костыль. </p>
  <p>Получается, я могу написать только «Почему? И что с этим тогда делать?» и отправить целый пул-реквест на полку ещё на 24 часа.</p>
  <p>То есть бесполезный ответ на моё замечание увеличил время до релиза фичи на 24 часа.</p>
  <p>Уберите эмоциональную окраску своих сообщений. Собеседник вложит в ваш текст эмоции на свой вкус, обидится и дальнейшая дискуссия будет идти на эмоциях. </p>
  <p>Дополняйте оценочные суждения развёрнутыми объяснениями, примерами и ссылками на источники. Если ваш собеседник не телепат, он ничего не сможет сделать с неаргументированным мнением.</p>
  <p><strong>Опасно</strong>:</p>
  <ul>
    <li>Это полная хуйня.</li>
    <li>Как ты считаешь, эту поебень кто-то через год сможет понять?</li>
    <li>Блять! Мы уже полгода говорим о том, что модели нельзя из контроллеров вызывать, хули ты так сделал?</li>
    <li>Кажется, это костыль.</li>
  </ul>
  <p><strong>Продуктивно</strong>:</p>
  <ul>
    <li>Я не могу принять этот код, потому что он нарушает наши принципы: оформлен не по PSR и не покрыт тестами.</li>
    <li>Тут восемь строчек вызовов библиотечных функций PHP. Ты работаешь со строками, массивами и файлами. Это не имеет никакого отношения к бизнес-логике приложения. Разбей код на функции и назови их согласно предметной области задачи. Ну и чтобы два раза не вставать, этот код сейчас не тестируемый.</li>
    <li>Зачем здесь модель создаётся в контроллере?</li>
    <li>Кажется, это костыль. Я посмотрел в документации по Ларавелю, это решается через <a href="https://laravel.com/docs/8.x/eloquent#default-attribute-values" target="_blank">default attribute values</a></li>
  </ul>

]]></content:encoded></item></channel></rss>