Как не делать плохого программного обеспечения?
Ожидает приглашения
Обычно, когда речь идет о разработке ПО, ее часто сравнивают с каким-нибудь процессом вроде строительства зданий, спортивными состязаниями, приготовлением пищи и т. д. В этой статье я тоже хочу провести подобную аналогию. И сравнение пойдет с двумя нашумевшими фильмами “Матрица” и “Ночной дозор”. Наверняка многие посмотрели оба этих фильма, поэтому сравнение будет вполне понятным.
Недавно я посмотрел фильм о процессе создания фильма “Матрица”. Надо сказать, что этот документальный фильм длится гораздо дольше, чем сама “Матрица”. В этом документальном фильме показывали съемочный процесс, рассказывали о спецэффектах, местах съемок и об отношении съемочной группы к работе. Этот документальный фильм был бы одним из заурядных (вроде “Стоп — снято”), если бы во время того, как актеры рассказывали о своем отношении к работе, я не увидел, что они хотели создать совершенство.
Все актеры, участвующие в сценах с боями, значительное время (до начала съемок) тренировались с постановщиком боев в Голливуде. У Киану Ривза (Нео) в это время были проблемы с позвоночником, и он постоянно носил на шее корсет. Невзирая на боли, он упорно тренировался, чтобы каждая сцена в “Матрице” была максимально эффектной. Во время съемок, Киану “измучивал” всю съемочную группу до тех пор, пока каждый снятый кадр не становился максимально зрелищным. Сцена, в которой Нео подпрыгивает и несколько раз бьет ногами Морфеуса (Лоуренс Фишберн), переснималась бесчисленное количество дублей, и каждый раз Ривз был недоволен. Съемки сцены, в которой Тринити (Керри-Энн Мосс) стреляет в агента на крыше здания, была закончена только после того как актер играющий агента ударился головой, когда его дернули специальным канатом.
Каждая “мелочь” в “Матрице” была доведена до совершенства. А уж поверьте, таких “мелочей” было предостаточно: освещение, декорации, музыка, костюмы, грим и многое другое. Заметили ли вы, что когда герои фильма находились в “Матрице”, изображение было зеленоватым, а когда в реальном мире – голубоватым? Казалось бы, “мелочь”… Но именно каждая такая мелочь в совокупности приводит к совершенству.
О “Ночном дозоре” (да простят меня поклонники), много говорить не приходится. Явно выраженная “бюджетность”… Не выровненный свет, “грубые” спецэффекты (якобы как в “Матрице”), наигранность актеров и многое другое, и все это – “Ночной дозор”. Волею судеб, этот фильм мне пришлось смотреть в кинотеатре. Я еле высидел до конца. И то, сидел до конца только из-за того, что отдал немалые деньги за просмотр (он только-только поступил в прокат).
Все выше сказанное можно спроецировать на разработку программного обеспечения. Если разработчики пишут свою часть программы только за деньги, если они не думают над решением поставленной задачи в автобусе, метро, такси, кафе, туалете, в конце концов, то из под их рук выходит не “Матрица”, а “Ночной дозор”. При работе над программным продуктом программист должен быть одержим созданием совершенства, он должен постоянно “креативить” и предлагать вещи помогающие сделать продукт еще более совершенным.
Очень часто разработчики оставляют какие-то вещи “на потом”, например не переименовывают метод в классе, если это можно сделать за 10 секунд прямо сейчас, благо средств позволяющих это сделать сейчас полно (ReSharper например). Или, что гораздо страшнее, забывают поменять текст в элементарном Label’е на форме. Многие могут сказать: “Ну, это же мелочи, главное это продуманная архитектура и чтобы был рабочий функционал”. Да, архитектура и функционал – это очень важно, но если учитывать только эти вещи, в конце получится “Ночной дозор”. Мелочи – вот ключ к “Матрице”. Уделение огромного внимания мелочам позволит сделать безупречный программный продукт. Конечно, достичь совершенства трудно, вряд ли у кого-то из нас были релизы без багов, но учитывая мелочи, рано или поздно получится “Матрица”.
Немаловажным является дух команды, которая создает программный продукт. Обычно в команду входят не только программисты, но и дизайнеры, менеджеры, инвесторы и многие другие (обычно такие бесконечные списки пускают в конце фильма). Если все эти люди работают на “одном дыхании”, в конце обязательно получится “Матрица”. Но если хоть один человек осознанно допускает погрешности (или целые грехи вроде Label’а), это неминуемо приведет в “Ночной дозор”.
Недавно я посмотрел фильм о процессе создания фильма “Матрица”. Надо сказать, что этот документальный фильм длится гораздо дольше, чем сама “Матрица”. В этом документальном фильме показывали съемочный процесс, рассказывали о спецэффектах, местах съемок и об отношении съемочной группы к работе. Этот документальный фильм был бы одним из заурядных (вроде “Стоп — снято”), если бы во время того, как актеры рассказывали о своем отношении к работе, я не увидел, что они хотели создать совершенство.
Все актеры, участвующие в сценах с боями, значительное время (до начала съемок) тренировались с постановщиком боев в Голливуде. У Киану Ривза (Нео) в это время были проблемы с позвоночником, и он постоянно носил на шее корсет. Невзирая на боли, он упорно тренировался, чтобы каждая сцена в “Матрице” была максимально эффектной. Во время съемок, Киану “измучивал” всю съемочную группу до тех пор, пока каждый снятый кадр не становился максимально зрелищным. Сцена, в которой Нео подпрыгивает и несколько раз бьет ногами Морфеуса (Лоуренс Фишберн), переснималась бесчисленное количество дублей, и каждый раз Ривз был недоволен. Съемки сцены, в которой Тринити (Керри-Энн Мосс) стреляет в агента на крыше здания, была закончена только после того как актер играющий агента ударился головой, когда его дернули специальным канатом.
Каждая “мелочь” в “Матрице” была доведена до совершенства. А уж поверьте, таких “мелочей” было предостаточно: освещение, декорации, музыка, костюмы, грим и многое другое. Заметили ли вы, что когда герои фильма находились в “Матрице”, изображение было зеленоватым, а когда в реальном мире – голубоватым? Казалось бы, “мелочь”… Но именно каждая такая мелочь в совокупности приводит к совершенству.
О “Ночном дозоре” (да простят меня поклонники), много говорить не приходится. Явно выраженная “бюджетность”… Не выровненный свет, “грубые” спецэффекты (якобы как в “Матрице”), наигранность актеров и многое другое, и все это – “Ночной дозор”. Волею судеб, этот фильм мне пришлось смотреть в кинотеатре. Я еле высидел до конца. И то, сидел до конца только из-за того, что отдал немалые деньги за просмотр (он только-только поступил в прокат).
Все выше сказанное можно спроецировать на разработку программного обеспечения. Если разработчики пишут свою часть программы только за деньги, если они не думают над решением поставленной задачи в автобусе, метро, такси, кафе, туалете, в конце концов, то из под их рук выходит не “Матрица”, а “Ночной дозор”. При работе над программным продуктом программист должен быть одержим созданием совершенства, он должен постоянно “креативить” и предлагать вещи помогающие сделать продукт еще более совершенным.
Очень часто разработчики оставляют какие-то вещи “на потом”, например не переименовывают метод в классе, если это можно сделать за 10 секунд прямо сейчас, благо средств позволяющих это сделать сейчас полно (ReSharper например). Или, что гораздо страшнее, забывают поменять текст в элементарном Label’е на форме. Многие могут сказать: “Ну, это же мелочи, главное это продуманная архитектура и чтобы был рабочий функционал”. Да, архитектура и функционал – это очень важно, но если учитывать только эти вещи, в конце получится “Ночной дозор”. Мелочи – вот ключ к “Матрице”. Уделение огромного внимания мелочам позволит сделать безупречный программный продукт. Конечно, достичь совершенства трудно, вряд ли у кого-то из нас были релизы без багов, но учитывая мелочи, рано или поздно получится “Матрица”.
Немаловажным является дух команды, которая создает программный продукт. Обычно в команду входят не только программисты, но и дизайнеры, менеджеры, инвесторы и многие другие (обычно такие бесконечные списки пускают в конце фильма). Если все эти люди работают на “одном дыхании”, в конце обязательно получится “Матрица”. Но если хоть один человек осознанно допускает погрешности (или целые грехи вроде Label’а), это неминуемо приведет в “Ночной дозор”.
