分享到:

网店的程序开发——外包是妖么?

[来源:] 2010-02-17 18:41:00 编辑:狂风梳头 点击:

最近看了几篇论坛上关于网店程序功能开发的贴子——很多血泪,尤其是对开发“外包”,无一例外不大口唾骂的,更多人推荐在现有成熟产品上进行二次开发,比如ECSHOP就是开放源码的网店程序,在其上进行二次开发就是现在非常流行
最近看了几篇论坛上关于网店程序功能开发的贴子——很多血泪,尤其是对开发“外包”,无一例外不大口唾骂的,更多人推荐在现有成熟产品上进行二次开发,比如ECSHOP就是开放源码的网店程序,在其上进行二次开发就是现在非常流行的方式。再有的建议就是“在有实力的情况下进行完全的自行开发,找几个程序员,一个美工……”。好似外包就是妖魔鬼怪一般!
 
 功能开发外包真的是妖?——怎么可能如此一概而论?我自己的看法,在运用得当的情况下(运用得当本身也不是很难),外包可能是最有效,最低成本,最低风险的做法。就说在ECSHOP上二次开发,也一样要面临自行(二次)开发,外包二次开发的选择——找个认识的个人,无非也是外包的一种形式。企业级应用的开发,有三种形式——自行组织开发、委托开发和直接使用现成产品。三者的关系是,从前到后——管理成本递减;项目管理专业能力上的要求递减;产品的灵活性、扩展性、可持续性、可维护水平、企业适应性(比如特殊需求)递减;和企业同步持续演进能力递减;沟通成本递增。
 
 看了很多朋友的贴子之后,我负责任地告诉大家,你们对软件开发的误解是很深的,心态上的问题也是很大的。看有个兄弟说,开发之后跑到程序员那边,跟他们讲业务是怎么样怎么样的,发现他们原来对商业一点都不了解,发现他们才刚刚听懂了。其实我跟你讲,他们其实是还是似懂非懂的,不太可能你第一次讲,泛泛的讲,他们就全懂了。但是,他们不懂,那是正常的,他们象你一样懂,那才是新闻。就好比,他们给你看他们写的代码,一大堆乱码,然后他们奔走相告,说你原来不懂程序,你什么感觉?你会感觉本该如此——他们也一样。再说,说这些程序员,不想精益求精,不想做好程序,因为他们工作根本忙不过来,这个是有可能的,但也只是个别情况。真正的技术人员,尤其是做程序搞开发的,100个里,有99个半是完美主义者。但即便他有时间,他专心给你一家做这个东西,他那个“完美”和你的层面也是不一样的。他的完美是算法上的,设计模式上的,面向对象思想上的——软件科学上有太多太多你们不懂的术语,比如算法复杂度、时间复杂度,数据结构,N层:展示层、业务层(控制层)、数据层——BLABLABLA……说这么多并不是想让你明白这些怪名词是虾米东西,只是想你知道,他们有他们的层面。当你想对这个层面去说:我才不要管你这么多,我只想要你给我做好功能的时候,其实他们的内心也在说:我才不管你那么多,我要做好我的软件就要BLABLABLA……。
 
 就好象对农民来说不要指望一个种子随随便便扔在地上,然后过一年,再回到这个地方,就能收获果实。如果想省点时间,你就不能等他把东西弄出来了,然后再跑过去告诉他,其实我们是这么这么想的,我想要那样的东西。而是要一开始就说,而且要说清,越清楚越好——节约的一定是你自己的时间。软件开发外包本身是个非常非常有用的形式!以至于印度的IT发展水平极高,就是靠帮美国人做外包。而中国的外包公司也非常多,有很多做得也是非常棒的——如果你了解,你就会知道,他们没有不做好,不做棒的可能性。谁在外包他们的软件项目呢?——微软、IBM、还有无数其它的美国公司和日本公司。如果外包是妖魔,这些最专业的公司为什么还要这么做呢?
 
 日本很多外包项目,都是直接给你写好伪码的,也就是说,这个功能怎么去写,都已经非常清楚的告诉好你了,你一个个翻译成机器可以识别的算法功能就好了。然后呢,还有测试用例也都写好给你了,也就是说,程序员翻译好了之后,测试人员马上用一些客户给定的方法和数据去测一测,功能运行出来以后是不是要求的那个结果,如果不是,那么你一定翻译得有问题。如果测试完了,和给定的结果100%一至,那你想让你的软件出错,都很不容易。如果你没有那么专业,不能给他准备好伪码和测试用例,是不是就不能外包?一样可以外包,一样有又简单,又有效,又能保持控制,成本又合理的方法——只要你肯去抱着一个合理的态度,知道一个东西如果你不去事前理事,它就会出事,你就只能事后理事(——难道这不是管理的普遍做法么?)。
 
 如果你不肯用正确的心态和方法去面对这个事情,那外包就一定是个恶梦,自行开发只能是更大的恶梦,之所以很多人以为自行开发很美好,正是因为他们还完全不了解问题所在,他们还在把自己规划不力,管理控制无效归罪于乙方的失职,所以就能看出他们将来如果真有机会自行开发,那就一定会跌得更惨。到那时,他们突然会发现,程序中那么垃圾的方式,那么白痴的做法,竟然是在自己管理之下出现的,他们才会知道,原来那些垃圾和白痴,其实是在时间不充足,设计变更管理不善自然而然的结果。不是说你运气不好,任是谁都是这样子。
 
 2001年的时候,我那时还是个程序员(美其名日:软件工程师)。在一个十几个亿资金,全国性的项目中负责网络通信、分布数据处理和安全加密部分。甲方是大名鼎鼎的中石化,我所在的公司角色是总集成商。具体细节我不说,只有一句话——烂得不行。这个项目我做了两年,到后来,我离开这家公司。有个哥们,感觉我的技术不错,感觉我走掉对公司是个损失。他就跑去找CEO,跟CEO讲,我要走了。CEO很奇怪,所有的开发人员,他都灰常的熟的,但他完全不知道有我这个人的存在。我这哥们跟他讲,为什么所有程序员都熟啊?因为系统每天都出好多问题,是谁谁谁的问题,CEO就把他叫来,连说带骂带哄带求带劝……,但是我写的东西从来不出问题,所以他没有见过我——能感受到这是什么状况么?这个项目的合作伙伴——IBM、微软、SYBASE、BEA、HP——完全不影响它的失败。
 
 我还看到有些人对“更牛”的外包公司还抱有希望,劝大家说,如果一定要外包,就去找真正牛X的外包公司。如果你的管理不到位,更牛的外包公司无非就是去骗你更多钱而已(或者,真正够牛的外包公司是不会给你做项目的,因为一早就清楚没办法给你做好,丢不起那个品牌)。要做好外包,哪种外包都算上,就是两个方面。第一个方面,就是态度。你要知道,做软件是一次性大成本投入的事情,是需要花精力和时间的。不管如何,你都要去想去控制,时间进度上,质量上。比如有人说,做出来之后才发现原来根本不是他想要的东西,还说完全失去了控制,其实那是因为你自己在一开始就放弃了控制,一开始就认为控制是不需要的,否则作为甲方,你怎么可能失去控制呢?怎么可能在完全做好之后才知道事情已经偏离了轨道呢?即便最最简单的方法也可以避免事情到如此地步。第一个,我们做一个事情之前把要做好的东西什么样子说清楚,画出来,做上标注。如果我自己设计不了,就让专业的人给我设计好,我来看他有没有问题。第二个,即便是十年才能完全的项目,也不是到了第十年一下全部出来的。他肯定是一步步完成的,稍做调整,就可以设置上一些时间点,在这个时间点应该可以看到什么。比如说会员的注册登录第一周出来,商品的添加编辑第二周出来,购买流程第三周出来,订单处理第四周出来……都计划在时间表里,即便完全是一个外行,也可以在这些时间点上去检查完成的如何,如果没有按时交付检查,或者检查中发现不能使用,就可以第一时间意识到出了问题,以及可能造成的延误。如果想做再多,可以事先写好,每个检查点上,至少会做的检查,交给开发人员。再多,你可以成立或委托第三方的测试人员,或者质量控制人员。——当然永远还有更复杂和花哨的办法,但是即便只做到这样,事情就一定会保持在知情和控制之中(同时你又不必陷于技术层面的细节之中)。
 
 对于做B2C电商的朋友,第一要考虑的是要不要全盘开发一个新的电商网站。就我自己的看法,从新设计一个构架,从头开发一个电商网站系统在绝大多数情况下,本身就没有这个需要。因为很多现存的产品本身已经完成了全部的基础功能。重新开发,基本上就是一个时间精力和资金上的重复投入。如果现有系统的构架上都不能满足你的需要,那才使这种需求成立。但同时也说明了自己设计的困难程度、成本和风险都是非常之大的。其中最大的风险是,想做这些事的人本身缺乏系统研发管理上的经验。我来估计,重新设计和开发一个全新构架的网店系统,开发周期应该在半年到一年之间。我看到有人说三个月就能做一个,以我的专业水平,我完全不相信!除非是那种拿现有程序修修改改出来的,但如果是那样,还需要从新开发么?先不说,等个一年半载的,黄瓜菜都凉了。单说以大家目前对电商的了解,即便让你从新设计一个系统,提出要怎么做怎么做,其实未必能提出一个成熟的东西来。倒不如用现有产品,直到成为了行家里手,对自己想要的东西心明肚明到一定的程度了,再考虑系统应该如何改进,明显更为务实。我还看到个朋友,在论坛上问,我要加几个小功能,不知道三万块钱合理不,这真是可笑的问题。第一,这个“小”功能在你眼里可能很小,但在技术人员那边,是不是一个可性的方案都不一定,就更别说价钱合理不合理了……。
 
 两年前,我曾经有个创业的方案。就是去帮电子商务方面想做软件系统的人专门设计解决方案。我并不做实际的开发。只是帮忙找到对企业最为合理有效的方案,对方案给出专业的描述,让开发者和电商两者都能理解而不产生歧义,制定项目控制和质量管理方案。就我自己看来,其实大家本质上缺失的其实是这个部分。因为电商本身的问题是还不能明确的描述和界定要开发的功能,这就给寻价比价和招标带来了很大的困难。另一方面,也正因定界定不清和经验不足,往往受到开发者的影响,没有使用对企业本身最为有利的方案。但是,左思右想还是放弃了,虽然也许我能在正确的角色上提供最有价值的信息,但对于如此没有经验的人来说,他怎么可能意识到我所能提供的价值呢?对于不了解的人来说,他会感觉我提供的东西完全是虚的,并不是实实在在的系统和功能……事隔两年,不知道现在情况如何了,不过我想,电商对系统功能的需求是不可或缺的,今年打算开始做些事情了……(有同道的朋友,欢迎加我QQ287309061交流)
分享到: