转一篇老文 - 然而顾客需要我们支持 IE6!

从我的一块旧硬盘里扒拉出来的。译者很有可能是我(因为那段时间我热衷于翻译),但也不十分确定。

By Lea Verou
November 3rd, 2011
Bugs, Clients, Opinion Column
207 Comments

译者按:这篇文章实在太赞了,我忍不住要把它译出来。

当我和其它开发者谈论CSS3的时候,经常谈到令人头痛的顾客。他们告诉我,他们本人并不想让网站在所有的浏览器都表现一致,他们热望尝试所有的新技术,然而顾客坚持要求网站要表现一致,所以这些开发者只得继续使用五年前,甚至十年前的WEB开发技术。他们的顾客不要“优雅地”降级。

问题真的是这样吗?是我们的顾客不了解这些问题吗?问题在于我们的顾客不懂Web或者被教育地不够么?我不这么认为。这坑是我们自个儿挖的,出现这样的问题说起来也怪我们自己。我们不但奋不顾身地跳进坑里,而且乐于用我们的专业技能去解决这些烂问题,而不是去创新。这完全怪我们自己,怪不着任何别人。

等等,你说什么?

如果我们让一个站点像素级完美地支持IE6-IE8,我们差不多要多干一倍的活。不要说有多少框架,多少技巧多少脚本能够减少我们的痛苦,因为这些浏览器,往少里说,我们也得多做30%的工作。我们中有多少人因为这些工作而多要价30-100%?据我所知,没有几个人这么做。绝大多数顾客没有因为我们这些额外地付出多花一分钱,所以他们当然会说:“我们需要支持IE6。”要是我是顾客,没准我也会这么要求,特别是在我并不了解背后这些技术原理时。如果我们不爱惜自己多要钱,那顾客才不会关心我们为了兼容而多花的时间。

当然更快的页面加载时间,更友好的搜索引擎支持是强有力的论据,让我们看看:新的CSS功能和新的JavaScript API能极大的节省我们的开发时间,还有代码更容易维护,运行速度也更快。这是采用新技术带来的最大好处。毫无疑问,如果新技术不能为顾客省钱,顾客才不关心你有没有使用新技术。

总是金钱赢得辩论。

最近我并没有做多少项目,然而在我的职业生涯里,每一次接手一个项目,我总是让我的顾客自己选择浏览器支持。需要像素级完美地支持IE7?嗯,这要多花钱。还想要IE6支持?没问题题,只是费用要加倍。我会向顾客解释这是因为我不得不为这种浏览器多做一倍的工作。从未有一个顾客选择支付更多的钱来更支持老掉牙的浏览器。当IE6支持不再免费时,你会惊讶的发现,原来有这么多人并不真正关心IE6的支持。退一万步,当顾客确实希望支持IE6时,至少我多拿了钱,我有动力把IE6支持做好,我不必憎恨我的工作,憎恨浏览器厂商以及宇宙万物。这对每个人都公平,包括我在内。

“他们会去找另一个要钱少的专家。”

无论你要价多少,都不要让顾客觉得和别人相比,你做同样多的工作却多要钱。这会给人坏印象,而且这也不是事实。向他们解释你只是请他们自己选择浏览器支持和相应的费用,而不是替他们决定。整个过程都不用给他们建议,让他明白决定权在他。

多要多少钱合适?

你可能注意到我前面说过,支持老版的IE浏览器需要多花30-100%的时间。这是一个很大的范围,对不对?其实,它还应该更大。我记得有个顾客找我,他遇到一个他的团队解决不了的CSS难题。要让现代浏览器正常工作只需要花费我半小时时间,要让IE8工作需要一小时,然而要让IE7正常却需要我花费3个(甚至更多)小时。连我自己都不知道我要花多少时间才能让IE正常!这情况并不罕见。我经常只花很少的时间就能在现代浏览器里完成一个原型,然后花费不成比例的巨量时间让老掉牙的IE正常工作。如果你在这个行业里干过一年以上,我打赌这事你一定遇到过。

从另一个角度看,如果你不使用现代技术,坚持使用CSS2.1,那么你就只需要面对IE老版本的bug,这会多花一些时间,但不至于多花一倍。或者你使用了各种框架和插件,你仍然需要多花一些时间来让他们在一起协同工作,解决潜在的冲突,也不至于多花一倍时间。这种情况,多要30%就很合适。

显然,该多要多少钱与很多因素有关,包括但不限于以下因子:

你自己 你的开发技术有多先进?你采用的技术越先进,做原型就越省力,相应得你就得付出更多的努力才能使老IE浏览器保持能用。

项目本身 如果只是一个产品站,让老IE能用,只需要额外调调样式;如果是一个应用程序,那就会遭遇各种各样的问题(也就得花费更多的时间)。

支持程度 支持一种浏览器并非要么不支持,要么完全支持。旧浏览器“能用”的程度与你实际额外花费的时间成正比。

因此我不能告诉你为了支持老掉牙的IE浏览器你该多要多少钱。你得自己决定,每个项目都不一样,要考虑各种有关的因素。

“要是顾客说只支持Firefox就好,那又怎样?”

不用说,对浏览器的支持程度我有一个底线,即使顾客不打算为这个底线额外付钱。我们得对自己负责,也得对网站负责,因此我们必须遵循行业惯例。即使有一个顾客只愿意为支持Firefox付钱,责任感也会驱使我让网站在其它的浏览器下能用。即使他们不打算为移动浏览器支持付钱,作为一名Web开发者的责任感也会驱使我添加一些媒体查询代码,来保证在手机上看得过去。即使他们不关心易用性,我也会努力让网站尽量好用。不管怎么说,做这些工作不会花费太多的时间,就是最低的报价,也得包含这些工作。

我们该怎么对付老IE?

如果顾客不愿意为老IE付钱,我们该怎么办?对我来说,从始至终,我都在考虑如何对老浏览器优雅降级,至少让使用这些浏览器的用户可以访问内容。然而对那些实在“淘气”的浏览器,比如说IE6和IE7,有时候找不出降级的方法让它们能用。那我们,我通常会把我的样式表文件分成三个:

base.css 字体,基准颜色等等
screen.css 与具体屏幕相关的一切,绝大部分样式放在这里
print.css 与打印有关的样式,比如隐藏“联系我们表单”之类的样式

然后,对IE7及更低版本的IE,我根本不提供screen.css文件。这些用户会看到类似打印版本的界面,除了没有隐藏任何元素之外。它不可能很好看,也不可能很时尚,然而至少他们能看到内容。我用同样的策略处理JavaScript。在使用一个API时检查一下,或者对老IE不启用这些脚本文件。只要你的脚本写得恰当(不唐突),老的浏览器虽然不会拥有那些额外的功能,至少不会因为出现JavaScript错误而根本不能工作。对你来说,这样处理只需要做最小的努力。

“这是不是说,对那些只要求支持现代浏览器的项目我可以少要钱?”

当我与其它开发者讨论时,有人问我:“那么,你是说虽然我使用响应式设计做了大量媒体查询工作,但不应该多要钱?”当然不是!我的观点不是这样的。我们不必因为采用了先进技术而感到内疚,甚至为此而降低收入!我的观点很明确,那就是多劳多得。如果你写了一些JavaScript脚本来代替使用媒体查询做得事,你当然可以因此这些脚本而多要钱,因为这样做花了你更多的时间。即使你不打算用脚本的话,而且使用了锦上添花的媒体查询,与做一个非响应式版本的站点相比,你当然可以要求更多的钱。

结论

虽然我们热爱我们的职业,但是我们(当然)不喜欢对老旧浏览器特别照顾。我们做了大量额外的工作来掩盖这些浏览器的无能,我们应该为此得到补偿。没有必要免费支持它们,特别是这种我们根本不愿意做的事。诚实地向你的顾客说明事实,他们肯定会理解你的。毕竟,额外的工作 = 更多的支出是天经地义。这个概念不难理解,这能让现代WEB技术为那些懂技术的顾客带来实实在在的好处。

你怎么想?

该如何为浏览器支持工作定价?你是打算为老旧浏览器额外要更多的钱?还是打算为这些浏览器提供一个专门的“经典”版本?欢迎你跟贴评论,亮出你的观点!