Friday, March 24, 2006

Пятница №3 - Правда о методологиях

Правда о методологиях

Итак, файтинг, факинг, зимующие медведи и королевская семья – 4 основных вида взаимоотношений между программистами и пользователями. Люди, которые читали Эдда Салливана [1] , Карла Вигерса [2] и Йордона ДеМарко [3], в этот момент, очевидно, возразят, что в мире существует еще один, и самый правильный вид общения – его полное отсутствие. Это бывает при такой организации разработки, которая описывается в великолепных романах вышеупомянутых господ: когда аналитики интервьюируют пользователей, пишут полноценные use cases, а на их основе полные и подробные спецификации, которые затем получают кодеры, и после нескольких человеко-часов на выходе получается продукт, который тестируется компанией богоподобных тестеров и, после обмена несколькими сообщениями в баг-трекере о порядке расположения кнопок Help и Quit на тулбаре, сдается пользователям в полной готовности.

О, нет! Я не в коем случае не возьмусь обвинять многоуважаемых господ в фантазерстве, порожденном неумеренным просмотром сериала «СтарТрек». Однако настало время рассказать о том, о чем умалчивают подобные романы о методологиях разработки ПО.

А молчат они о кадрах. Для успешного выполнения ИТ-проекта по «правильной» схеме требуется совершенно особая команда. О которой сейчас мы и поговорим.

Аналитики

Вы, наверное, думаете, что аналитики это изящные люди в пиджаках от Armani или на худой конец, от Hugo Boss? С глазами куда умней, чем у немецкой овчарки, но чуть глупей, чем у сенбернара, хитрым (почти ленинским) прищуром, обязательным Parker’ом за одним ухом и блютуф-хэндс-фри в другом? С ноутбуком в одной руке и пачкой презентаций в другой? Ха! И еще раз ха!

Вы читали что-нибудь из одиозных романов Виктора Суворова? Его жуткие страшилки про спецназ ГРУ? Про то, как напильником пилят зубы, чтобы быстро узнать страшные тайны у захваченного врага, и про другие милые выражения лица страшной тетки-войны? Так вот, не читайте – потому что с действительно надежные способы выпытать сведения знают только аналитики успешных ИТ-проектов. 5 лет службы в спецназе – минимальное требование к кандидатам в аналитики. К другим требованиям относятся представительный внешний вид (молодой Шварценнегер плачет в углу спортзала) и умение гнуть правой рукой трехдюймовые подковы (просто не представляете, как много решает первое крепкое рукопожатие с интервьюируемым пользователем!).

Аналитик должен не просто внушать уважение. Интервью с аналитиком должно стать важнейшим событие в жизни пользователя, не менее важным, чем женитьба, развод и рождение детей. Некоторые сравнивают интервью с исповедью, но такое сравнение очевидно некорректно, так как грехи аналитик никому не отпускает, а скорее наоборот…

Когда пользователь приходит к аналитику (кстати, следует развеять странную и ложную посылку о том, что аналитики должны посещать пользователей для интервью – совсем наоборот), он должен быть подготовлен к интервью.

Три надменные секретарши, полный обыск с раздеванием и пальпацией внутренних органов, а также двое охранников с автоматами наперевес должны внушить пользователю мысль о том, что нужно соблюдать субординацию. Полиграф, соединенный через усилитель со слегка модифицированным вариантом железной девы или испанского сапога, должен ликвидировать надежду кое-что приукрасить и преувеличить важность своего участка работы.

Впрочем, некоторые специалисты утверждают, что на этапе анализа можно сэкономить, если сразу увольнять всех пользователей и воспитывать новых под нужное программное обеспечение (ходят даже слухи о системе спецшкол-интернатов и даже роддомов для этих целей[1]). Но лично я считаю это попыткой уйти от решения проблемы, потому что рано или поздно уволенные пользователи вновь окажутся на другом автоматизируемом предприятии, и что тогда? Нет, если делать, то сразу хорошо!

Кодеры

Наивно было бы думать, что привычные всем «кодеры», полгода как выпустившиеся из вуза и прочитавшие аж 3 книги, могут справиться с задачами по кодированию идеального проекта.

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

Настоящий элитный кодер не просто знает какие-то языки программирования (вообще, не менее 26 языков, это не считая диалекты Си для всех версий Unix, естественно), библиотеки функций и т.д. Это вообще не обсуждается, точно также как наличие крыльев для птицы. Настоящий кодер обладает чувством кода.

Чувство кода – вещь очевидно иррациональная. Достаточно ему взглянуть на титульный лист 300-страничной спецификации, как кодер сразу может определить, где закралась логическая ошибка. Он сам не может объяснить, как он это делает, но результат налицо. Про такие мелочи, что любой набранный десятипальцевым слепым методом кусок кода не содержит ошибок и всегда компилируется, не стоит и говорить.

