《程序员》记者/闫辉
Linux,在很多人看来,是一个既熟悉又陌生的名词,好像时时在我们的周围,但又抓不到它真实的一面。在我们的印象中,Linux同着网络经济的泡沫息息相关。随着网络经济的江河日下,Linux的声音也低沉了下来,只是偶尔挥动几下手臂,便又消失的无影无踪。不过,当我们为C#还是Java谁更有前途争论的不亦乐乎的时候,希望视线中不要忽视还有一批在Linux上做开发和研究的程序员。虽然相对于Windows平台的开发者数量,他们少的可怜,但他们也是一股新力量,同样在为中国软件产业的发展创造着价值。现在就让我们走近这些Linux程序员,了解他们的工作和内心世界吧!
中国有多少Linux程序员?他们收入高吗?
谈到Linux程序员的数量,我们很难得到确切的数据。实际上,从宏观上来讲,单以自由软件的范畴,有很多使用Perl、PHP等脚本语言开发的程序员,这些程序能够在Linux系统平台上运行。但大家认为做这些工作的还不能算是Linux程序员,因为这些开发往往也是在Windows平台上进行的。除去此种类型的程序员,真正的Linux程序员的便寥寥无几了。有人这样计算:国内拥有一百名左右开发人员的Linux软件公司不过几家,比如红旗、中软、TurboLinux、冲浪等。除此之外,还有十家左右的冠以Linux名称的小公司,这些公司的程序员一般不超过二三十人,此外还有一些没有使用Linux名称,但事实上也部分从事Linux相关开发的公司,而这样的公司也不会超过几十家。
当然除了公司之外,还有很大一部分做Linux开发研究的集中高等院校,比如中科院、清华大学、北大大学、浙江大学,还有杭州理工大学等。因为Linux在很大层面上仍是具有科研价值的载体,另一方面,这些学校由于历史的原因或者同国外的Linux机构有很好的合作关系,还有学校也开设了相应的课程。这些院校也是Linux技术发展最为迅速,气氛最为活跃的场所,无论是Linux的讲座还是沙龙都会吸引众多学生和程序员的参与。
从互联网上看,国内最大的Linux论坛LinuxForum有会员五万名,除去很大一部分参与的爱好者,有人认为国内Linux程序员的数目不超过一万。既然做linux开发的程序员数目很少,物以稀为贵,自然他们的收入也高一些。但绝大部分Linux公司现在还没有盈利,而且随着Dot Com经济的破灭,这些公司也不可能支付天价的工资,所以在我们的采访中,了解到高出的程度也是非常有限的,有位市场人员估计同等水平的开发人员,大概Linux比Windows平台做开发的工资要高30%左右。
Linux程序员在做什么?
就此问题我们采访了国内几家最大的Linux软件厂商。红旗Linux嵌入事业部高级经理魏永明说:“公司现在的开发方向有几个:系统安全产品、服务器软件、嵌入式软件开发,此外还有桌面的Linux系统,而嵌入式软件开发部门的人员是最多的。”TurboLinux公司的市场负责人说他们现在的主要在做Linux中文化产品和相应的解决方案,比如Mail和Web系统等,另外也从事一些对操作系统核心的优化、调整,但具体到操作系统的核心机制研究,一般主要是其公司的研究机构在国外做。
除了这些在公司接触到Linux开发的程序员之外,很多人也在做一些项目的开发。由于Linux属于自由软件(OpenSource)的范畴,所以这些项目也同国际上的OpenSource机构有密切的合作关系。比如魏永明现在就在做一个MiniGUI的项目,此外有国防科技大学的章文嵩也在做一个有国际影响的项目LVS(Linux集群系统),在这些项目的周围,往往团结着很多的Linux程序员,他们从中学习到了很多知识,并以此为乐。
实际上,国内Linux开发的方向现在仍然存在一些问题,最重要的就是技术和业务方向不专一。在这方面,美国和德国公司要成熟的多,也比我们踏实,每个公司都“术业有专攻”,比如美国HardHat公司,就专门研究Linux嵌入式操作系统的基本系统,并凭此牢牢把握住了自己的技术优势。而芬兰的一家公司Troll TECH就专注于做嵌入式系统的操作界面QT,此外还有很多人都知道的Opera公司也将自己的注意力集中到嵌入操作系统中的浏览器技术。而国内现在还缺少做Linux开发的专业化公司,现实的情况是,很多公司大包大揽,但最终什么也没有做成。
Linux程序员如何提高自己的技术水平?
Linux出现的时间很晚,而Linux真正进入到应用层,尤其是进入中国的时间也就是在一九九八年底左右。没有时间和积累,任何事物都不可能完美的发展,所以有人说中国Linux处于初级的初级阶段。在这种现实情况下,很难找到更多高质量的书籍,也没有更多好的老师,Linux程序员的学习途径有哪些呢?在我们采访中,深深体会到了自力更生的含义,也再次领略到了网络带给开发者的好处。
“国内Linux程序员数目很少,自然圈子也很小。这样也就要求我们不得不从内部更好的挖掘潜能。”在Linux软件公司中,内部会有一些做法,除了内部网上的一些技术交流,他们还经常座谈,某人在某个方面技术有一定的特长或者心得体会,就会上台给大家讲。“此外我们经常性的要求每个人都讲讲自己最近遇到的问题,让所有人都参与解决。这样不仅可以提高大家的技术水平,还凝聚了开发团队。”
“在公司内部,做项目或者产品开发的过程中,我们也会着重的使用一些软件过程控制方法来促进技术提升。比如有一种软件工程方法Extreme Programming(译:编程风暴或极度编程),其中有几种很好的方法。比如Pair Programming,就是成对编程,从严格意义上讲,这种方法要求两个人在同一台机器上、同一个键盘前、完成同一项开发。而我们把这种方法简化为一种学习方法,并制定了一个规定,就是要求水平比较高的程序员每周都要带领另外的程序员,利用一个或者两个工作时间来做同一件事情,这个方法是很有效的。”
从外部交流方面,Linux程序员主要参加一些民间的交流团体,比如非常有名的AKA组织。这个组织最早是由清华大学发起、以信息技术研讨为主的协会。他们去年做了两期面向大众的Linux技术培训,并得到了蓝点和IBM的赞助,效果非常不错。现在转向了面向Linux专业的程序员和爱好者的团体。他们举办的讲座也越来越专业,一般采用专题的形式,每周一次,主要讲述Linux内核方面的技术,文件管理等等。每次讲座,能容纳数百人的教室都座无虚席,讲座地点也主要集中在北大,清华,或者中科院。还有一种就是沙龙的形式,在北京大学有一个积极参与的AKA的成员,他经常帮助找场地来举行聚会。另外还有像LinuxForum这样的论坛或者IBM的Linux技术交流站点,很多Linux程序员也经常写一些总结性的技术文章,相互交流。”
不过在我们的采访中,发现国内大部分Linux程序员和国外的交流非常少,这是我们做的比较弱的一项。要知道Linux起源于国外,Linux技术发展的最成熟的也在国外,如何能更好的同国外的技术同步,应该是每个Linux程序员感到非常头疼的问题,而这个问题的产生想来同国内程序员英文语言的交流能力差有密切的关系。自力更生不是坏事,但学学“拿来主义”应该更有好处!
中国Linux开发氛围如何?
一般说来,国外自由软件的氛围非常的好,比如一个人去做某个自由软件项目,很快周围就会聚集一些人关注,并且会帮助他做版本的检错和测试。反观国内,魏永明说自己在开始做MiniGui项目的时候,很长一段时间仍然还是一个人做核心的工作,虽然有一些人也问一些问题,但从总体上看,受关注的程度同国外是没有办法相比的。没有人花费时间和精力来帮他做测试或者编写一些文档的工作,顶多就是写一个心得体会,而这样的人也少的可怜。
不过目前这种情况正在逐渐好转,国内越来越多的人开始关注自由软件了。“国内整个Linux开发氛围的改进是需要很长的一段时间的。但现在可以看到一点的曙光了。现在只要我们发行一个新版本,立刻就有一些人下载,并帮助测试Bug,发现了错误,就给我写mail,一些用户还写了很多使用的文章,探讨如何解决问题。这样我们在下一个版本发布的时候,便会把解决这些问题并修改我们的核心。所以我认为,自由软件的氛围正在向好的方面转变。”
谈到软件的协作开发,魏永明认为国内的协同开发还是比较原始的。国外的做法一般是用CVS,把CVS服务器建在网络上,然后大家协同开发,随时可以保持同步。但国内很多是在公司内部有CVS,发布之后,面向大众发放测试的过程中,只是打包成程序之后给用户使用测试,并没有使用CVS来进行控制。“所以我们下一步,准备等版本稳定之后,建立外部的CVS服务器。”
国内程序员之间交流还有一个奇怪的现象:就是大家都喜爱论坛。但在国外,使用最多的是两种途径:一种是邮件列表,一种是新闻组。国内的开发者并不太喜欢这两种方式。“当然在国内找一种免费的邮件列表服务是很困难的。我曾经找过很多,都不好用,后来我在美国一个网站上建立了一个邮件列表,但很少有人参与进来。但当我开一个论坛的时候,很多人都会在上面发言,踊跃参与。”这个现象后面的深层原因是什么呢?
Linux开发技术是不是很难?
TurboLinux公司研发部负责TurboHA开发的项目经理(TurboHA和章文嵩的LVS同属集群软件,不过LVS是负载均衡集群,TurboHA是高可用性集群,分别适用于不同类型的服务。)于潇洋认为:”linux技术的难度未必比windows高多少,实际上,linux开发也分为两个层次:第一个层次,比如做内核、中间件、或者数据库系统,这些要求对系统了解的非常清楚,C语言的功底非常扎实,对系统的开发工具链非常清楚,才能做这些工作。第二个层次就是做Linux上的应用开发,在linux中,有字符界面的开发和X下的开发,现在Linux环境下已经有了比较好的集成开发环境,也包括borland出品的kylix,如果要做应用开发的话,只要迈过了Linux命令的门槛,其他的和windows下面没有什么不同,即便是对于命令,你也会从中感受到linux的强大。比如做文本的字符串,在windows下面,必须要工具打开文本,搜索替换,但在linux下面只需要两个命令就可以实现批量的替换。我认为windows下面的程序员也很容易转移到linux下面的开发工作。任何一个程序员没有必要去害怕技术的堡垒。”
什么样的人做Linux程序员?
在我们采访的很多Linux程序员中,主要的有两种心态:一种是自身就看好linux的发展前景,认同linux的发展模式,尤其是自由软件的精神。他们感觉Linux有很好的优势,认为在这个平台上通过自己的努力,可以做出一些成就。而另外的便是很多人都有的游历心态,也就是打工者的心态。他们觉得做什么都一样,做Linux给的高一些,也就做这个好了。
Linux这种精神,这种开放源代码的方式,对于哪些愿意刨根问底、喜欢钻研探索的程序员有很大的吸引力。他们认为Windows上做开发的程序员,由于所处的层面已经很高,在开放的过程中,实际上并不了解程序是如何运作的。但在基于Linux的开发中,会对系统了解的很深入。水平非常高的hacker,甚至对自己软件代码产生的二进制数据流在计算机中的运行了如指掌。
另外一个角度上讲,Linux上的开发范围很广,无论是Web服务器,还是MySQL、PHP程序的开发,都离不开Linux。事实上,Linux已经成为了技术交流和发展的一块非常好的土壤。
所以,如果你喜欢自由(Free)和控制(Control),如果你是一个愿意去探索新技术、新事物的程序员,那可以试着去了解Linux,从中你会发现它会给你带来很多其他平台上没有的东西。
Linux的发展前景
国内的Linux没有得到更好的发展,也同反盗版力度不够有一定的关系,由于反盗版的力度不够,现有的企业没有看到windows平台上潜在的资金投入,在这方面,我们要向韩国和德国等国家学习,他们从政策上对linux扶持的力度更大。当然我们国家也在积极的扶持linux的发展。
此外诸如IBM等大公司投入资金大量的资金来从事Linux研究和推广,他们如此看中Linux,一方面是从自己发展战略考虑,因为微软对其地位产生的巨大挑战,所以要树立一个对手去挑战微软。与此同时,推广Linux也可以促进其服务器的销售,这些投入对linux的发展提供丰富的机会。
做linux的机会要多一些,比如做windows程序员,数目众多,竞争也越来越激烈了。而相对来说,linux上做开发的程序员很少,只要你做一段时间,就可以做的很好。从提高技术实力方面讲,因为linux更接近底层,因此效果会更好的。
“从我个人的经历看,开始大家都是由爱好者为主,但现在,专业做Linux的公司比较务实了。去年做的时候,我们还给客户一种没有实力的感觉,但现在从市场的反馈来看,国内的Linux技术提高非常快,前景非常不错,linux在未来的几年会有大的发展。”魏永明对此非常自信。
后记:记得很多人曾经遗憾中国为什么没有诞生比尔盖茨和Linus这样的软件天才,很多人质问为什么中国的软件技术只能围绕着”中文”两个字。但看看自己的周围,很多人包括在学校期间不用担心收入,课程负担也不重,但就是很少有人参与技术的钻研中,在空闲的时候,更多的是去QQ上聊天,去论坛灌水,很少有人静下心来,花一些时间去钻研技术。Linux现在提供了我们这样一个机会,你有兴趣吗?