• 自己开发,还是找软件公司?


    跟一个客户谈商务,客户对我们的报价非常不能接受,而我们觉得对于这样一个毫无复制性的项目,纯粹定制化开发,我们报出价格其实并没有什么利润,只是因为跟这个客户在别的地方有合作关系,才这个报价的,否则这个价格还真不想干。

         
    客户说了好多理由,但其实我们双方都明白,唯一一个拿得出手的理由是,他们曾经自己做了一个类似的东西,他们自己的一个程序员,就一个人,花了两周的时间就做出来了。这个项目,其实复杂程度并不比那个高,但价格为什么这么贵呢?

     

    我不相信他在撒谎,他的这个案例应该是确有其事的。可是,为什么这这样呢?

     

    (以下把软件公司称作乙方,非软件公司但自己雇有程序员的公司称作甲方)

    在下从事软件行业也算年代就远了,在甲方也做过若干年,今天来分析下,公司自己开发软件与找软件公司开发软件的区别。

     软件的健壮性。甲方自己开发软件时,对软件的健壮性的要求并不高,而对软件公司而言,对软件健壮性的要求要高得多。做软件的人都明白,程序这东西,如果不考虑异常情况,真正实现功能的核心代码不会超过20%,大部分代码都解决异常情况,判断这种奇怪情况发生会怎么处理,那种奇怪的情况发生会怎么处理。牵涉到公司声誉,如果有些什么异常情况发生,软件就无法使用了,这个太丢人。而对,甲方的程序员来说,这方面的考虑要少得多,先把核心代码写出来,只要保证数据不会出问题,就可以拿出去让人用了,有什么特殊情况,发生时再解决也无所谓,甚至有些强势的IT部门,都可以不解决,要求你操作时注意,别这样那样什么的。对健壮性的要求不同,开发成本相差很大。

     理解业务。对于甲方程序员而言,有时候并不理解这个理解业务需要投入的成本。作为在甲方工作的人,每天跟自己人打交道,听的说的都是自己公司的业务,公司的业务精神已经在自己血液中流淌。对于有些一毕业就在这家公司上班的兄弟,他简直无法理解,他所熟悉的业务,别人竟然会这么搞不懂。对于软件公司而言,快速了解客户的业务,并分析,并判断怎么信息化,这并不是个容易的事情,需要一个有这方面有较强经验的分析人员,说实话,这种事情,都快不了,需要研究一个自己几乎完全不懂的业务,还要分析,还有把这种业务知识快速传授给研发人员,得花点功夫呢,而且,这种人,都挺值钱的。甲方程序员给自己公司开发程序,可以不做任何业务分析,业务人员说说自己就能写了,写的过程中再问问,基本不会偏差太大,而软件公司的人可就没那么简单了,稍有不慎,就会发生业务偏差,搞出了一个莫名其妙的东东,会浪费大量人力财力。 

    可维护性。软件的可维护性,这是每个软件公司都必须考虑的。软件刚开工,一个好的软件公司就应该考虑到,负责的开发者迟早会离职,他的程序后来怎么维护,做不好软件的维护升级工作,最终,一定会丢失所有客户,对软件的升级维护的考虑是软件公司一个相当重要的工作。而甲方的程序员,或者软件管理者,一般不会考虑的那么久远,这样就可以快速实现一些应用,代码质量,可读性,标准化开发什么的都可以不考虑,反正IT部门只是服务部门,所占成本在公司总成本中相当有限,大不了维护不了再让人重写一遍也无所谓,这种成本对公司影响很小,对有些不良程序员而言,甚至会故意把程序弄得很难维护,最好只有自己可以维护,以此来提升自己的不可替代性。对软件公司而言,如果做不好维护工作,最后大概就是死路一条。在这一点来说,甲方的快速开发,是用高风险换来的低成本。

    规范性。对软件公司来说,为了软件的可维护,在开发过程中会产生许多规范文档,这些文档其实应该算是软件的一部分,没有文档的软件只是代码,称不上软件的。对甲方程序员来说,这些文档一般都可以不必有,写出代码就行了,有些公司,甚至操作手册都没有,写完给用户演示一下就算交差。这样子搞,成本自然大幅度降低。

    另外,开发过程的规范性也是个需要重要考虑的地方,软件公司为了自己的声誉,需要保证自己产品的质量,为了提升质量,就要保证开发过程的规范性,什么阶段出什么成果,怎么设计,怎么开发,怎么测试,怎么进行用户体验等,都有一套规范流程,因为有了这规范流程,才能保证软件质量。对于甲方程序员而言,这方面的压力要小得多。为了维护这一套流程,为了提升质量,这方面的成本不可缺少。从这方面来说,甲方开发是以低质量换来的低成本,可以说这是山寨与正牌的区别。 

    软件完善的过程。对于软件公司而言,为了软件的效果,为了减少维护的工作量,会把大量的工作做在前头,一旦软件上线,一个成功的软件,后期修补的工作量会很少,越用越来越少。而对于甲方开发而言,往往可以完成一些功能后匆匆上线,由于都是自己人,出了小问题大家也都比较好包涵,甲方出的好东西往往都是一边维护一边成长,最终磨出来的。如果把这些后期的维护、修改成本都算进去,其实甲方开发的成本也不低的。

        或许还有种对双方都好的办法,就是在二次开发框架的基础上甲方自己开发,这样健壮性、后期维护和规范都有保证,也不用担心人走了之后,带走所有的东西。

  • 相关阅读:
    自定义响应结果
    JsonUtils (JSON与对象之间的转换)
    IDUtils (ID生成策略)
    ExceptionUtil(异常使用工具类)
    Hbuilder连接夜神模拟器
    夜神模拟器开启开发者选项
    java.lang.OutOfMemoryError: Java heap space的解决方法
    Android开发LogCat一直不停输出的解决方法
    windows无法停用“Android Composite Interface”设备的解决方法
    android:digits属性
  • 原文地址:https://www.cnblogs.com/cenyuxin/p/3508434.html
Copyright © 2020-2023  润新知