antonycb (antonycb) wrote,
antonycb
antonycb

Записки на манжетах

(оригинал текста - 28 июня 2007, вычитан и исправлен 30 мая 2008)

В 2001-м году 17 выдающихся деятелей в сфере разработки программного обеспечения собрались в горнолыжном курортном местечке Snowbird в штате Юта. Как утверждает официальная история, целью этих посиделок являлась выработка магических мега-принципов разработки программного обеспечения. Совместно пошерудив мозгами и выпив пива - родился манифест "шустрой" (agile) разработки.
Авторитет участников в индустрии был непререкаем, поэтому термин стал быстро распространяться. Сейас уже написана добрая дюжина книг с гордым прилагательным "Agile" в заголовках. Авторы манифеста, отдать им должное, не стали растекаться мыслею по древу. Их послание миру содержало лишь несколько простых, но не бесспорных тезисов.



  • Customer satisfaction by rapid, continuous delivery of useful software (удовлетворение заказчика путем быстрой и непрерывной поставки работоспособного софта) - еще не разу не встречал софтверного проекта, целью которого было бы обидеть, неудовлетворить или напарить заказчика. Вероятно, в подавляющем большинстве случаев, заказчика, все же, пытаются удовлетворить, другими словами, сделать-таки то, чего он хочет. Тем не менее, довольно трудно представить себе полноразмерный проект с непрерывной (пусть даже и еженедельной) поставкой готового продукта. Тяжеловесному процессу перетаскивания софта с окружения на окружение (environment) с сопутствующим тестированием пока нет альтернатив (если речь, конечно, не идет о карманной разработке внутри какой-нибудь малюсенькой компашки).


  • Working software is delivered frequently (weeks rather than months) (работающий софт поставляется часто (недели вместо месяцев)) - это перепев предыдущего пункта. Поставки коротеньких функциональных кусочков являются голубой мечтой всех экстремальщиков . Однако, трудно представить себе заказчика довольного перманентным стрессом, вызванным непрерывным запуском чего-то в эксплуатацию.


  • Working software is the principal measure of progress (работающий софт является главным мерилом развития проекта) - с этим трудно поспорить, хотя, пункт несколько вялый - ни о чем. Что можно ответить на вопрос: в чем вы измеряете свой проект? И действительно, в чем? В попугаях, строках кода, похмельных понедельничных программистах, или в освоенных долларах потенциального противника?


  • Even late changes in requirements are welcomed (даже поздние изменения в требованиях приветствуются) - вот это, по моему, несколько популистская хуйня. Действительно, любознательный заказчик, поддерживающий agile разработку, может понять этот пункт манифеста буквально и вовсе забьёт на тех. требования. Живо вспоминаются при этом вопящие благим матом менеджеры проектов, которым в последний момент изменили требования. Тут сразу возникают невеселые мысли о сорванных сроках и просранных бонусах.


  • Close, daily, cooperation between business people and developers (тесное, ежедневное сотрудничество между представителями бизнеса и разработчиками) - слово бизнес в обозначении представители бизнеса присутствует не спроста. Как правило, эти люди действительно вовлечены в основной бизнес заказчика и заняты им ежедневно. Практика показывает, что чрезмерная активность аналитика в выяснении животрепещущих вопросов проекта быстро приводит бизнес-людей, если и не в ярость, то в раздражение. Попытки применять каких-то специальных людей, вроде как от бизнеса, но непосредственно в бизнес не вовлеченных, а поэтому свободных от каждодневных мытарств, приводит лишь к появлению в проекте дополнительного бесполезного слоя , активно вовлекающего других (полезных) участников проекта в игру в испорченный телефон.


  • Face-to-face conversation is the best form of communication (личное общение является лучшей формой коммуникаций). Кто бы спорил. Особенно, когда через пол-года выясняется, что что-то было сказано, а потом забыто, а уже вследствии этого значительный кусок работы забыт и проёбан. Нет, блин, как завещал Билл Гейтс - электронная почта (x2 раза), а то концов не найдешь и костей не соберешь.


  • Projects are built around motivated individuals, who should be trusted (проект организуется вокруг мотивированных личностей, коим надлежит верить) - вероятно, этот пункт призывает заменить формальных менеджеров проектов хорошо оплачиваемыми харизматическими мессиями, кои проповедуя, будут вести проект тернистой тропою, проложенной над пропастью. На одной из моих предыдущих работ я столкнулся с таким подходом. Главный системный программист, а по совместительству администратор всякого жизненно важного, но безнадежно устаревшего говна был именно таким мессией. На протяжении четырех лет, что я там подвизался, он схарчивал всякого неудачника, взятого ему помощником. Ф топку таких мессий. Уж лучше - добродушно-похуистичный менеджер проекта с бородой, пивным животом и в майке с надписью Mickey Mouse .


  • Continuous attention to technical excellence and good design (постоянное внимание к техническому совершенству и хорошему дизайну) - каждый уважаемый проект начинается с заклинаний о хорошем дизайне и общем совершенстве. В этот раз все будет по другому декларируют как заказчики, так и разработчики. Однако, природная энтропия всякий раз оказывается сильнее. В крупных проектах через полгода никто уже о качестве всерьез не вспоминает. Не до жиру, как говорится, - быть бы живу.


  • Simplicity (простота) - в моем социалистическом детстве было популярным выражение: простой, как трусы за рубль двадцать . Никогда не участвовал в таких дешевых проектах и вам не советую.


  • Self-organizing teams (самоорганизующиеся коллективы). За мою долгую практику мне лишь пару раз доводилось видеть успешный самоорганизованный коллектив. Он состоял из исключительных профессионалов, кои, уважая реноме друг друга, равномерно двигали проект в успешном направлении. Зачастую же, состав коллективов оказывается крайне разнородным: разный опыт, навыки, амбиции. Соответственно, и договориться в таком коллективе людям самостоятельно бывает просто невозможно.


  • Regular adaptation to changing circumstances (регулярная адаптация к изменяющимся обстоятельствам). Если в проект вовлечено более одного человека, всегда найдется кто-нибудь, кто будет весьма не рад такой адаптивности.



Вообще, мессианство - это слабая сторона современного компьютерного мира. Достигнув определенного успеха, как личного материального (в software development пока недурно платят), так и общественного, наиболее ретивые компьютерные перцы становятся новыми проповедниками. А так как, по-хорошему, большинство понятий в этой области уже придуманы, обсосаны в книжках и уже успели надоесть, новые апостолы пытаются поразить свою паству нестандартным ходом мыслей. Прибегая к излюбленной аналогии книгочеев, сравнивающих разработку софта со строительством зданий, идеи Agile были бы равнозначны пропагандированию надувных небоскребов.

И вообще, на горнолыжном курорте надобно кататься на лыжах и бухать пивом, а не заниматься спасением софтверного мира."
Subscribe

  • Православие и прогресс!

    «Божьей Земли планета Крутится на оси. Осень сменяет лето, Вопреки врагам России.» Пару лет назад попалась мне ссылка на этот самодельный фильм…

  • Среда

    Вечерняя прогулка. Ветренно, холодно, пасмурно.

  • Суббота

    Вчера, в пятницу после работы, прогулка по Sea Point:

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 4 comments