微信号:infoqchina

介绍:有内容的技术社区媒体

态度,角度,温度,高度:Linux 开发模式带给我们的思考(上)

2015-01-24 10:25 池建强

十五年前,我第一次在工作中使用 Linux 的时候,并不知道这个操作系统会对我的生活和职业产生多么大的影响。十五年后,我在「Linus,一生只为寻找欢笑」一文中写到:


当大家使用 Google 搜索时,使用 Kindle 阅读时,使用淘宝购物时,使用 QQ 聊天时,很多人并不知道,支撑这些软件和服务的,是后台成千上万台 Linux 服务器,它们时时刻刻都在进行着忙碌的运算和数据处理,确保数据信息在人、软件和硬件之间安全的流淌。


Linux 不仅仅从技术层面影响人们的生活,其本身就产生了很多有意思的话题和文化,我读了不少 Unix/Linux 相关的书籍,很多技术内容已经忘得一干二尽,但那些话题、模式和文化,却像醇香的好酒、美丽的传说,历久弥新,不断的为我带来思考和启发……


1、最初的想法,并不是决定性的


Linux 并不是凭空创造出来的,当年林纳斯(Linus)只是觉得迷你版 Unix 操作系统 Minix 的终端太难用了,既不能登录学校里的 Unix Server,也没法上网。这种功能缺陷对林纳斯这样的极客来说是无法接受的,于是他决定从硬件层面开始,重新为 Minix 设计一个终端仿真器。


当时是三月,也可能是四月,就算彼得盖坦街上的白雪已经化成了雪泥我也不知道,当然我也并不关心。大部分时间我都穿着睡衣趴在相貌平平的计算机前面噼噼啪啪的敲打键盘,窗户上的窗帘遮得严严实实,把阳光和外部世界与我隔离开来。


经过不眠不休的编程之后,终端仿真器做出来了,但那个时候林纳斯已经意识到自己的雄心壮志远不止于此,神山上的另一座圣杯「操作系统」已经向他发出了召唤,于是始有 Linux。


另一个伟大的操作系统 Macintosh,同样起步于一个微小的项目,期间历经换帅、更名、争吵、妥协,最终与 NextStep 经过长达四年的整合才形成现代的经典操作系统 OS X(参见《MacTalk·人生元编程》)。


几乎所有成功的产品都是边走边看做出来的。伟大的梦想,常常始于微不足道。


所以,很多人问我如何找到一份长期稳定的工作时,如何开启一个能够带来巨大成功的项目时,我只能说,最初的想法,并不是一切,开始去做就好了。


2、好的软件产品,常常源于开发者自身的需求


林纳斯为给自己开发终端仿真器最终做出了让其名垂青史的 Linux 操作系统,沃兹因为热爱计算机设计出了 Apple I,乔布斯想把1000首歌装进口袋推出了 iPod。


如果有什么工作能让你保持长久的热情,那一定是做自己需要的产品。当年我们在给程序员开发工具平台的时候,我要求每个工具研发人员都使用我们自己开发出来的工具,而不是仅仅把工具推给测试人员和项目组的程序员。过了一段时间,我发现那个 IDE 突然增加了很多「善解人意」并「出人意料」的功能。


如果有一天放下现在的工作,我一定会找一件足以让我穷尽半生去探索和追求的事情,用「术」解决问题,用「道」创造解决问题的方法,顺便改变生活。


3、优秀的程序员知道如何编程,卓越的程序员知道合理复用


林纳斯并没有尝试从零开始编写 Linux,而是以重用 Minix 的代码和理念作为开始,虽然在 Linux 最终的版本中几乎所有 Minix 代码都被移除或重写了,但它在 Linux 成长初期确实起到了类似脚手架的作用。


卓越的程序员通常都很懒,我们把这种懒叫做「建设性懒惰」,因为他们知道,很多时候我们要的都是最终的结果,而不是勤奋的过程。如果有可以复用的基础,显然比从零开始更具有建设性。


在开源社区澎湃发展的今天,我们有了更多的技术选择。所以,当你拿到一个轮子的需求时,去社区里找找问问,如果有可以复用的东西,就不要再费劲去造一个新轮子,况且你无法保证自己造的轮子比旧轮子好用。


我从来不是卓越的程序员,我只是模仿他们。


4、如果你有正确的态度,有趣的事情自然会找到你


林纳斯从写下第一行 Linux 代码的开始,就保持了一个开放的态度,可以说,Linux 一诞生就被打上了开源的烙印,这一点对其后续的发展起到了至关重要的作用。因为开放和开源,Linux 吸引了全球的开源爱好者和顶级黑客,无数卓越的程序员为 Linux 贡献了源代码,同时,林纳斯在开源协作方面也展现出了编程之外的天赋,他井井有条的运作着庞大的开源社区,回复邮件,发起讨论,阅读代码,合并分支,Linux 操作系统在开源社区的推动和林纳斯的调教下以惊人的速度发展。


从来没有一款如此复杂的软件系统是以这种松散的方式构建的。几千名散落在世界各地的开发者,凭借着脆弱的互联网建立关系,他们利用业余时间,构建出了一个鬼斧神工般的操作系统,随即这个系统又成为互联网的基石,其间沧海桑田,让人叹为观止。


一切都源于开放的态度。我对这一点深有体会,从写下第一条 MacTalk 推送开始,我只想向世界传递我的讯息,结果各种有趣的人和事纷至沓来。但行好事,莫问前程。


为什么要登山?因为山在远方。为什么要阅读?因为历史在书里。为什么要写作?因为思想流淌在心头和指尖。就是如此。


5、如果你对一件事情不感兴趣了,最好的做法是找到一个有能力的接棒者


每个人的兴趣都会转移,林纳斯也不例外。在 Linux 进入稳定发展的阶段,他把更多的精力放到了开源社区上,但是这并没有降低 Linux 操作系统的代码质量,因为他找到了更多的顶级源代码贡献者。


在软件开发的项目中我们同样会遇到类似的问题。某个功能的开发者突然对该功能失去了兴趣,这时候我们就有责任为这个功能找到一个可以胜任的接棒者,而不是强迫原来的开发者在原地踏步。


很多时候,我们厌倦了一件事情,并不是能力缺失,而是因为已经洞悉了这件事的所有秘密,于是转身离去,开辟新的征程……


未完待续……请继续关注本文下篇:《Linux 开发模式带给我们的思考(下)》


推荐书籍


《Just for fun》林纳斯自传


《大教堂与集市》


《Linix/Unix设计思想》


《Unix编程艺术》


本文转载自自池建强的个人微信公众号:MacTalk By 池建强(sagacity-mac)。


 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 忘掉那些热闹的报道吧 PHP框架是什么?怎么使用PHP框架? 【李大神仙开讲啦】之数组、API的介绍及函数 阿里版JVM Python 对象 (一)