Уже сейчас, новичкам-дизайнерам, которые только-только, читаю о значимости “командной работы”. Уже сейчас, среди совсем новичков и среди “почти не новичков”, ориентируюсь на мелкие командные пары-связки “рисующий”+”верстающий” (немного в прошлом посте об этом уже было, и о трудностях даже в парных связках), выравнивая по скорости работы, по характерам - к примеру, на сегодняшний день “рисующий” рисует эскизы приблизительно с той же скоростью, как его в паре верстающий эти эскизы завёрстывает в сайты с шагом -1 (т.е. к тому времени, когда у верстающего заканчивается работа над сайтом N, рисующий как раз заканчивает работу над сайтом N+1) - это очень здорово, но получится ли так же успешно у следующей связки? Пока неизвестно, и ставить их на поток в ответственных больших сайтах страшновато (тем более объём по безответственным простым сайтам ещё огромный).
А ведь это только первый шаг. Потом дизайнеры будут учиться работать с нашими программерами (которые, кстати говоря, тоже не подарочки, каждый первый со своими тараканами) , и не в паре, а в большой команде, и договариваться придётся по куче организационных вопросов - от именования файлов в файловой структуре до системы обмена уведомлениями по поводу модификации (оформления) разных блоков, форм и прочего… Вообще вопросы организации командной работы, конечно же, ширее ширше сложнее в целом, и договариваться приходится всё время, изо дня в день.
Вот берём к примеру проект. Большой. Работает команда (не считаем менеджеров-управленцев), из разработчиков - 8 программистов на нашей стороне и чуть меньше (но не менее квалифицированных) - на заокеанской, с нашей стороны -+ один дизайнер и + один тимлидер, к которому сводится весь код, который и выкладывает “сегодняшнюю” версию на публичный тестовый сервер. И проект, кажется, интересный, и не только идея - но и… как это называется? Когда, если будет закончен и запущен - станет чудо как престижным, потому что уже сейчас потенциальные, почти-почти реальные партнёры - это монстры всея сети, имена которых известны даже школьникам, и уж, кажется - долой совдеповское представление о том, как должна быть организована работа! Ведь не важно - как после, через пол года, через год повернётся ситуация, но написать в том же портфолио-резюме строчечку о том, что участвовал в таком масштабном, для таких известных… это же грандиозно! Значит, не может быть в командной работе зашоренности на реализации логики отдельного модуля!
И опять сталкиваемся с тем же. Что-то программер ваяет, сочиняет, пишет, в восемь вечера коммитит в SVN свой (работающий) кусочек кода, который включается в проект и выкладывается на тестовый сервер. Где СамыйОтветственныйУправляющий тестирует (для него это не модуль, для него это - страница сайта, на которую он заходит и кликает на ссылочки, заполняет формочки), смотрит с ужасом на страницу, про которую ему типа уже доложили, что “сделано”, и говорит - ребята! Здесь же ничего не сделано! Это нельзя показывать президенту компании! А презентация для него состоится через два часа!
Дизайнер, в начале девятого вечера получивший новый код, судорожно принимается причёсывать формы, прописывать классы, оформлять гриды и отрисовывать новые кнопочки, тестировать в куче браузеров, выкладывать новую версию (ок, более менее), но тут обнаруживается, что ещё один программер залил новый модуль (логика работает), в котором элементы форм накиданы подряд, один контрол (уже до того отредактированный дизайнером) заменен на совсем другой (ага, ессно визуализация вся поехала) и нужно ещё пару часов на именно этот модуль, а времени-то уже к 10 вечера! А красавцы-то в восемь (как им по графику положено) закончили программировать свою логику, залили код, и, ни слова не сказав тому же дизайнеру, честно ушли, домой. Чисто формально придраться не к чему.
Чисто формально. Реально с таким формальным подходом они подставляют не только дизайнера (Таня, здесь же ничего не оформлено! - Да этот модуль только что появился, когда бы я успела? (Тех.директору) - Чем вы там все занимаетесь? Это же никому нельзя показывать! - Но программист же сделал логику, как заявлено, логика-то работает? - Нифига здесь не работает! Это нельзя никому показывать! Уберите пока эту страницу из проекта вообще, чтобы они даже случайно сюда не зашли, пусть лучше UnderConstruction, чем эта фигня! Вы же целый день там работали, неужели нельзя было сделать по человечески?) , но и себя, в конечном итоге. Потому что там, у главного руководства, будет поставлена галочка: модуль программиста А не выполнен, работа не сделана.
Я уже не говорю про чисто человеческое отношение. Так же, как этому программисту глубоко наплевать на работу проекта в целом (а заказчик-то смотрит не на кусок кода, он смотрит как раз на проект в целом), так же - и на других участников проекта. В половину девятого вечера дизайнер Таня обнаруживает новый модуль? Сама, кстати говоря? Но это ведь её проблемы, что опять, так же, как и изо дня в день, будет сидеть до позднего вечера править новый код? У программера-то отмечено - рабочий день до восьми, значит, в восемь вечера залил-встал-ушёл. Логика то в его коде работает.
Да-да-да, я понимаю, что случается такое, что только в восемь вечера кусок кода заработал, до этого отдавать было нечего. Но поверить можно в то, что такое удивительное совпадение произошло один раз. Или даже два. Но подходит к концу третья неделя работы над проектом. И по-прежнему насрать на других и на проект в целом. Потому что ЕГО логика работает, его рабочий день закончен, и за прочее ему зарплату не платят. Нерешаемо?
Решаемо. Можно договориться. Можно научиться договариваться, если не умеем пока. Хочет ли программист, чтобы его “сегодняшнюю” работу чекнули как выполненную? Могу предположить, что - да, хочет. Нарвавшись не единожды на то, что никто не будет читать его великолепный код, но и непричёсанную логику показывать - тоже не будут, может ли программист расчитать своё время таким образом, чтобы успеть увидеть свой код включенным в проект (а значит - оформленным как полагается)? Дык легко. Никто тут не программит прямо как совсем уж раб индийский - и за кофиём посвистеть время есть, и анеки почитать, и по асе тоже…
Сколько у программиста уйдёт времени на то, чтобы сказать дизайнеру о том, что “вот эти данные” выводятся не тем контролом (который уже был оформлен), а другим совсем, потому что там ещё пейджинг нужен и ещё что-то (да кто же спорит? Не дизайнер спорит, уж точно), и что естественно надо его пересмотреть, потому что у грида по дефолту есть бордеры, которые для данного макета неуместны, что “этот контрол” перестал быть самостоятельной таблицей и теперь включается “сюда” и “сюда” (а значит один заголовок оказался лишним + потерялось наследование от старшего объекта в таблицах стилей) и т.д. Вроде ведь не только в одной стране сидим, - в одном помещении, но как показывает практика, с программистом, открытым для командной работы (пусть он хоть в другой стране находится, хоть за океаном) сотрудничать легче (и в целом выходит успешнее), чем с таким же мурлом с местечковым мышлением за соседним столом. Ну как объяснить? Что каким-бы ни был гениальным его личный кусок кода - если он не будет включенным в проект, вся его гениальность так и останется невостребованной?