Этот вопрос возникает часто, когда я обсуждаю CSS3 с другими разработчиками. Они рассказывают о том, что сами не считают необходимым, чтоб сайт выглядел одинаково во всех браузерах, и хотят попробовать все эти новые методы, но клиенты настаивают на кроссбраузерности, и поэтому разработчики вынуждены использовать технику пяти- и десятилетней давности. Клиенты просто не хотят признавать изящную деградацию.
В этом вся проблема? Неужели наши клиенты не в состоянии понять эти вещи? Может быть, дело в том, что клиенты просто далеки от веба и их нужно обучить? Не думаю. Это мы слишком близко знакомы с веб-технологиями. Мы — те, кто создал эту проблему в нашей индустрии. Мы сами затрудняем себе работу и делаем ее менее творческой и приятной, чем она могла бы быть. Это полностью наша вина и ничья больше.
Подождите, что?
Если мы решили сделать сайт «пиксель в пиксель» в Internet Explorer 6 и 8, то нам предстоит сделать на 100% больше работы. Не важно, сколько фреймворков, костылей и других скриптов мы задействуем, чтоб уменьшить эту головную боль, мы все равно потратим как минимум на 30% больше времени на эти браузеры. Интересно, многие ли из нас действительно зарабатывают на 30-100% больше за такую работу? Я не слышал о таких людях. Клиенты получают эту дополнительную работу бесплатно, поэтому они, конечно, скажут, что хотят поддерживать IE 6. Если бы я был клиентом, то сказал бы так же, особенно, если бы не знал, как это все работает. Их не будет волновать наше дополнительное время, пока мы не позаботимся о соответствующей оплате такой работы.
Конечно, более быстрая загрузка и внутренняя оптимизация это весомые аргументы, но давайте посмотрим правде в глаза: одно из главных преимуществ CSS3 и нового API JavaScript в огромном куске времени, которое разработчики могут сэкономить, а также в более простом и быстром обслуживании. Клиентов не волнует то, что не приводит к снижению затрат. И это вполне понятно и естественно.

