К основному контенту

Интервью с Робертом C. Мартином по мотивам книги "The Clean Coder: A Code of Conduct for Professional Programmers"

Наткнулся на интервью Дяди Боба по мотивам его книги "The Clean Coder: A Code of Conduct for Professional Programmers"

Понравившиеся выдержки из Части 1

Говорите "Нет" вместо "Я попробую".
Вопрос здесь не о том, врать или говорить правду. "Я попробую" - это, в какой то степени, коварная ложь, потому это одновременно и правда.
Если ты говоришь "я попробую", то ты конечно попробуешь. Но, к сожалению, маловероятно, что твое поведение изменится потому, что ты сказал "попробую". А скорее всего ты продолжишь делать то, что и делал до этой фразы. А слова подразумевали какое то изменение. И в этом ложь.
Почему мы говорим эту ложь? Для того, чтобы закончить дискуссию, если она нам некомфортна. И мы говорим что то бессмысленное типа "попробую" в надежде уйти от этого дискомфорта. Это эгоистично, по-детски и непрофессионально.

Про тестировщиков
Любые тесты, которые могут быть запрограммированы - должны быть автоматизированы. Нам не нужно, чтобы люди делали то, что может делать машина. А нужно нам, чтобы тестировщики занимались эксплоративным (исследовательским) тестированием.
Роль QA превращается из проверяющей в специфицирующую. Теперь QA должны интерпретировать бизнес-требования в спецификацию поведения системы.

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

Из части 2

Про командную дисциплину и одиночек.
Команда решает каким правилам она должна следовать. Если итроверты (одиночки) с ними не согласны и не находят из удобными для себя, то им придется покинуть команду. Или быть исключенными.

Лучший способ измерить качество кода
Лучший тест для качества кода - это удовлетворенность пользователя (заказчика). При этом мы говорим о двух формах такой удовлетворенности: удовлетворенность в настоящее время и на протяжении какого то продолжительного срока

PS книжка уже в моей антибиблиотеке (что это), ждет очереди.

Комментарии

  1. Многие идеи выглядят спорно; вероятно оттого, что вырваны из окружающего контекста.


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


    Но по одному пункту не могу удержаться: впечатляет отождествление интровертов с одиночками и подспудные намеки, что только они могут не согласиться с правилами команды. Столько багов в одном небольшом абзаце, прям не знаешь, за какой хвататься первым. [смайлик]

    ОтветитьУдалить
  2. :) искренне надеюсь, что комменты к оригинальному интервью. А не к моему творческому переводу.
    Ну, а насчет провокационности - да есть такое. Вообще, Мартин часто использует этот прием.

    ОтветитьУдалить

Отправка комментария

Популярные сообщения из этого блога

Mock vs Stub

Когда мы начали изучать модульное тестирование, то одними из первых терминов, с которыми пришлось познакомиться, стали Mock и Stub.

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

Проверять работоспособность тестируемого объекта (system uder test - SUT) можно двумя способами: оценивая состояние объекта или его поведение.

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

Во-втором, мы проверяем набор и порядок действий (вызовов методов взаимодействующих объектов, других методов SUT), которое должен совершить метод SUT.

Собственно, если коротко, то в одном случае используется Stub, а в другом Mock. Это объекты, которые создаются и используются взамен реальных объектов, с которым взаимодействует SUT в процессе своей работы.

Теперь подробнее.

Gerard Meszaros использует термин Test Double (дублер), как обозначение для объекта, который зам…

План "Б" или как прикольно провести субботний день

Всем привет.
Вчера состоялась конференция "План Б". Организаторами выступили ребята из Яндекса, за что им большое спасибо. Судя по приблизительным подсчетам в мероприятии участвовало около 200 человек.

Основной темой конференции было планирование, планирование всего: проектов, разработки, тестирования, дизайнеров и даже организации музыкального фестиваля.
Сначала думал написать отчет в обычном своем стиле: кто и что говорил, но почитав твиттер по #pbconf понял, что просто потеряю время :) Поэтому кому оооочень интересно узнать подробности следуйте за птичкой и вы все узнаете (тэг #pbconf попал в top-30 твиттера)
Здесь приведу лишь те вещи, которые мне запали в мозг
Роман Чернин о продуктовой разработке: "нет заказчика, нет требований, нет сроков -> как принимать решения? ответ: заводим себе Product Manager-а"
Оля Павлова (@op): "бойтесь иллюзии точной формулировки" "заказчик - ребенок, выдаем ему игрушку как можно чаще" "не забываем, …

Переключите тумблер или умные люди дурного не посоветуют

Навеяно интересными вопросами про TDD после вчерашнего выступления.

Uncle Bob: "Flipping the Bit"

Подробнее постараюсь перевести чуть позже, пока только это:
Как определить, что у коллеги (или у вас) ТУМБЛЕР переключен?  Если ваши ответы на вопросы ниже совпадают с приведенными - то все хорошо :)
Мантра:

Сможете ли вы выполнить работу быстрее используя TDD? ДАСуществуют ли какие-либо задачи, которые вы можете выполнить быстрее без TDD? НЕТЯ понимаю, что TDD может помочь в долгом проекте, а что если у вас короткая задача? Будете использовать TDD? Да, потому что TDD быстрее даже в короткой перспективеЧто если времени реально не хватает, и босс стоит над душой, будете ли вы использовать TDD? ДАВ любом случае? ДАЕсть ли случаи, когда вам не нужно использовать TDD? НЕТПредставьте себе что вы на звездном корабле Enterprise (Star track) и осталась всего секунда до взрыва антиматерии. Все что вам нужно, чтобы избежать этого, поменять один IF. Будете ли вы использовать TDD? ДАПочему? П…