В двух предыдущих заметках (первая и вторая) я завел речь о том, какие виды деятельности приходится выполнять по ходу проекта. И сколько времени в день может занимать плодотворная работа того или иного рода. Сейчас хочется рассказать, насколько я устаю на разных этапах разработки.
Наиболее полно термин “усталость” подходит к написанию документации. Здесь после рабочего дня и голова пустая, и глаза болят, и поясницу ломит. Да и вообще физическое состояние такое, как будто мешки с картошкой таскал. Вот это действительно усталость в традиционном смысле слова – добираешься домой и единственное желание упасть и не вставать больше :)
Кодирование вызывает похожий эффект. Но, к счастью, не настолько сильный. И психологическая, и физическая усталость не такая сильная, как при документировании. Не знаю, чем это вызвано. Может быть тем, что при кодировании есть гораздо большая положительная отдача: написал кусок программы, покрыл ее тестами, убедился, что все работает и… И хорошо! Душа поет! :) Может быть дело еще и в том, что при кодировании редко возникают ситуации, когда ты работаешь “отсюда и до обеда”, когда ставишь себе цель написать столько-то разделов такой-то главы за сегодняшний день. И ближе к концу рабочего дня начинаешь понимать, что нужно выдавить из себя еще вот эту страничку, а затем еще одну, а затем и еще одну… Может быть, дело еще и в том, что кодированием занимаешься находясь “на пике формы”, когда еще не было накопления усталости от всего, что было раньше. А вот документирование – это уже самый конец проекта, когда огромное количество сил потрачено на проектирование, экспериментирование, кодирование, тестирование, опытную эксплуатацию и пр. И после всего этого – за сегодняшний день нужно написать 20 страниц документации… пристрелите меня… ;) В общем, резюмируя: от кодирования устаешь. И физически устаешь, и психологически. Но не очень сильно.
Усталость от кодирования и документирования достаточно простая. После рабочего дня можно более-менее легко переключиться на решение каких-то других задач. Например, сходить в спортзал, обсудить покупку новых штор с женой, поиграть с ребенком.
Но вот усталость от экспериментирования и от отладки программ уже другого рода. Не столько физическая, сколько психологическая. Насколько я могу вспомнить, я редко сильно физически устаю, когда приходится выискивать баги в программах. Может быть потому, что отладка заставляет больше двигаться – вскакивать, мерить шагами коридор, грозить кому-то кулаком, стучать в сердцах по столу… :) Но вот психологическая усталость от отладки серьезно отличается от таковой при кодировании/документировании. Она гораздо сильнее. Может быть за счет более сильного нервного напряжения. Еще хорошо, когда отладка завершается успешно и злобный баг, на который было убито несколько мучительных часов тестирования, таки найден и устранен. Тогда просто чувствуешь себя очень усталым победителем. Но вот если баг не найден… Вот это действительно хреново. Поскольку мысли о его поиске не покидают тебя. Даже не смотря на попытки переключения на какую-то другую тему. Меня в такие моменты иногда одолевает очень серьезная рассеянность. Несколько раз в магазине я забывал забирать сдачу или взять с собой купленные продукты. И, что интересно, я не думал в эти моменты о программе. Просто вообще ни о чем не думал. Было состояние какого-то опустошения.
Состояние, надо сказать, неприятное. Самое плохое, что это очень асоциальное состояние, провоцирующее конфликты. Находясь в нем невозможно обсуждать шторы или пытаться играть в выдуманную ребенком роль. Просто потому, что ты отстранен от всего этого, но ты понимаешь, что нельзя вот так относится к своим близким. Но ты так же понимаешь, что и переломить себя не можешь. Еще хуже, когда такое состояние прострации внезапно прерывается какой-то догадкой. Как шило в задницу. Которое заставляет тебя бросить все и если не уткнуться в компьютер проверять ее, то хотя бы записать на листочке бумаге. Ты срываешься с места и заседаешь на полчаса-час за письменным столом, чтобы краем уха услышать в другой комнате: “Папа опять не может поиграть с ребенком”…
Да, а еще бывает, что просыпаешься среди ночи из-за того, что во сне тебе приснилось решение проблемы. У меня такое однажды было. В принципе, довольно жуткое это дело…
С тяжестью психологической усталости от отладки может сравниться разве что усталость от этапа мозгового штурма. У меня это вообще самая неприятная стадия работы над проектом, хотя есть люди, которые именно от этого получают наибольший кайф. Очень тяжело, когда в проекте все размыто: цели четко не определены, пути их достижения не ясны. Можно сделать так. А можно и эдак. А почему нужно делать так? И что хорошего будет, если мы (не)сделаем вот эдак? А что плохого? А почему?
Как говорят: в правильно сформулированном вопросе заключена половина правильного ответа. Так вот, на мой взгляд, задача этапа мозгового штурма состоит именно в формулировании правильных вопросов. Нахождение ответов на них затем будет уже делом техники. А пока нужно определить правильные вопросы. И это такая головоломка временами…
Так вот что же тяжелого в этапе мозгового штурма? Неопределенность. При большом нервном, умственном и эмоциональном напряжении. Даже при отладке и поиске багов все гораздо очевиднее: баг либо устранен, либо нет. Если устранен, то хотя бы есть чувство победителя здесь и сейчас. Если не устранен, то хотя бы понятно, что он будет устранен (чем больше опыт, тем более я в этом уверен). А вот при мозговом штурме такой очевидности нет. Не всегда ты знаешь, насколько твои вопросы хороши. Не всегда ты знаешь, в нужную ли сторону ты вообще движешься…
Из-за этого в состоянии опустошенности и рассеянности во время этапа мозгового штурма я попадаю гораздо чаще, чем на этапе отладки. И внезапные “озарения” так же возникают чаще. А возникнув, озарения требуют к себе внимания. Ведь иногда недостаточно просто зафиксировать идею, иногда идея заставляет тебя “выкуривать” ее, вращая и рассматривая с разных сторон. И так в любое время суток, в любом месте. Просто бум: “А что, если вот так?…” И все, на несколько часов ты потерян для общества :)
Вот такой поток сознания получился… Хотел еще что-то вставить про “состояние потока”. И о том, при каких раскладах мозговой штурм оказывается тяжелее, а при каких – проще. Но, видимо, уже в другой раз. Если кому-то будет интересно (в чем я не особо уверен).