Деньги — это аргумент, который всегда побеждает
Сейчас я уже мало работаю на заказчиков, но каждый раз, когда я раньше брал клиентский проект, я всегда предоставлял варианты поддержки разных браузеров. Они хотят идеального отображения в IE 7? Это будет стоить дороже. Хотят поддержку IE 6? Это будет вдвое дороже. Я объясняю им, что это происходит потому, что мне придется делать вдвое больше работы для этого браузера. И никогда не было ни одного клиента, который отказался бы платить больше за поддержку старых браузеров. Вы удивитесь, что его волнуют старые браузеры так же, как и вас, если это не бесплатно. Но даже если заказчики соглашаются, то по крайней мере у меня будет достаточно мотивации, чтобы не возненавидеть их, свою работу, разработчиков браузеров и вселенную. Это справедливее для всех, включая меня.
«Они просто найдут другого специалиста, который не требует дополнительной платы»
Что бы вы ни делали, не позволяйте клиенту думать, что вы требуете больше денег за ту же работу, что сделает кто-то другой. Это не только выглядит плохо, но еще и не совсем верно. Объясните им, что вы просто хотите дать им возможность выбрать, за поддержку каких браузеров платить.
Насколько больше?
Выше я написал, что поддержка старых браузеров требует от 30% до 100% больше времени. Это огромный диапазон, не так ли? На самом деле, он должен быть еще шире. Я помню случай, когда клиент обратился ко мне с проблемой разметки CSS, которую его разработчики были не в состоянии решить. Верстка для современных браузеров заняла у меня полчаса, затем я потратил час на Internet Explorer 8 и потом еще три(!) часа на то, чтобы заставить ее работать в IE 7. Кто знает, сколько времени я бы убил, если бы мне пришлось поддерживать еще и IE 6. И это был не единственный случай, когда мне понадобилось совсем немного времени, чтобы построить прототип, работающий в современных браузерах, а затем еще грубо непропорциональное время, чтобы заставить его работать в устаревших версиях Internet Explorer. Если вы работаете в этой сфере хотя бы больше года, то наверняка знакомы с такой проблемой.
С другой стороны, если вы не пользуетесь современными технологиями и придерживаетесь правил CSS 2.1, то, я думаю, вы сталкивались с некоторыми багами старых IE, которые требуют некоторого дополнительного времени, но не вдвое большего. Или, если вы используете тонны фреймворков и костылей, вам все равно придется потратить некоторое время на отладку их совместимости и проверку потенциальных конфликтов, но все же не вдвое больше. 30% — оптимальная оценка для таких случаев.
Как видите, диапазон огромен и зависит от ряда различных факторов, включая (но не ограничиваясь) следующие:
- Вы
Насколько современны ваши техники разработки? Чем они более передовые, тем больше усилий вам придется приложить к поддержке обратной совместимости или придумать альтернативные методы для старых версий Internet Explorer (но меньше усилий для создания оригинального прототипа) - Проект
Если это сайт-визитка, то главное в этом проекте — корректное отображение в устаревших браузерах. Если же это веб-приложение, то с ним будет все сложнее. - Уровень поддержки
Поддержка браузеров не бывает либо полной, либо никакой. Не впадайте в крайности. Определите, насколько хорошей должна быть обратная совместимость и сколько времени вы можете на это затратить.
Итак, я извиняюсь, но не могу сказать вам точно, сколько времени потребуется на поддержку старых версий Internet Explorer и сколько это будет стоить.
«Но что, если они хотят платить только за Firefox?»
Конечно, существует базовая поддержка браузеров, которую я не буду описывать сейчас, даже если клиент не хочет платить за нее. Мы несем ответственность перед собой и перед вебом за следование . Даже если клиент хочет платить только за поддержку, например, Ferefox, моя обязанность заключается в том, чтобы сайт по-прежнему функционировал в других бруезерах. Даже если он не готов платить за мобильную поддержку, моя ответственность как веб-разработчика, хотя бы проверить отображение сайта в мобильных браузерах. Даже если заказчик не заботится о доступности, моя ответствееность заключается в том, чтобы сайт был минимально оптимизирован для поисковых роботов. Эти вещи не занимают много времени и должны быть учтены, так или иначе, даже в самой минимальной цене.
Итак, что делать со старыми IE?
Так что же мне делать с теми мудрыми клиентами, которые не хотят платить за поддержку устаревших браузеров? Обычно я стараюсь реализовать изящную деградацию и обеспечить достойную обратную совместимость для старых браузеров так, чтобы в них было доступно хотя бы содержание страницы. Но в случае очень непослушных браузеров типа IE 6 или IE 7, даже с деградацией могут возникнуть проблемы. Поэтому я делю стили CSS на три файла:
- base.css
Шрифты и основные цвета. - screen.css
Стили, специфичные для экрана. Здесь находится большинство стилей CSS. - print.css
Стили, предназначенные для печати, например, для скрытия контактных форм.
Затем я просто не подключаю screen.css в IE 7 и ниже. Для них предназначена таблица стилей, схожая с print.css, но, конечно, без сокрытия форм обратной связи. Это не очень красиво и не современно, но, по крайней мере, отображается содержание страницы. То же самое можно сделать с JavaScript. Проверьте поддержку API прежде, чем использовать его, или просто не обслуживайте устаревшие Internet Explorer, где поддержка недостаточна. Если вы оформили свои скрипты JavaScript должным образом, ненавязчиво, то старые браузеры просто не получат эту дополнительную функциональность и не будут выдавать ошибки сценариев. Все это требует минимальных усилий с вашей стороны.
«Это означает, что я всегда буду зарабатывать меньше, используя современные технологии?»
В ходе обсуждения моей точки зрения с другими разработчиками они часто спрашивают меня: «Итак, вы утверждаете, что я не должен брать больше денег за поддержку мобильных платформ и внутреннюю оптимизацию?» Вовсе нет! Я не говорю, что мы должны чувствовать себя виноватыми за использование передовых технологий и наказывать себя за это меньшим доходом. То, что я защищаю — здравый смысл при расчете стоимости дополнительных часов работы. Если с помощью JavaScript вы делаете то же самое, что делают CSS3, то за скрипты, конечно, нужно просить больше денег, ведь это займет больше времени. Но если вы не собираетесь использовать что-то подобное, и media queries были всего лишь бонусом, как глазурь на торте, то вы конечно должны получить за эту работу больше, чем за сайт без этих возможностей.
Заключение
Мы можем любить то, что мы делаем, но мы не любим обслуживать капризы старых браузеров. Мы делаем много работы, чтобы скрыть их некомпетентность, и эта работа должна компенсироваться должным образом. Вы не должны работать бесплатно, особенно если занимаетесь тем, что вам не нравится. Объясните свою ситуацию клиентам, и они поймут, в чем дело, я обещаю. В конце концов, правило «дополнительная работа = дополнительные затраты» справедливо для любой отрасли. Концепцию нетрудно понять, и это делает пользу современных веб-технологий еще более ощутимой для технологически неподкованных клиентов.
Автор — Lea Verou
Совершенно согласен!
Это здравый подход к решению этой проблемы, потому что самая раздражающая часть веб-дизайна — это поддержка браузера, который должен был умереть много лет назад!