Но вот еще две вещи про них рассказывают, в которые я верить напрочь – слишком уж фантастично они звучат. Пока оставим про них, а то совсем подумаете, что я совсем заврался.

Тестеры

Протестировать полностью какое-либо реальное бизнес-приложения невозможно. Кто не согласен – пусть попробует. Однако такие программы все же существуют, причем в количестве, не позволяющем говорить о том, что «исключения только подтверждают правила». Как же они тестировались? Бла-бла про верификацию и валидацию [Быстрое тестирование] давайте оставим.

Естественно, и тут не обошлось без искусственного отбора и скрещивания – есть особая порода тестеров.

На самом деле настоящие тестеры это глубоко несчастные люди. Почему? Вспомните забавного персонажа, созданного Пьером Ришаром в «Высоком блондине в черном ботинке» и других великолепных фильмах. Бедняга провоцировал поломки всего чего только можно, попадал в самые ужасные ситуации... Так вот, прототипом этого героя был один из настоящих тестеров.

На самом деле это ужасная судьба. Несмотря на то, что живут эти тестеры в специально оборудованных апартаментах рядом с рабочим местом – стены обиты ватой, порогов нет, розеток нет, спят на теплом мягком нескользком полу, кушают экологически чистые продукты (вилки пластмассовые); несмотря на то, что за каждым тестером беспрерывно следуют 2 охранника и парамедик, травматичность и смертность у них очень высокая. Госкомстат с ума сходит от статистики, а прокуратура уже не знает, куда дела девать по тяжким телесным повреждениям и несчастным случаям среди тестеров.

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

Сейчас популярен сервис Google Earth, так что вы сами можете легко убедиться – найдите на карте кампус Микрософт и сделайте скриншот. В Photoshop наложите фильтр слоев, и чуть южнее основного здания можно различить заглубленное строение (бывшее бомбоубежище авиабазы Редмонд, кстати). Это и есть спецкампус для тестеров.

По слухам, в 1995 году какой-то идиот из службы обеспечения Microsoft поставил тестерам стандартный автомат для продажи баночной колы, чипсов и т.д. Конечно, потом уволили и его, и начальника охраны спецкампуса и половину отдела кадров заодно, но было уже поздно: у троих тестеров свернуло челюсть выскочившей банкой, пятеро подавились ключами от баночной колы, а уж про удары током вообще молчу. Короче, почти весь отдел вышел из строя на полгода… Вот поэтому в Windows Chicago и было столько багов. А то все – Билл то, Билл се, зажрался, баги специально выпускает…

А он, между прочим, очень переживал, и до сих пор свой бронированный лимузин отдает тестерам без звука по первому требованию, если того надо отвести в церковь там, или в синагогу – на свадьбу, конечно, по другим случаям их не выпускают.

Кроме того, за тестерами теперь охотится НАСА, особенно после катастроф с шаттлами. До них только недавно дошло, почему у СССР было на порядок меньше катастроф – просто тестера перед полетом всегда привозили, начинали сажать в СОЮЗ-ТМ, а тот туда пальцем тыкнет, рукой махнет – тут же отвалилась плитка, закоротил штепсель, и поехал на доработку модуль. Космонавты, перекрестясь, тестеру пузырь поставят и опять спать…

В общем, настоящие тестеры люди не простые, зато эффективность дают очень высокую.

Project managers

Ну, у нас остались project manager (прожект манагеры). Хех, если вы когда-нибудь ругали своего менеджера проекта за въедливость, надоедливость, мысленно и вербально кляли его за пристрастие к графикам и отчетам, немедленно встаньте и подойдите к нему, встаньте на колени и биясь головой об пол с частотой 2 удара в секунду, извинитесь (можно расплакаться). Потому что если вы бы работали с настоящим менеджером проекта, то ваш собственный прожект манагер показался бы чем-то вроде гибрида матери Терезы и 2-х дневного ласкового котенка.

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

В нашей с вами обычной жизни, дорогие коллеги-программисты, в промежутках между чтением auto.ru и anekdot.ru, происходит, на самом деле, не так уже много будоражащих кровь событий. Ну, совещание, ну скиллов в WoW на халяву прихватили или в контре срубили хитрого менеджера по продажам из 2-го отдела… Скучно же.

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

В настоящих проектах все не так. Там действительно каждый аналитик потенциально может стать прожект манагером.

О требованиях к аналитикам выше уже написано. А чтобы стать ПМ, аналитику достаточно сделать две вещи – подать заявление и написать завещание.

Потому что из всех кандидатов выбирают только одного. Обычно из 2-3, иногда из большего числа. Самого известного прожект манагера, выжившего среди 14 претендентов, ныне работающего на Google, зовут Дун Канмак (Doon Canmack). Да, было время, тогда стартапов и web 2.0 не было, теперь 3 кандидата уже максимум...

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

