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

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

.
Удовольствие от процесса познания
22.03.2010 12:03

«Я интересуюсь наукой просто для того, чтобы узнать больше об окружающем мире, и чем больше я узнаю, тем интереснее. Мне нравится познавать».
Ричард Фейнман

Автор: Майкл Болтон
Перевод: Дмитрий Дудников по заказу Software-Testing.Ru
Оригинал: http://www.developsense.com/articles/2005-04-ThePleasureOfFindingThingsOut.pdf

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

Много лет назад в передаче Nova (научно-популярная телепередача на канале WGBH Boston, США) я видел серию под названием «Лучший ум со времен Эйнштейна?», в которой рассказывалась биография профессора Фейнмана, вероятно, величайшего физика второй половины двадцатого столетия. Его карьера, можно сказать, началась в Лос-Аламосе, где он работал в проекте по созданию атомной бомбы, а завершилась участием в расследовании причин катастрофы челнока «Челленджер», о чём он рассказал в своей книге «Какое тебе дело до того, что думают другие?». Большую часть времени между этими двумя проектами Фейнман занимал должность профессора в Калифорнийском технологическом институте и работал над сложнейшими задачами физики своего времени, включая квантовую электродинамику. Он прославился изобретением «диаграмм Фейнмана» – небольших рисунков, просто и наглядно иллюстрирующих взаимодействие между субатомными частицами. Он обладал редким даром трансформации идей и чисел, позволявшим решать проблемы, до того считавшиеся неразрешимыми.

Первый сборник воспоминаний Фейнмана носит название «Вы, конечно, шутите, мистер Фейнман: приключения любопытного человека». Этот заголовок можно трактовать по меньше мере тремя способами. Приключения необычны сами по себе; Фейнман был оригинал и чудак; кроме того, совершенно достоверно то, что Фейнман был очень любознателен и неослабевающе, страстно интересовался окружающим миром. Он всегда любил разбираться, как работают вещи вокруг него, и открытия доставляли ему необычайную радость. Он рассказывал восхитительные истории об изучении мира и открытиях. Эти рассказы часто оформлены в виде обсуждений между взрослыми и детьми. Фейнману повезло с отцом – очень хорошим ученым-любителем. В частности, Фейнман-старший отлично осознавал границы собственных знаний. Он обращал внимание на то, что люди часто употребляют в разговоре названия вещей, о которых не имеют представления. Таким способом он поощрял сына в изучении природы вещей, а не их названий. Фейнман-младший вырос в семье, где поощрялись и ценились вопросы и попытки ответа на них посредством экспериментов и наблюдений.

Часто я называю Ричарда Фейнмана святым покровителем тестировщиков программного обеспечения. Подобно тестировщикам, он получал огромное удовольствие от решения задач и головоломок, которые другим оказывались не под силу. В книге «Вы, конечно, шутите, мистер Фейнман» он описывает свою карьеру взломщика сейфов. Он был чем-то вроде легенды в Лос-Аламосе, где чрезвычайно заботились о защищенности информации. Сотрудники держали важные документы в одинаковых сейфах с поворотными кодовыми замками. То и дело кому-нибудь было нужно что-либо, что другой положил в сейф. Фейнман обнаружил, что может вскрывать сейфы, причём без какого-либо магического манипулирования с замком. Он ухитрился найти инструкцию по пользованию сейфами, в которой была указана комбинация, установленная по умолчанию. Фейнман вскоре обнаружил, что многие сотрудники никогда не меняли эту предустановленную комбинацию. Он также выяснил, что люди склонны выбирать очевидные комбинации, основываясь на легко запоминаемых вещах, таких как дни рождения, и что они часто оставляют записанные сочетания где-нибудь на рабочих столах или рядом с ними. Когда не получалось раздобыть полезную информацию такими прямолинейными способами, Фейнман пытался применить другие методы: вслушивание в работу замка, тактильные ощущения, интуитивные догадки и, самое главное – экспериментирование. Кроме того, решая задачу «в лоб», с помощью перебора всех возможных комбинаций, он установил, что необязательно быть точным в обращении с наборным диском. Точность в пределах трех чисел (из шестидесяти) достаточна – и это позволяет сузить область поиска решений. Как бы то ни было, ему, в конечном счете, всегда удавалось открыть сейф, даже если владельца не было поблизости.

Даже один этот пример показывает, что Фейнман обладал всеми навыками эффективного тестирования. Он умел придумывать и использовать эвристики – подверженные ошибкам способы решения проблемы – принимая, используя их и отказываясь от них, тогда, когда они становились бесполезными. Он искал ключи к разгадке, пробуя различные пути решения задачи. Он не ограничивал себя без нужды «честными» путями решения проблемы; он любил жульничать и совать повсюду свой нос, и таким образом достигал результата. Его мысль была живой и научной, он с готовностью экспериментировал и всегда был готов браться за все более трудные задачи.

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

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

Он любил рассказывать историю про разговор со своим другом-художником. Художник высмеивал ученых за то, что они смотрят на такие вещи, как цветы, слишком детально и не ценят присущую им красоту. Фейнман же доказывал, что красота равно доступна как художнику, так и ученому, но при этом ученый обладает более полным пониманием природы цветка: его клеток, его процессов, его репродуктивной системы, его расцветок в невидимой области спектра (инфракрасной и ультрафиолетовой), расцветок, которые могут видеть насекомые, что наводит на новые вопросы – например, могут ли насекомые также обладать эстетическим чувством? Как сказал Фейнман: «…все те интересные вопросы, которые научное знание только добавляет к восхищению, тайне и благоговейному трепету перед цветком. Оно только добавляет. Я не понимаю, как оно может отнимать».

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

Кем Канер называет это исследовательской стороной тестирования. Кроме этого тестирование имеет также подтверждающий, санкционирующий аспект, когда мы убеждаемся, что вещи работают так, как мы ожидаем. Без сомнения этот аспект тоже важен, но об этом уже написана масса статей и книг. И самое главное – даже если вы прочитали все эти книги, рано или поздно вы понимаете, что реальный мир выбивается за рамки этих теорий. И вы вступаете на стезю настоящего исследователя, перед вами встают задачи определения и распознавания рисков, поиска проблем и их решений, расширения области покрытия. Для этого необходимо рассматривать все аспекты программы и изучать ее с различных точек зрения. Так как программное обеспечение появляется в самых разных контекстах, нам необходимо развивать умения, которые помогут нам выбирать соответствующие техники и разумно их использовать – и создавать новые, если это необходимо.

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

Обсудить в форуме