Разделы портала

Онлайн-тренинги

.
Программист-прагматик. Путь от подмастерья к мастеру
29.01.2009 10:34

Обозрел: Алексей Лупан, тестировщик финансовых приложений.

Заголовок: "Программист-прагматик. Путь от подмастерья к мастеру".

Авторы: Эндрю Хант и Дэвид Томас.

Первая публикация: 2000 год, издательство Addison-Wesley Longman.

Русскоязычный перевод: московское издательство "Лори", 2004 год, переводчик А. Алексашин.

Кому адресована книга

Разработчикам программного обеспечения -
        программистам,
        тестировщикам,
        аналитикам,
        архитекторам,
и всем тем, кто иногда с трудом засыпает, все еще пытаясь выбрать наилучший вариант решения поставленных перед ним задач из сотни существующих ограничений.

Умудренным ошибками и сомнениями разработчикам программного обеспечения.

Тем, кому ежедневно, основываясь не только на знаниях, но и на интуиции инженера, приходится брать на себя ответственность за какие-то решения.

Тем, кто умеет (или УЖЕ хочет научиться) работать самостоятельно.

Тем, кто при наличии проблем умеет искать их решение, а не виноватого.

Почему тестировщикам полезно прочитать эту книгу

Тестировщик - роль в команде разработчиков. Тестировщик не проверяет работу программиста, тестировщик работает ВМЕСТЕ с программистом, это роль помощника.
Если кто-то из команды падет, сраженный вражеским кодом, тестировщик встанет на место павшего и продолжит делать проект.
Чтобы быть эффективным помощником программиста, тестировщик должен понимать, что делает его коллега, зачем и как. Только таким образом вся команда становится победителем проекта.
Если же тестировщик уверен в том, что программисты - его личные враги, то врага надо знать в лицо и дальше, а не только на уровне фольклора :)

О чем рассказывается в книге

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

Каким языком написана книга

Языком разума и опыта.
Языком людей, которые понимают, что однозначных решений не бывает. Но бывает правильная или неправильная "постановка мозгов"... Поэтому они дают подсказки, а не указания.
Языком очень уместных и объемных образов. К примеру, понятие об ортогональности программ объясняется на примере схемы управления вертолетом.

                                Цитата

Предположим, вы находитесь в экскурсионном вертолете, совершающем полет над Гранд-Каньоном, когда пилот, который совершил ошибку, наевшись рыбы за обедом внезапно вскрикивает и теряет сознание. По счастливой случайности это происходит, когда вы парите на высоте 30 метров.

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

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

Неожиданно вам приходится жонглировать невероятно сложной системой, в которой любое изменение влияет на все остальные управляющие воздействия. Вы испытываете феноменальную нагрузку: ваши руки и ноги находятся в постоянном движении, пытаясь уравновесить все взаимодействующие силы.

Органы управления вертолетом определенно не являются ортогональными.

Систему, спроектированную и реализованную ортогональным образом, намного проще тестировать.

                                                                 Для ясности

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

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

Подробнее про ортогональность можно глянуть на http://ru.wikibooks.org/wiki/%D0%9E%D1%80%D1%82%D0%BE%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C - раздел как раз составлен по материалам книги "Программист-прагматик. Путь от подмастерья к мастеру".

Структура книги

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

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

Писать книги о технических сторонах работы девелоперов проще, чем о ее сути. Эндрю Хант и Дэвид Томас сумели написать о каких-то общих, метафизических сущностях так, словно описывали очень точные спецификации web-сервера Oracle.

ЗЫ Автор отзыва полностью отвечает за то, что этот отзыв написан им самим.