Идеальный программист. Как стать профессионалом разработки по



Download 4,8 Kb.
Pdf ko'rish
bet55/128
Sana11.02.2023
Hajmi4,8 Kb.
#910052
1   ...   51   52   53   54   55   56   57   58   ...   128
Bog'liq
robert sesil martin-idealnij programmist-1490197390

Додзё программирования
С 2001 года я провожу демонстрацию TDD, которую я называю
«игрой в кегли
[27]
». Это маленькое упражнение занимает около 30
минут. Оно выявляет конфликт в архитектуре, развивается до
кульминационной точки и преподносит сюрприз напоследок. Я
написал целую главу об этом примере.
[28]
За годы я проводил эту демонстрацию сотни, а то и тысячи раз. Я
достиг в ней настоящего мастерства! Я мог бы повторить ее во сне. Я
свел к минимуму количество нажатий клавиш, подобрал самые
удобные имена переменных и оптимизировал структуру алгоритма,
пока она не стала идеальной. Хотя я тогда и не знал этого, это была
моя первая ката.
В 2005 году я посетил конференцию XP2005 в Шеффилде
(Великобритания). Там я участвовал в презентации под названием
«Додзё программирования» (Coding Dojo), которую проводили Лорен
Боссавит и Эммануэль Галло. Все присутствующие открыли свои
ноутбуки и программировали вместе с докладчиками, которые
применяли методологию TDD для реализации игры Конвея «Жизнь».
Докладчики назвали это упражнение «ката» и сообщили, что исходная
идея
[29]
 принадлежала «Прагматику
[30]
» Дэйву Томасу.
С тех пор многие программисты стали использовать метафору
боевых искусств для своих тренировочных сеансов. Название «Додзё
программирования» 
тоже 
прижилось.
[31]
 
Иногда 
несколько
программистов встречаются и тренируются вместе, как мастера


боевых искусств. Иногда тренировки проходят в одиночку – тоже по
аналогии с боевыми искусствами. Около года назад я обучал группу
разработчиков в Омахе. За обедом они пригласили меня на свой сеанс
«Додзё программирования». Я наблюдал за тем, как 20 разработчиков
открыли свои ноутбуки и клавиша за клавишей повторяли действия
своего преподавателя, который выполнял кату «игры в кегли».
В додзё используются разные виды упражнений. Некоторые из них
представлены ниже.
Ката
В боевых искусствах термином 
ката 
называется строго
определенный набор отрепетированных движений, имитирующих
действия одной стороны в поединке. Их целью (в реальности
недостижимой) является достижение совершенства. Мастер стремится
к тому, чтобы научить свое тело идеально выполнять каждое движение
и объединить отдельные приемы в плавную серию. Хорошо
исполняемые ката очень красивы.
Но несмотря на красоту, ката изучаются не для сценического
исполнения. Мастера изучают их для того, чтобы обучить ум и тело
реагировать на конкретные боевые ситуации. Отработанные движения
должны выполняться инстинктивно, чтобы они срабатывали именно в
тот момент, когда они нужны.
Программные ката представляют собой строго определенный
набор отрепетированных нажатий клавиш и перемещений мыши,
имитирующих решение некоторой программной задачи. Вы не
решаете задачу, потому что уже знаете решение. Вместо этого вы
тренируетесь в выполнении действий и принятии решений,
необходимых для решения задачи.
И снова целью является асимптотическое приближение к
совершенству. Упражнение повторяется снова и снова, чтобы научить
ваш мозг реагировать, а пальцы двигаться. В ходе тренировки могут
обнаружиться определенные улучшения и повышение эффективности
ваших действий или самого решения.
Отработка нескольких ката помогает запомнить «горячие
клавиши» и идиомы навигации. Она также хорошо работает при
изучении таких дисциплин, как разработка через тестирование (TDD)


и непрерывная интеграция (CI, Continuous Integration). Но самое
важное – ката помогают закрепить в подсознании пары «задача/
решение»; 
столкнувшись 
с 
этими 
задачами 
в 
реальном
программировании, вы попросту будете знать, как они решаются.
Программист, как и мастер боевых искусств, должен знать разные
ката и регулярно тренировать их, чтобы они не стерлись из памяти.
Описания 
многих 
ката 
находятся 
по 
адресам
http://katas.softwarecraftsmanship.org 
и 
http://codekata.pragprog.com.
Некоторые из моих любимых ката:
• 
Игра 
в 
кегли:
http://butunclebob.com/ArticleS.UncleBob.TheBowling-GameKata
• 
Простые 
числа:
http://butunclebob.com/ArticleS.UncleBob.ThePrime-Factors-Kata
• 
Перенос 
текста:
http://thecleancoder.blogspot.com/2010/10/craftsman-62-dark-path.html
Если вам захочется непростых испытаний, попробуйте выучить
ката настолько хорошо, чтобы выполнять их под музыку. Сделать это
очень трудно.
[32]
Вадза
Когда я занимался джиу-джитсу, большая часть времени в додзё
проводилась за парной отработкой 
вадза 
(техники). Вадза напоминает
ката с участием двух человек. Все действия точно запоминаются и
воспроизводятся напарниками. Один играет роль нападающего,
другой обороняется. Движения повторяются снова и снова, а
спортсмены меняются ролями.
Программисты могут тренироваться аналогичным образом в игре,
которая называется 
пинг-понг
.
[33]
Два напарника выбирают ката или
простую задачу. Один пишет модульный тест, а другой должен
заставить этот тест проходить. Затем они меняются ролями.
Если напарники выбирают стандартную ката, то результат заранее
известен, а программисты отрабатывают работу с клавиатурой и
мышью, а также четкость запоминания ката. С другой стороны, если
напарники выбирают новую задачу, игра становится более интересной.
Программист, пишущий тест, оказывает заметное влияние на то, как
будет решаться задача. Также в его власти установка ограничений.


Например, если программисты решают реализовать алгоритм
сортировки, автор теста может легко установить ограничения по
скорости и затратам памяти, которые усложнят задачу его партнера. В
таком виде игра становится соревновательной… и интересной.
Рандори
Рандори 
– свободный спарринг. Во время тренировок по джиу-
джитсу мы определяли боевые сценарии, а затем отрабатывали их.
Иногда один человек должен был защищаться, тогда как остальные
последовательно атаковали его. Иногда два и более нападающих
выступали против одного защищающегося (обычно им был наш
сэнсэй, который почти всегда выигрывал). Иногда одна пара вступала в
единоборство с другой и т. д.
Имитация поединка не имеет нормального аналога в
программировании; тем не менее во многих программных додзё
играют в игру, которая тоже называется рандори. Она очень похожа на
вадза для двоих напарников, решающих задачу. Однако в рандори
играет много участников, а правила слегка изменены. На экране,
проецируемом на стену, один участник пишет тест. Другой участник
обеспечивает прохождение теста, а затем пишет следующий тест. Ход
передается по кругу или участники просто выстраиваются в очередь. В
любом случае такие упражнения бывают 
очень 
забавными.
Удивительно, насколько много можно узнать из таких упражнений.
Вы получаете глубокое представление о том, как другие люди подходят
к решению задач. Полученная информация помогает расширить ваш
кругозор и повысить квалификацию.

Download 4,8 Kb.

Do'stlaringiz bilan baham:
1   ...   51   52   53   54   55   56   57   58   ...   128




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish