好久没有写文章了,最近有空回来瞎扯些怨念。正文开始:
我们的环境:皆因微软而起,又因微软而终。
第一章:.Net篇。
我们以一个寓言开头: 庄周家境贫寒,于是向监河侯借粮。监河侯说:“行,我即将收取封邑之地的税金,打算借给你三百金,好吗?”庄周听了脸色骤变忿忿地说:“我昨天来的时候,有谁在半道上呼唤我。我回头看看路上车轮辗过的小坑洼处,有条鲫鱼在那里挣扎。我问它:‘鲫鱼,你干什么呢?’鲫鱼回答:‘我是东海水族中的一员。你也许能用斗升之水使我活下来吧。’我对它说:‘行啊,我将到南方去游说吴王越王,引发西江之水来迎候你,可以吗?’鲫鱼变了脸色生气地说:‘我失去我经常生活的环境,没有安身之处。眼下我能得到斗升那样多的水就活下来了,而你竟说出这样的话,还不如早点到干鱼店里找我!’”
.Net发布有7年了,但是微软有一点做得非常非常不好:在不断发布新版本Framework的时候,却没有去实现.NET的大规模普及。套用微软官方的术语:您可以选择我们的VISTA系统,已经内置了.netframework3.0。WINDOWS7则内置了3.51。如果你去相信这些与现实世界不着边的鬼话,那么你就是上面故事中的那条鱼。现实世界是VISTA的装机率很不乐观,而装机量最大的XP则根本就没有内置任何版本的.NET。2010年之前(也就是监河侯收税之前),你仍然会面临很多的XP客户。
所以,至今仍然有一个最根本的问题摆在我们这些.NET程序员面前:客户装了.NetFramewok没有?如果没有装,你的程序写得再好再漂亮都是徒劳。你怎么去让他装?怎么和他解释这个必要性?如果他不愿意怎么办?能不能实现自动化安装?从前我在一些朋友的博客里也时常留言有这个观点,无外乎归纳出这么一种解决办法:
在项目发布中把.NET集成封装进去,让它在客户那里实现自动安装。
这种做法固然是可取并且是必须的,但是存在两个缺陷:
面对客户,你不能以程序员的观念去和他们谈问题,他之所以找你做程序,是因为你是程序员,而他不是
所以,“可靠性”、“易于开发”、“易于移植”、“稳定性好”等等这些字眼,对客户来说,全是扯蛋,他们最关心的就是一点:“方便使用”。
我的解决方案,谈不上能够本质上得到解决,只能说是3个建议,本着上面提到的几点:
如果你的程序是针对性的面向某些客户群体,那么可以使用3.0和3.5,但是一定要准备好各种各样的台词,以花言巧语、诱骗、欺诈、甚至是威胁来宣扬.NET的必要性(对于公司企业客户,他们是可以接受的),因为你要时刻警惕来自JAVA、PHP、WIN32等竞争对手公司的商业性贬损。要怪就怪微软把这种本来是他们该做的事情丢在我们头上。
“ASP好还是JSP好,JSP好还是ASP.NET好,ASP.NET好还是PHP好,.NET好还是JAVA好……”,这样的月经话题时常出现在各大程序员社区,并且已经被视位弱智议题。但是,面对现实情况,你必须有能力向客户解释清楚:为什么要用.net开发,它的好处在哪里,为什么别人用JAVA开发而你不用,为什么别人用VB6,VC6而你不用,为什么别人用PHP而你不用……,以客户能够理解的方式,以有利于客户的观点来阐述兼容性、稳定性、版本支持、易于二次开发等问题,而不要去谈真泛型和假泛型、单一继承和多重继承、字符串操作效率等等客户不关心的东西。