Примечания
1
Мартин Р. Чистый код: создание, анализ и рефакторинг. — СПб.: Питер, 2018. — 464 с.: ил.
2
Мартин Р. Идеальный программист. Как стать профессионалом разработки ПО. — СПб.: Питер, 2019. — 224 с.: ил.
3
Мартин Р. Чистая архитектура. Искусство разработки программного обеспечения. — СПб.: Питер, 2020. — 352 с.: ил.
4
Turing A. M. 1936. On computable numbers, with an application to the Entscheidungsproblem [доказательство]. Proceedings of the London Mathematical Society (Труды Лондонского математического общества), 2 (изд. 1937), 42(1):230–65. — Лучший способ ознакомиться с этой работой — прочитать произведение Чарльза Петцольда: Petzold C. The Annotated Turing: A Guided Tour through Alan Turing’s Historic Paper on Computability and the Turing Machine. Indianapolis, Indiana: Wiley, 2008.
5
«Вики» Уорда, c2.com — сайт оригинальной «Википедии», первый день появления в сети Интернет. Пусть поддержка длится как можно дольше.
6
Larman C. Agile & Iterative Development: A Manager’s Guide. Boston, Massachusetts: Addison-Wesley, 2004.
7
Royce W. W. 1970. Managing the development of large software systems. Proceedings, IEEE WESCON, August: 1–9. URL: http://www-scf.usc.edu/~csci201/lectures/Lecture11/royce1970.pdf.
8
Стоит отметить, что мое толкование этой временной шкалы подвергли сомнениям. См.: Bossavit L. The Leprechauns of Software Engineering: How Folklore Turns into Fact and What to Do About It, Ch. 7. Leanpub, 2012.
9
DeMarco T. Structured Analysis and System Specification. Upper Saddle River, New Jersey: Yourdon Press, 1979.
10
Page-Jones M. The Practical Guide to Structured Systems Design. Englewood Cliffs, New Jersey: Yourdon Press, 1980.
11
Coad P., Yourdon E. Object-Oriented Analysis. Englewood Cliffs, New Jersey: Yourdon Press, 1990.
12
Booch G. Object Oriented Design with Applications. Redwood City, California: Benjamin-Cummings Publishing Co., 1991.
13
Coplien J. O. A generative development-process pattern language. Pattern Languages of Program Design. Reading, Massachusetts: Addison-Wesley, 1995. P. 183.
14
Майк Бидл был убит 23 марта 2018 года в Чикаго психически нездоровым человеком, до этого арестованным и отпущенным 99 раз, который должен был находиться в психбольнице. Майк Бидл был моим другом.
15
Beedle M., Devos M., Sharon Y., Schwaber K., Sutherland J. SCRUM: An extension pattern language for hyperproductive software development. Ссылка: http://jeffsutherland.org/scrum/scrum_plop.pdf.
16
Pattern Languages of programming — конференция, которую проводили в 1990-х неподалеку от университета штата Иллинойс.
17
Это одно из тех странных совпадений, которые происходят время от времени. Нет ничего такого особенного в объектно-ориентированном программировании, что не дает применять в нем каскадную модель, тем не менее эта идея набирала в те дни популярность.
18
Этот день очень значим, поэтому его стоило упомянуть.
19
Не так давно увидела свет история события, изложенная в литературном журнале The Atlantic за авторством Кэролайн Мимбс Найс: Caroline Mimbs Nyce. The winter getaway that turned the software world upside down // The Atlantic. 08.12.2017. URL: https://www.theatlantic.com/technology/archive/2017/12/agile-manifesto-a-history/547715/. Когда я это все писал, то еще не ознакомился с той статьей, поскольку мне не хотелось путать свои воспоминания, которые я изложил здесь.
20
Слева направо, полукругом около Мартина Фаулера, на фотографии представлены: Дейв Томас, Энди Хант (или, возможно, Джон Керн), я (меня можно узнать по синим джинсам и мультитулу на ремне), Джим Хайсмит, кто-то, Рон Джеффрис и Джеймс Греннинг. Кто-то, уже не помню кто, сидел позади Рона. Возле его ботинка на полу, похоже, находится одна из карточек, которые мы использовали при группировке по сходству.
21
С англ. «живой», «проворный», «гибкий». — Примеч. пер.
22
Этот принцип тесно связан с циклом НОРД — петлей Джона Бойда, кратко изложенным здесь: https://ru.wikipedia.org/wiki/Цикл_НОРД. Boyd J. R. A Discourse on Winning and Losing. Air Force Base Maxwell, Alabama: Aeronautics University Library, 1987. Document No. M-U 43947.
23
Однако разработчики сайта healthcare.gov определенно пытались.
24
Понятие «спринт» используется в Scrum. Мне оно не нравится, потому что намекает на то, что нужно нестись изо всех сил. Проект по разработке — это марафон. А кому нужен спринт во время марафона?
25
Брукс Ф. Мифический человеко-месяц, или Как создаются программные системы. СПб.: Питер, 2020. https://ru.wikipedia.org/wiki/Мифический_человеко-месяц.
26
Beck K. Extreme Programming Explained: Embrace Change. Boston, Massachusetts: Addison-Wesley, 2000. Также существует второе издание 2005 года, но мое любимое издание — первое, я считаю именно эту версию окончательной работой. Возможно, Кент не согласится со мной. (На русском языке: Бек К. Экстремальное программирование. — СПб.: Питер, 2002. — 224 с.: ил. — Примеч. ред.)
27
Или, по крайней мере, так изначально задумывалось. Сейчас Scrum вобрал в себя множество методов экстремального программирования.
28
Safety Research & Strategies Inc., Toyota unintended acceleration and the big bowl of «spaghetti» code [blog post]. 7 ноября 2013 г. URL: https://www.safetyresearch.net/blog/articles/toyota-unintended-acceleration-and-big-bowl-%E2%80%9Cspaghetti%E2%80%9D-code.
29
O’Cane S. Volkswagen America’s CEO blames software engineers for emissions cheating scandal // The Verge. 8 октября 2015 г. URL: https://www.theverge.com/2015/10/8/9481651/volkswagen-congressional-hearing-diesel-scandal-fault.
30
Adzic G. Humans vs Computers. London: Neuri Consulting LLP, 2017. URL: http://humansvscomputers.com.
31
Parker M. Humble Pi: A Comedy of Maths Errors. London: Penguin Random House UK, 2019. URL: https://mathsgear.co.uk/products/humble-pi-a-comedy-of-maths-errors.
32
Agile Alliance. Exploratory testing. Ссылка: https://www.agilealliance.org/glossary/exploratory-testing
33
Вспомните разработчиков из «Фольксваген», которые «согласились» выполнить задание обойти испытания на количество выбросов вредных веществ в атмосферу. https://ru.wikipedia.org/wiki/Дело_Volkswagen.
34
https://ru.wikipedia.org/wiki/PERT.
35
Это одно из определений истории, данное Роном Джеффрисом.
36
Ну, в какой-то степени, все равно.
37
https://ru.wikipedia.org/wiki/Закон_больших_чисел.
38
https://en.wikipedia.org/wiki/Wideband_delphi.
39
Grenning J. W. 2002. Planning Poker, or How to avoid analysis paralysis while release planning. URL: https://wingman-sw.com/articles/planning-poker.
40
Потому что автоматизация — это работа программистов!
41
Это мои личные впечатления, основанные на разговорах с ребятами, которые напрямую сталкивались с подобными проблемами. Сейчас у меня нет актуальных данных. Действуйте на свой страх и риск.
42
https://en.wikipedia.org/wiki/Chrysler_Comprehensive_Compensation_System.
43
Evans E. Domain-Driven Design: Tackling Complexity in the Heart of Software. Boston, Massachusetts: Addison-Wesley, 2003.
44
Marco T. Structured Analysis and System Specification. Upper Saddle River, New Jersey: Yourdon Press, 1979.
45
«Это энергия, создаваемая всеми живыми существами. Она снаружи и внутри нас. Она связывает всю Галактику». Лукас Дж. Звездные войны. Эпизод IV: Новая надежда. 1979. Кинокомпания «Лукасфилм».
46
Это произошло за десятилетие до того, как я узнал о разработке через тестирование. Знай мы с Джимом этот метод в то время, мы могли бы легко откатить это изменение.
47
Beck K. Extreme Programming Explained: Embrace Change. Boston, Massachusetts: Addison-Wesley, 2000. P. 97.
48
https://ru.wikipedia.org/wiki/CruiseControl.
49
http://wiki.c2.com/?MikeTwo.
50
Потому они и называются стендап-митинги, то есть «стоя».
51
https://ru.wikipedia.org/wiki/Двойная_запись.
52
Если вы изучали бухгалтерское дело, то, скорее всего, кипите от возмущения. Да, это было грубым упрощением. С другой стороны, я описал разработку через тестирование упрощенно, одним абзацем. Программисты, наверное, тоже возмутились.
53
Fowler M. Refactoring: Improving the Design of Existing Code. 2nd ed. Boston, Massachusetts: Addison-Wesley, 2019.
54
Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Паттерны объектно-ориентированного проектирования. — СПб.: Питер, 2020. — 448 с.: ил.
55
https://en.wikipedia.org/wiki/Mob_programming, https://mobprogramming.org/mob-programming-basics/.
56
https://martinfowler.com/bliki/FlaccidScrum.html.
57
Booch G. Object-Oriented Analysis and Design with Applications. 2nd ed. Reading, Massachusetts: Addison-Wesley, 1994. Pp. 233–234.
58
58 The birth of the IBM PC. URL: https://www.ibm.com/ibm/history/exhibits/pc25/pc25_birth.html.
59
https://ru.wikipedia.org/wiki/Scaled_Agile_Framework.
60
https://less.works/ru/.
61
Приводится с разрешения.
62
Ellnestam O., Brolund D. The Mikado Method. Shelter Island, New York: Manning Publications, 2014.
63
Beck K. test && commit || revert. 2018. URL: https://medium.com/@kentbeck_7670/test-commitrevert-870bbd756864.
64
Классический пример экзаптации: оперение птиц первоначально использовалось для регуляции температуры, в дальнейшем оно было адаптировано для полета. — Примеч. ред.
65
Опять же на 2019 год. Времена меняются.
66
Используется с разрешения.
67
Adkins L. Coaching Agile Teams: A Companion for ScrumMasters, Agile Coaches, and Project Managers in Transition. Boston, Massachusetts: Addison-Wesley, 2010.
68
https://manifesto.softwarecraftsmanship.org/#/ru-ru.
69
https://agilemanifesto.org/iso/ru/principles.html.
70
Highsmith J. Agile Project Management: Creating Innovative Products, 2nd ed. Boston, Massachusetts: Addison-Wesley, 2009. P. 85.
71
Beck K. Extreme Programming Explained: Embrace Change. Boston, Massachusetts: Addison-Wesley, 2000.
72
Fowler M. Refactoring: Improving the Design of Existing Code. 2nd ed. Boston, Massachusetts: Addison-Wesley, 2019.