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

Интервью с Робертом 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. :) искренне надеюсь, что комменты к оригинальному интервью. А не к моему творческому переводу.
    Ну, а насчет провокационности - да есть такое. Вообще, Мартин часто использует этот прием.

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

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

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

Полезные ресурсы для молодых (и не только) тестировщиков

сперто(с) Уже 3 месяца провожу собеседования тестировщиков (март 2016). Поначалу они просто  веселили - после 15-летнего опыта собеседования С++-разработчиков, общение с тестировщиками (чаще были "-цы") было чем-то экзотическим и забавным. Потом становилось все грустнее и грустнее, мимими закончилось. Началась печаль.

Заметки на коленке - 3. Что еще делать, если ваши тесты уже "зеленые"?

"Lately I find I'm working on automated tests that return non-binary results. Tests that neither pass nor fail" by  @noahsussman Отличная мысль, которую я ретвитил еще в 2016. Но давайте вместе подумаем, что за этим может скрываться? ( кстати, не знаю, что при этом думал Noah ) Ваши тесты прошли и прошли "успешно". Все хорошо или все же есть, куда еще посмотреть? Дальше то, что использовал я лично и то, что еще можно прикрутить дополнительно. Естественно все шаги ниже должны быть автоматизированны. 1. Контролируйте время выполнения тестов. Если набор проверок не меняется (а такое часто бывает, к сожалению), то рост времени выполнения может говорить о проблемах в продакшен коде (чаще всего) или проблемах с окружением. 2. Контроль за количеством выполняемых тестов. "Все зеленое" не значит, что сегодня выполняли те же Х тестов, что и вчера. Смешно(нет), но случается такое, что какие-то проверки "исчезают" из запуска из-за того, что у кого-то ...

Mock vs Stub

Когда мы начали изучать модульное тестирование, то одними из первых терминов, с которыми пришлось познакомиться, стали Mock и Stub. Ниже попробуем порассуждать в чем их сходство и различие, как и для чего они применяются. Проверять работоспособность тестируемого объекта (system under test - SUT) можно двумя способами: оценивая состояние объекта или его поведение. В первом случае проверка правильности работы метода SUT заключается в оценке состояния самого SUT, а также взаимодействующих объектов, после вызова этого метода. Во-втором, мы проверяем набор и порядок действий (вызовов методов взаимодействующих объектов, других методов SUT), которое должен совершить метод SUT. Собственно, если коротко, то в одном случае используется Stub, а в другом Mock. Это объекты, которые создаются и используются взамен реальных объектов, с которым взаимодействует SUT в процессе своей работы. Теперь подробнее. Gerard Meszaros использует термин Test Double (дублер), как обозначение для объе...