V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
nbabook
V2EX  ›  问与答

是二次开发好,还是重头开发好?

  •  
  •   nbabook · 2014-08-10 13:17:10 +08:00 · 8929 次点击
    这是一个创建于 3765 天前的主题,其中的信息可能已经有所发展或是发生改变。
    先说下背景:基于一个机会,实验室几个人合伙准备干点事情做个行业ERP,大家文凭很高,但是说实话这些年都是做研究,偶尔开发一个小程序验证下思路,基本上都没真正做过什么实用化的工程,很多技术,例如工作流引擎什么的,干脆就不知道,并且整个团队只有我个人有过2年的底层程序员经验。然后,在如何开发上发生了分歧。
    我的想法是以我们几个人的能力重头开发难度很大,需要考虑很多方面的内容,但是大家都没实际做过,所以很多关键点可能根本想不到,因此应该以开源的系统为基础进行二次开发。
    但是,其他人的想法是觉得学习其他开源系统需要花的时间太多,自己重头开始更容易。
    究竟哪个想法对?
    或者说我该如何说服其他人?
    第 1 条附言  ·  2014-08-10 13:57:26 +08:00
    我自己反省了一下,应该是我表错了意思。
    之所以想要在开源系统上进行二次开发的原因是因为我们这个团队对在什么地方使用什么技术根本就不了解或完全不知道,而我想用开源系统做技术限制。
    例如,我们准备用java开发,可是一开始却连SSH开发框架都不准备使用,准备楞写JSP页面。
    说实话,我现在也很纠结,我自己之前不是做java的,也很多年没做过技术了,很多java的技术根本不懂,但是我觉得很难在不用任何现成技术的基础上进行开发,而我们目前恰好有这个趋势。
    第 2 条附言  ·  2014-08-10 21:30:42 +08:00
    谢谢大家的建议,都很有见地。
    说实话,做这件事让我深切的认识到科研和实践之间确实存在巨大的差距。
    我们这个团队从配置上其实不差了,都是顶尖大学的几个博士,但是一方面所研究的方向跟目前所做的工作完全不搭边,另一方面也确实没接触过真正的项目。
    从科研的角度来讲,其最终目标是解决一个之前没有人解决的问题,因此,其更多思考是如何快速简洁的实现,至于架构、开发语言、开发模式甚至文档等都是次要的工作,其只是为最后的方案提供一个外壳而已。
    而实践则截然不同,需要考虑的东西太多了,项目进度、架构、语言、需求、用户体验、开发效率、执行效率等都需要丰富的经验才能胜任。
    再次感谢大家。
    另外,谁能推荐一个开源的java的ERP系统啊?
    31 条回复    2014-08-11 13:14:19 +08:00
    jjx
        1
    jjx  
       2014-08-10 13:29:36 +08:00
    长远来说, 以开源做二次开发,比方说openerp, 就是替别人做嫁衣

    如果只是短期, 倒没有什么讲究
    nbabook
        2
    nbabook  
    OP
       2014-08-10 13:33:04 +08:00
    @jjx 为什么是替别人做嫁衣?因为开源协议的问题吗?
    其实我主要是担心这帮人技术水平不够,现在遇到的问题就是一些技术或框架我建议用,但是其他人会以学习时间为理由坚决不用。
    jjx
        3
    jjx  
       2014-08-10 13:39:38 +08:00
    以开源系统做东西,思路是别人的, 你做的东西是依附在别人的基础上. 你所有的投入都依附在别人所建立的基础之上.

    其次,开源系统的二次开发都不是很理想, 我也是10多年的企业软件经验,用过很多系统, 就二次开发,感觉最厉害的当数微软的axapta 的 aot 环境,但实际用的时候还是要其他语言做扩展.

    一个定型的erp系统, 最少要有一年的时间, 如果有这个时间预算,不妨自己做, 如果使用前后端分离的设计, 后端其实一个人也够了. 企业系统最好使用python这类动态语言构建, 变化灵活,如果用 java之类的,可能比较不适合, 不适合企业软件日常变化多的特点
    jedihy
        4
    jedihy  
       2014-08-10 13:42:09 +08:00 via iPhone
    @jjx 冒昧问一下,有用python开发的企业程序?
    jjx
        5
    jjx  
       2014-08-10 13:44:41 +08:00
    @jedihy

    openerp就是个很好的例子啊

    这三年来,我一直在用python写erp 和一些企业应用, 感觉比以前用vb/delphi/pb/c#/x++的感觉好多了
    richfisher
        6
    richfisher  
       2014-08-10 13:46:34 +08:00
    ERP有一块是流程管理,楼主可以看下BPMN规范,评估一下两种方式的实现时间。
    StackGao
        7
    StackGao  
       2014-08-10 13:53:35 +08:00
    时间可控并且足够自信的话,靠谱二次开发.
    jjx
        8
    jjx  
       2014-08-10 14:08:40 +08:00
    二次开发的含义是指有现成的erp系统,通过其开放的结构和api做修改或新功能

    使用一种语言的通用框架,比方说java的ssh, 或是pyhton的sqlalchemy/requests/xlrd之类的包,不叫二次开发

    而且, 这些通用框架你肯定要使用的, 做企业系统更关心业务逻辑的实现而不是技术形态上的高低,这就是企业系统长期被一般人看不起的原因(当然, 随着更多的功能被搬到线上,企业系统的挑战也随之而来,怎样在保证复杂的逻辑下再保证并发,性能和稳定)
    ddzz
        9
    ddzz  
       2014-08-10 14:10:52 +08:00
    @jjx 界面用的web还是桌面软件?
    ddzz
        10
    ddzz  
       2014-08-10 14:12:43 +08:00
    经验越多越讨厌二次开发。新人适合二次开发,可以从二次开发中学到很多思想,从头开发的话会无从下手。如果有多年的开发经验,已经形成了自己的一套方法论,再按别人的思路二次开发会很痛苦
    jjx
        11
    jjx  
       2014-08-10 14:14:50 +08:00
    @ddzz

    是指我在开发的erp吗? 是web的,桌面的前几年放弃掉了, 我其实有很深的桌面情节,做这个转变不容易,不过转变后就后悔为什么不早做这个转变.

    至于openerp, 早期是gtk的,后来是gtk+web, 现在gtk没了,只有web界面了
    nbabook
        12
    nbabook  
    OP
       2014-08-10 14:15:47 +08:00
    @jjx
    由于团队技术人员实力问题和时间问题,我的想法是二次开发,即你所说的第一点:在现成的开源ERP系统上通过对功能或业务的增加和修改来实现我们的目标。
    而你所说的第二点则是我们面临的问题,即想要在重头开发的同时,是否应该使用现成的框架或者现成的开源甚至收费模块来快速实现,例如审核使用已有的工作流引擎,报表使用已有的报表引擎等。
    从目前的情况来看,技术形态我们不是高低的问题,而是太低的问题,最终是否能在规定的时间内实现得了相应的业务逻辑在我看来是一个巨大的难题和挑战。
    nbabook
        13
    nbabook  
    OP
       2014-08-10 14:24:49 +08:00
    @ddzz 是web,现在的趋势是web啊。
    确实如此,如果我们之中有一个人是经验丰富的开发者,或者有一个经验丰富的开发者领导我们,我们当然不会出现这个问题。
    但是,当我们在现有情况下独立开发的时候,我们面临的首要问题便是什么都不会,这个功能该怎么做,那个功能该用什么来实现。
    Havee
        14
    Havee  
       2014-08-10 14:25:50 +08:00
    看你资金预算,时间预算....
    200人内的小公司,妥妥的二次开发...
    nbabook
        15
    nbabook  
    OP
       2014-08-10 14:30:42 +08:00
    @Havee 能推荐一个可供二次开发的java版本的ERP系统吗?谢谢了
    xuwenmang
        16
    xuwenmang  
       2014-08-10 14:47:18 +08:00
    实战经验多,自己开发;
    实战经验少,二次开发;
    simapple
        17
    simapple  
       2014-08-10 16:35:03 +08:00
    我觉得,如果从技术角度找不到二次开发的巨大劣势,先从二次开发开始,等到业务量达到一定级别,原有架构无法满足需求的时候,你就有了明确的改进方向,可以选择重构,让系统和业务结合的更好
    jedihy
        18
    jedihy  
       2014-08-10 17:01:42 +08:00
    @jjx 看来时代已经变了
    seeker
        19
    seeker  
       2014-08-10 18:00:32 +08:00
    我觉得你们需要架构师。。
    nbabook
        20
    nbabook  
    OP
       2014-08-10 18:02:45 +08:00
    @seeker
    是的,可是不让招。。。
    zava
        21
    zava  
       2014-08-10 20:17:40 +08:00
    楼主的想法是对的, 如果都不知道技术上会受到什么挑战, 并且没有较深的技术功底, 建议你们还是找个靠谱的开源软件, 然后二次开发. 否则技术债肯定会很多.
    你们的时间应该是快速出产品, 然后验证市场对产品的放映, 而不是从技术上从零搭建产品.

    看得出来楼主的团队都是技术为主, 并且技术功底有限? 这个组合有点悬啊.
    ththlisa
        22
    ththlisa  
       2014-08-10 21:19:33 +08:00
    看你们的组合..二次开发吧楼主...摸一遍开源的东西总比自己从头开始找路来得靠谱点...个人一般的思路就是先向开源学习,之后再做自己东西起码不会一头黑
    woyiwei
        23
    woyiwei  
       2014-08-10 22:10:48 +08:00
    看到这个标题,忍不住点进来了。刚好刚才在看 《大教堂与集市》 ,lz可以看下,书不厚,开头就提到了这个问题
    akira
        24
    akira  
       2014-08-10 22:39:21 +08:00
    建议二次开发,至少你知道要做些什么东西
    vicalloy
        25
    vicalloy  
       2014-08-10 22:43:28 +08:00 via Android
    ERP是个巨坑。业务方面的困难远大于技术方面的困难。
    企业应用最大的问题是需求多样。用现成的系统你会发现去理解这套开源系统就已经非常难了,即使已经比较熟悉了也会发现限制非常多。
    sujin190
        26
    sujin190  
       2014-08-10 22:44:42 +08:00
    我觉得楼主显然是想的太多,其实很多事看起来很难,有些则看起来简单,其实只是表面,建议都可以试下,看起来楼主要走的路还很远啊
    eriale
        27
    eriale  
       2014-08-10 23:09:49 +08:00
    @vicalloy 非常同意。开发erp的时候,有一个月开发在跟财务对各种数据,就不说其他还有各种优化用户体验、增加大功能的需求根本来不及做。
    lz可能大大低估了ERP的项目难度,特别是你们团队一些成员还没有具体的工程经验,我的建议是你们找开源的来做,要尽早出一个可用版本,然后边用边改,不然企业业务的需求会把整个开发团队拖垮,系统永远都不可能上线。
    如果开发到后面,并且能够赚钱了,这时候你们对业务也有充分理解,重写系统也有钱有人,再来重写系统要快的多得多。
    nbabook
        28
    nbabook  
    OP
       2014-08-11 00:46:20 +08:00
    @eriale @vicalloy
    说老实话,08年的时候我还真在公司正经做过2年ERP,当时是做的财务营销,用的C#,后来还参加过一个国家级的ERP系统的需求(干了半年,后来因为需求过去复杂黄了),因此,我个人是非常了解“对于erp而言,业务远远难过与技术”的问题。我依然记得很清楚,当时每个月10号用户对账的时候去对方蹲点,直到下个月1号才能回来,期间各种核算、各种修改,大半年都没个结果,每次都出问题。
    但是由于太多年没有做过开发了,我在清楚认识到业务难度的同时,对于当前情况所可能带来的开发难题也没有眉目,究竟如何做,怎么做才能又好又快,是我面临的最大问题。即便是我清楚的知道我不可能按需求方指示按时交出答卷,我也只能硬着头皮上,因为一些情况,我已经不可能退了。
    unionx
        29
    unionx  
       2014-08-11 08:14:14 +08:00
    LZ试试 OpenERP 呗,我最近也在用,感觉还是可以的
    nbabook
        30
    nbabook  
    OP
       2014-08-11 08:44:13 +08:00
    @unionx
    谢谢,python大家用的不熟悉,所以还要学习。。。
    jamiesun
        31
    jamiesun  
       2014-08-11 13:14:19 +08:00
    开发 erp,更重要的是理解业务模型,企业流程规范等,很多不同领域的知识。

    纯粹技术好不算优势,技术不好也不算很大劣势。erp 不是高浓度技术活。

    openerp 挺好的。

    如果你只是问“推荐一个开源的java的ERP系统”这样的问题的话没有太大的帮助。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2874 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:25 · PVG 14:25 · LAX 22:25 · JFK 01:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.