为什么我不喜欢开源,开源到底对公司,对个人有好处吗

我不是故意扯到这个话题,之前有网友评论我的开发项目的工具系列,说我故意掉大家的味口。也有很诚恳的朋友,希望得到部分工具的源码,以借鉴于项目开发中。

下面是我的想法,为什么我不喜欢开源
1  有些工具和想法是在做公司的产品的时候做出来的,自然都打上了公司的AssemblyInfo.cs,还有Logo和banner。如果把这些放到网上去下载,有一天同事看到了,或是老板看到了,它会怎么想?
同事会想,这是大家的劳动成果,James你倒好,喜欢做好人,以个人的名义写文章,大肆宣传,然后给别人下载,这是一种严重不尊重别人劳动成果的行为;老板会想,这家伙居然敢把公司的代码传到网上去,将来公司的系统还能指望他吗,至于他私下里,将公司的代码copy了多少次,我很难计算,也不想追究,但是,James你也做得太过头,这个员工真是没有商业道德和职业操守。
我写与工作有关的内容时,都很小心,尽量不要把公司牵扯进来,截图的时候都很小心,生怕自己违反了职业操守。虽不至于被告上法庭,但这样的行为对公司,对个人一点好处也没有。

2  有些工具不是凭空想出来的,多多少少与公司的系统和开发有关。我不会故意去做一些DEMO,比如权限管理,比如大型系统架构,一方面自己没有那个能力,另一方面也没有那么多时间。但是,遇到开发中重复出现的问题,我会努力解决。如果具有通用性,比如代码生成,权限管理,组织架构,我会想办法在工作之余,额外做些工具和小应用程序,来支持我快速解决这类问题,然后我会想办法把它用到公司的系统中,用的时候发现问题,于是又回去改我的工具程序,反反复复,最后,项目完成了。我也获取额外的收获:工具程序。在下一个项目中,我就可以直接拿来就用。因为公司的项目,才产生了这个工具;也因为这个工具,公司的项目也完成的不错。如果你看不到工具的产生来源,一般对于你的开发,没有什么意义。这样的东东一放到网上,就会收到一片骂声,因为界面难看,功能也不全,代码很乱。
所以,对于这类应用,还不如不放到网上,连EXE都不要放。

3  以前见识过的两个很厉害的程序员,一个员工代码不怎么样,一串串的流水代码,但是做事很快也很有效率,能及时把公司的任务按质按量的完成;另外一个很喜欢用小函数,读起代码来嵌套特别多,如果对业务思路不清淅,很快就被跳来跳去跳晕了。这两个同事干活都是一流的,但是他们的代码不适合给公众学习,不适合去从他们的代码里面,研究代码的技巧。不是每个人的代码都适合摆在光天化日之下,裸露出来,一丝不挂的给大家评论。微软的代码规范吗,肯定规范,他们能做到sample的命名,结构组织都很有规律,看过一个例子之后,其余的都能知道代码的大概结构,这样的代码厉害吧。但是我也有见过很多人骂微软的代码,太乱了,不好看,看不懂。
写给公众学习的代码要有耐心,也要有点做学术的天赋,会把问题用最适当的方法表达出来。时不时还来点图表和数据对比,这样最容易明白和理解。问题是我们大部分是忙于项目的程序员,不是大学教授,也不是活雷锋,更不能整天靠写博客来生存。我既然没有那么好的表达能力,没有那么规范的代码书写能力,就尽量不要误导人。网上流传的DbHelpSQL有多少人在用,可是里面也有bug,你发现了吗?
我不是批判DbHelpSQL的作者,我的意思是说,我没有那个能力给大众演示代码的技巧。我只能管好自己公司的代码不出乱子,出了问题不睡觉也要搞定。

4  有些工具的产生,可能为了解决临时的问题,没有考虑长久的更完善的方案。举例如下,我弄的SQL 存储过程分页工具,如图
为什么我不喜欢开源,开源到底对公司,对个人有好处吗_第1张图片

为什么上面的Title放上Auto Procedure;中间部分的2个ListBox是用来作什么的;Only Data的是什么意思;还有右边的,为什么不加上SQL语法关键字高亮?
我放出来给你,还要给你解释一大堆,你才会用,你才有心思去理解这个东东。等我给你解释了大半天,你还是不见得懂,因为产生这个工具的情景你不熟悉,于是要求我去做个详细的帮忙文档,这样可省去很多解释的时间,于是我做了个帮忙文件,chm格式,一打开就可以看的;但是没过几天,各种疑问还是接二连三,最后大家都说,在QQ上给大家做个解释吧……
所以,为了减少我的痛苦,我决定不放出EXE,连源代码都不会放出来。
像这样折腾,我还能工作吗,还要不要专心下来面对企业的问题,用心工作。恐怕连思考的时间都没有,以后就很少有生产力,去生产这类方法和工具。
实际而言,上图的那个界面,我也是临时想出来的,SQL Server 2005的checkbox,是为了SQL Server 2005准备的。因为SQL 2005有更简单方便的分页方法,不需要创建临时表,在我的程序中并没有实现这个功能,将来也许会做。
本身工具代码不完善,加上自己写代码的技术很烂,而且还有功能没有实现,只做了个吸引人的界面,为了减少被网友炮轰的可能性,多为网友的身心健康着想,我决定不开源,连EXE也都不放上来。

