谈谈我对开源的看法

开源
有这么一种观点:程序员要想提高技术水平,多读开源代码、多参与社区讨论与开发就好了。我以前很赞同,现在发现不是这样。

有这么一种观点:程序员要想提高技术水平,多读开源代码、多参与社区讨论与开发就好了。我以前很赞同,现在发现不是这样。

panpan和xuhui对我的批评是,多看看技术以外的东西。我的理解是这样,很多东西它之所以这么做,不是因为技术上是最优的,而是因为工期、领导的旨意、需求变更留下的历史问题等等。这些原因是无法通过阅读代码而得知的,我只能看到实现细节,却不能知道作者的设计意图。像Qt、leveldb这样的项目,名为开源,但是它并没有采用开放式的开发。只是这个公司将其技术成果共享出来了而已,中间的过程完全不可得知。举个例子,Nokia和Intel说要合伙做一个叫Meego的操作系统。Intel说好啊,我对Linux熟,我来优化底层系统,Nokia你来搞QT及上层软件。结果Intel很郁闷的发现,Nokia的Meego项目组有两套BUG管理系统,一套是对内的,只有Nokia自己的员工可以访问(intel的不行),一套是对外的,放在社区里让任何人都可以去提BUG。然后Intel就怒了,你这让我们怎么合作?Nokia也很委屈,因为对任何一个手机厂商来说,未上市的手机的硬件细节是很重要的商业机密,这些东西很容易通过BUG管理系统中的日志文件和coredump流露出来。所以,大多数软件厂商最终选择的都是Nokia这样的做法。

很多时候要想清楚自己的目的,是让项目尽快完工,还是追求纯技术?如果是后者,不如老老实实在学校或者研究所呆着。做项目最重要的不是解决一个多么大的技术问题,而是尽可能的把所有技术困难都绕开,然后再解决那些不得不解决的。这时便会引申出一个重要原则:Simple is the best。

读代码跟读小说不一样。写小说的人心里一定是有读者在的。所以每拿起一本古典小说的时候,就仿佛穿越了时空在跟一个已经死去的人对话。而代码不一样,代码主要还是给机器读的,以及给自己读。举个例子,如果你对C++的模板推导很擅长,你会因为这门技术太晦涩,有人有可能看不懂,而不用吗?所以如果想通过代码猜透作者的设计企图,不管能不能做到,总之为其花费的代价实在是太高。那么有别的方法吗? 有啊! 跳到这个公司去,中午跟作者一起吃个饭,随便套两句,就出来了。

对我自己来说,很有幸能在一流的互联网公司工作。如果我想去百度、腾迅、阿里中的任何一家,应该都是有机会的。所以,总有比我资深的老员工,如果有幸遇到一个比较开明的,跟着这样的人做项目,会学到很多从开源项目、从书本学不到的东西。

这些,大概就是我跟1年前之比的转变吧。

责任编辑:黄丹 来源: changming
相关推荐

2009-05-11 15:53:39

开源LinuxUbuntu

2014-07-29 11:35:34

2009-02-17 20:01:11

微软招聘linux业务主管

2021-10-09 12:10:38

索尼Linux基金会开源

2014-08-20 16:37:51

2011-04-29 11:14:34

投影机

2011-03-24 12:57:03

2021-08-24 15:07:43

开发人员开源F5

2013-09-10 10:25:35

开源开源开发人员开源市场

2009-10-13 14:49:00

工作求职之路

2022-08-31 10:11:51

漏洞赏金计划漏洞

2011-03-07 14:37:14

甲骨文开源

2021-01-05 14:44:39

比特币加密货币黄金

2021-05-18 09:10:24

Percona开源软件企业

2012-05-28 17:16:12

2011-06-17 14:54:09

OracleOpenOffice

2022-10-31 16:38:47

2020-11-06 09:08:29

Docker开源无限制访问

2021-02-05 16:29:47

Google开源软件框架

2017-06-02 09:47:29

网络分层协议
点赞
收藏

51CTO技术栈公众号