Но вы не подумайте, что аналитики в борьбе за кресло project manager тупо мочат друг друга из шотганов и ракетниц. Не за тем их воспитывали, в конце концов.

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

Конечно, вы можете посмеяться и сказать, что «психи» не шарят в компах, программах и вообще это невозможно, но в таких клиниках обычно содержатся претенденты-неудачники, сошедшие с дистанции на предыдущих отборочных соревнованиях, так что задача приобретает особое значение.

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

Помнится, долго шептались в кулуарах о том диком случае, когда мессингер загипнотизировал трех венчурных инвесторов своего проекта, впряг с помощью подтяжек в тележку молочника и ездил по кампусу с криками «Но, залетные!», а те игриво ржали, закусив галстуки от Prada и бодро помахивая ляжками на особо крутых поворотах. Его удалось утихомирить только с помощью роты специального слепоглухонемого спецназа. Они нашли его на ощупь в холодильнике кампуса и заткнули все нащупанные отверстия скотчем, плюс поставили клизму из водки, так как обычные транквилизаторы месингеров не берут. Этого мессингера пришлось выслать на необитаемый остров вместе с 3 программистами, которые отказались покинуть Хозяина, как они его называли, а венчурные инвесторы как-то разом отказались от ношения подтяжек.

Что делать?

Если вы, уважаемые читатели-программисты, имеете хоть немного гордости и собственного достоинства, то, прочитав о настоящих людях, которые делают настоящие программные проекты, должны задуматься, что делать со своей собственной жизнью.

Это совершенно нормальная реакция – спросить себя «а я чем хуже», «есть еще порох в..», «а мы что - лыком шиты» (только без «тварь дрожащая или право имею», пожалуйста).

Такая рефлексия и самобичевание полезны в умеренных дозах (только не машите руками сильно, скинете бутылку, а пиво с клавиатуры плохо отмывается).

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

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

Boot!



[1] Азазель?


Ну, раз нету откликов, публикацию отрывков придется прекратить...

17 comments:

Anonymous said...

Не хочу чтобы меня правильно поняли (c), но так и хочется пожелать тебе ещё немного "не спалось" в следующий четверг :)

Нравится
hvlad

PS Вот когда пятница №13 появится - тогда "каменты" посыпятся :-)

Anonymous said...

пишешь харашо. продолжай в том же духе.

Anonymous said...

Да как же это прекратить, непременно надо продолжать ;)

Ждем также раскрытия темы тим-лидинга,, митингов и видеоконференций с американскими коллегами.

Anonymous said...

Не надо прекрашать, хорошо пишешь :)
btw, в шестом эксплорере вместо сносок отображается исходные теги: [тут угловая скобка]!--[if !supportFootnotes]-->
--
wbr, ps

Arc said...

Тонкий юмор, понятный не всем.
Я ржал и немог!

Anonymous said...

Будут, будут комментарии, если в них всё дело.
Жизненно и местами похоже на реальную правду :-)

Anonymous said...

Продолжай публиковать, ради всего святого - продолжай публиковать!

Anonymous said...

я просто рядалъ, читая о тестерах. я распечатал твой блог, для того, чтобы скоротать время в поезде, и скоро мой друг-программер, почитав его, был пацтулам.

обалдительно четкое, корректное и правильное изложение сути (скромно промолчу про синтаксис). (-=

прошу продолжать, афтар! пеши исчо!

Anonymous said...

Пиши! Это здорово! =)

Anonymous said...

Не проникся я че то ... извини уж... может таки через чур цинизма...

Anonymous said...

Всё в порядке, за вами внимательно следят.
Пишите.

Гилёв Вячеслав said...

Алексей, можно ли воспользоваться частью материалов Вашей статьи с указанием ссылки на нее?

Гилёв Вячеслав said...

Алексей, можно ли с Вами связаться по почте или как то еще?

Unknown said...

Алексей!
Можно узнать почему пункт "Пятница №3 - Правда о методологиях (!)" выделился "жирным" и в конце появился восклицательный знак. Также видоизменились названия глав поста. В этом есть какой-то скрытый смысл, например, привлечь внимание читателей?...
Если вопрос слишком глуп, можно на него не отвечать ;)

Unknown said...

Алексей!

Можно узнать почему на главной странице Вашего блога пункт "Пятница №3 - Правда о методологиях (!)" выделен "жирным" и в конце (!), мне казалось раньше было не так :) В этом есть какой-то скрытый смысл, например, привлечь внимание читателей, или это плод моего больного воображения ;)

Unknown said...

Прошу прощения за два одинаковых предыдущих комментария. Не сразу заметил надпись: "Ваш комментарий сохранен и будет опубликован после одобрения со стороны владельца блога", решил, что в первый раз не прошло...

Олег said...

Не могу молчать. )
Я тестер. Похоже как раз такой, как описан. Мне по жизни не везет с программами. Вечно баги какие-то. А программы люблю. Особенно новые.