5  在工作的情况下,开源对于工作中的员工,危害还是很大的。老板也知道开源的,他也知道网上有很多开源的程序,于是,你的工作周期被一减再减,你做一个项目的deadline也越来越少。在ASP不流行的时候,做个论坛是很花费时间的,后来动网论坛开源了,于是论坛的数量剧增。老板说要给公司的在线商城配备一个论坛,可以在线留言的,你花了一个月才写了个大概,老板火大了,这个还用写吗,直接去网上找,四天后要搞定,论坛要上线运行。于是去网上直接下一个论坛,下回来按照说明一点点配置,但是问题终归是有的。有的程序下载下来需要稍微调整才能运作;有的老板喜欢讲个性,叫你把下载的论坛按照他的要求改一下,有的老板还要你再在上面加几项目功能,比如显示用户所有区域的访问量。
在boss的眼里,先到网上去找,然后再给你很短的时间修修改改,你肯定狠死那个开源的家伙。
诸于此类,还有权限管理。园子里最近又多了几个DEMO版的权限系统,如果有一天你的boss要你直接在这个基础上修修改改,然后应用于开发当中,你是高兴还是痛苦呢? 特别是那个用ExtJs做的权限管理系统,ExtJs不会啊,效果是很酷,但是拿着他的代码,你能改吗?

6  对于大多数东东而言,轻易得不到的,要比很容易就得到的好。
先举例,你轻易就能追求上的女朋友,通常都不会成为你的老婆,因为得来的太容易了,你不会去珍惜她,反而是邻居家还未出嫁的小芳,时常能引起你对美好生活和未来的无限梦想。
软件这东西也一样,轻易能下载到的,就无所谓。以我自己的例子而言。三年前我就下载到了个报价软件,可是一直没心情去看她,因为得到的太轻松了。最近研究模具报价时,在以前的数据光盘中发现这个东东,如获至宝。到网上一看她的排名,还是世界一流的软件,名声很响。真后悔当初没有好好研究这个东东,也不至于今天做个报价系统,这么狼狈。
以我对周围的观察,我把自己几年研究的工具,介绍给身边的同事用。他倒是好,在硬盘里找不到放的地方,居然新建立一个Temp的文件,然后告诉我说,暂时先放这里,然后再问我怎么用。还有几个工具,也是被直接放到人家的TDownload文件夹中,就和那些电影文件的命运一样,下载下来,不好看,马上就会被删除。做软件做了几年,我积累了些公共的文件。比如Document用于放可以直接拿来就用的编程文档; Assemblye用来放编程中常见的公共类库(比如MySql.Data.dll,MagicLibrary.dll)。因为有时候拷贝人家的源码,发现找不到被引用的类库,不能编译,为找个被引用的类库都要很久,真是不值。一些很好用的小工具就放到Small Tools文件夹中,好找。
下次我看见谁把我介绍的东东放到Temp文件夹,我再也不会给他介绍什么工具。让他自己去找,花点时间和心情,在网络上很狼狈的找了很久,还是没有的时候,你就会发现,要是有个人能直接拷贝给我多好啊。呵呵,网络不是万能的,很多要找的东东,网络上还是找不到的,至少我有过这样的体会。
所以,你要是放出了源码,很快大家对这个东东失去了思考力,很快就没有心情去讨论这个东东,认为源码都有了,很容易呀。于是,你开源出来的东东很快会被放到一边,大家还是在那里讨论还没有开源的东东。李天平的代码生成器开源了,和不开源有区别吗。我认为没有,经过网友多年的评论,代码生成器已经淡出了大众的视线,开源的代码生成器一大把,大众对她已经失去了兴趣,也因为这东东得来的太容易了,通常被大家直接放到Temp临时文件夹,一不小心就被回收站回收。

说了这么多,希望你不要误解我的意思。也有很诚恳的朋友,我只能说声sorry。
如果你真的对我的工具感兴趣,我们可以私下交流。可能你有比我更成熟的想法,做出来的东东,比我的东东厉害几百倍,呵呵,到那时,你也show一下界面,也耍一把酷,让我向你学习一下。

你可能感兴趣的:(开源)