В настоящее время мы являемся свидетелями качественных изменений в подходах к разработке программного обеспечения. Эти фундаментальные изменения затрагивают все, что связано с проектированием, разработкой и использованием программ. Практически все успешные компании осознали, что программное обеспечение – это не просто код, который можно разрабатывать и запускать на выполнение. На самом деле любая программа – это некий объект, с которым осуществляется взаимодействие.
Новый подход к разработке программного обеспечения является более универсальным, целостным и лучше отражает действительность, с которой ежедневно сталкиваются команды разработчиков ПО. Давно ушли в прошлое те времена, когда для описания разработки и поддержки программ применялись производственные метафоры. Когда-то считалось, что программы, как и любые другие товары, проектировались, планировались и, наконец, запускались в производство. Теперь же слово «наконец» к описанию процесса разработки ПО не применяется. Этот процесс представляет собой бесконечный цикл адаптации, изменения и обучения.
В этой книге изложены тысячи примеров преодоления затруднений, с которыми сталкиваются разработчики программ в попытках упростить свою работу.
Авторы книги не предлагают универсальное решение, которое подошло бы всем. Вместо этого они предлагают обзор тематических областей, практик и наблюдений за командами разработчиков и организациями, которые осознали, что для создания хороших продуктов, выработки пользовательских практик и разработки ПО требуются совместная работа, вдумчивая критика, эффективное сотрудничество и обратная связь.
В 2009 году на конференции Velocity 09, проводимой издательством О'Reilly, я и мой друг Пол Хэммонд представили презентацию «10+ Deploys a Day: Dev and Ops Cooperation at Flickr». Несмотря на то что часть материала презентации была посвящена вопросам непрерывного развертывания, многие зрители обращали больше внимания на часть «10+ развертывание», а не на часть «Сотрудничество». Я считаю, что было бы ошибкой полагать, что технологии или «железо» нужно рассматривать отдельно от социального или культурного «софта». Эти компоненты неразрывно связаны и в одинаковой степени важны для достижения успеха. Другими словами, люди, процессы и программное обеспечение связаны между собой гораздо сильнее, чем принято думать.
Я настоятельно советую читателям не совершать ошибку, полагая, что технологии существуют отдельно от людей и процессов. Ваши конкуренты тут же воспользуются вашей ошибкой и съедят вас живьем.
Вряд ли вы найдете рассматриваемые в этой книге темы в типовых учебных программах по информатике либо в курсах профессионального лидерства или в курсах, предназначенных для разработчиков программ. Эти темы появились на этапе прагматической зрелости, которая, в свою очередь, появляется лишь в результате напряженной работы.
В этой книге вы найдете исчерпывающий набор указаний. И я призываю вас, дорогие читатели, использовать эти указания применительно к вашему контенту и к вашей среде.
Джон Оллспоу, технический директор, Etsy, Бруклин, Нью-Йорк