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

2014-08-10 13:17:10 +08:00
 nbabook
先说下背景:基于一个机会,实验室几个人合伙准备干点事情做个行业ERP,大家文凭很高,但是说实话这些年都是做研究,偶尔开发一个小程序验证下思路,基本上都没真正做过什么实用化的工程,很多技术,例如工作流引擎什么的,干脆就不知道,并且整个团队只有我个人有过2年的底层程序员经验。然后,在如何开发上发生了分歧。
我的想法是以我们几个人的能力重头开发难度很大,需要考虑很多方面的内容,但是大家都没实际做过,所以很多关键点可能根本想不到,因此应该以开源的系统为基础进行二次开发。
但是,其他人的想法是觉得学习其他开源系统需要花的时间太多,自己重头开始更容易。
究竟哪个想法对?
或者说我该如何说服其他人?
8949 次点击
所在节点    问与答
31 条回复
jjx
2014-08-10 13:29:36 +08:00
长远来说, 以开源做二次开发,比方说openerp, 就是替别人做嫁衣

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

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

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

openerp就是个很好的例子啊

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

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

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

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

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/127047

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX