IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

我对开源的看法

changming的blog 2012-07-27 14:13:22 累计浏览 4,924 次
本机暂存

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

    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年前之比的转变吧。

同分类推荐文章

  1. 科技爱好者周刊(第 401 期):如何赚到10亿美元 (2026-06-26 08:05:38)
  2. 如何做决策 - 从 Go 的一个 issue 说起 (2026-06-26 08:00:00)
  3. Seven Player:Windows上播放115网盘视频的增强工具 (2026-06-09 00:06:47)

查看更多 开发者 文章 →

建议继续学习

  1. AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用(含6.9中文定义补丁) (累计阅读 10,088)
  2. MogileFS 的介绍(MogileFS 系列1) (累计阅读 5,147)
  3. 五款最好的免费同步软件 (累计阅读 4,808)
  4. 如何避免重构带来的危险 (累计阅读 4,637)
  5. 代码里的命名规则:错误的和正确的对比 (累计阅读 4,435)
  6. Pixel light 中的场景管理 (累计阅读 4,351)
  7. 论“重复造轮子” (累计阅读 4,313)
  8. 软件项目需要很多人一起完成可能是一个骗局 (累计阅读 4,288)
  9. 小技术团队的成长 (累计阅读 4,121)
  10. Java陷阱(2010版) (累计阅读 4,094)