您当前的位置:首页 > 互联网教程

你印象中的程序员

发布时间:2025-05-24 17:34:05    发布人:远客网络

你印象中的程序员

一、你印象中的程序员

1、没有情调,不懂浪漫,也许这是程序员的一面,但拥有朴实无华的爱是他们的另一面。

2、我个人感觉印象中的程序员就是,头顶英年早秃,发际线英年上移(开玩笑的说),其实我朋友做程序员的就会下意识的看我的头发,说不像啊,其实很多程序员的时毛发浓密的,并不是所有的都聪明绝顶,很多程序员的智慧是“掩盖”着的!

3、还有完全的理科思维,面对女生时,真是个妥妥的大直男啊,平常不是在加班,就是在加班的路上,不管是朋友还是亲戚的电脑坏了,都能修好。

4、为人严谨,做事有条理。周围的程序员,生活规则有条理,作息规则,很少有通宵熬夜,打游戏啥的(因为不然的话,996身体也扛不住啊,),其实真的邋里邋遢的很少。不像网上传的那样,不爱卫生。他们程序员每天完成工作中的任务,对于遇到的问题,也会去网上或者其他渠道寻找答案,虚心接受学习。

5、大多数程序员,他们会疯狂的学习各种新的技术和开源技术,希望依托技术让自己过得更好。但是久而久之,面对现在如今的技术更替的频率,他们会越来越疲惫,直至怀疑自己,怀疑这个行业。所以,只有不断的学习,才能生存下去。

6、程序员薪资还是挺不错,他们的生活简单。但也会经常加班,时薪其实不高;生活比较简单,花钱也很少,除了吃住,估计除了在游戏上花钱,就是学习。其实我们能发现大多数程序员都没啥爱好,可能是经常加班的原因吧!

7、我的代码曾运行在几千万用户的机器上,作为一个程序员,还有什么比这更让人满足的呢?如果有,那就是让这个用户数量再扩大 10倍。

8、我感觉程序员是值得我们尊敬的。,程序员的双手是魔术师的双手。他们把枯燥无味的代码变成了丰富多彩的软件(现在我们使用的健康码,行程码)。

9、程序不是年轻的专利,但是,他属于年轻……

二、程序员遇到很难的技术问题是怎样的感觉

昨天刚领一个线上P0级重大事故,持续时间1小时,影响范围全站!准确的时间点是下午17点开始,具体问题定位且听我下文细细道来。

先说感觉,那感觉真是太刺激了,本来下午五点,昏昏沉沉的,瞬间一个激灵就清醒了(想象一下高中课堂,你在打瞌睡,突然老师走到你面前给你一下子的感觉),原本准备再过一小时吃晚饭了,吃完晚饭再摸鱼到21点就可以下班了呀,别问我为啥到21点,问你就不是程序员!

带着无比紧张且颤抖的心情开始定位问题,先来个错误日志尝尝鲜:

1、下午五点开始有少量的慢sql报警,没有人当回事,因为这种事情总发生,虽然大家都知道在实际开发中如何避免慢sql,但是整个团队要想完全避免慢sql却很难;

2、五点十分左右,开始零星有用户反馈指定功能不可用,SLB开始报警,技术开始介入排查;

3、十五分左右,客服部门电话开始爆炸,用户密集反馈指定功能不可用,技术部开始重视;

4、二十分左右,所有服务大面积出现接口无法响应,整体服务不可用;

5、我们一开始定位觉得是MySQL的问题,因为前面有mycat的慢SQL报警,后来定位并不是MySQL,因为MySQL的内存、连接数、流量这些指标都很平稳;

6、最终在五点三十分的时候我们定位到是ES出问题了,因为所有的Java服务不可用最终都指向上面的错误日志,dubbo提供的服务线程池满了,再有请求进来直接拒绝了,查看这个服务的代码,最终查询的是ES,此时的ES进程已经处于假死状态。

那接下来大家说怎么办?如何快速的恢复线上服务?

是的,只有重启大法此时是最快的解决办法,你不可能说保留ES事故现场,让我用arthas之类的工具来现场分析jvm内存情况。

然而重启之后服务依旧是不可用,接口还是无法响应,大家知道这个时候是什么原因吗?为什么重启了ES服务还是不行?

后续继续重启报错dubbo日志的相应服务,当这些服务全部重启完毕后,我们的服务终于恢复访问了,这个过程持续了十几分钟,确切的说,直到17点五十多分,我们的所有服务才恢复了访问。

接下来就是事故总结、相关责任人、产生问题的原因、接下来的优化方案,全公司邮件通报!

你说这个难不难?本身并不难,难的是事情紧急且重要,这个时候你慌了啊,乱手乱脚的,大家你一言我一语的,如何冷静提取有效信息然后尽可能快的解决生产的重大故障才是最难的!

最后,当一切都恢复平静的时候,你会发现:“卧槽,好累啊!”。

最后祝大家程序员节日快乐,今年可是程序员的本命年哦

2020= 1024+ 996= 404+ 404+ 404+ 404

技术难题,对于程序员来说,是经常有的事,关键是如何面对吧。

说下我的事情,虽然也会写点代码,但并不是以此为正业,所以对于真正的程序员来说,可能说法会有点偏颇。

遇到难题时,一般都在网上搜索解决方法,一般来说,都有很优秀的程序员分享他的劳动成果,所以一般都能解决问题。但也真正碰到难的问题,一个就是循环的问题,无限极菜单问题,当时都是找了很久,看了很多遍才明白过来,当时自己是几天都不太开心,也不太想说话,总是在测试着程序。挺烦也挺不开心的。只是最后做出来了,心情就好多了。

这是我的一些经历,当然,如果全职程序员,可能压力就更大了。

如何形容这种感觉呢?焦躁,紧张,失落,无助,亚历山大...

再多词可能都描述不清楚。本人在工作中经常遇到难题,有些问题一两个月都搞不定。遇到这种问题,估计只有下面这张图的表情能描述此时此刻的心态了。

程序员遇到的难题其实分为两种,一种是没有办法定位清除的问题,另外一种是定位清除了,但是没办法,或者很难解决的问题。

所谓难定位的问题,其实就是你根本不知道这个问题是什么。比如系统突然挂掉了,你从现有的信息根本不能确定问题在哪。这个时候你剩下的可能只有满脑子的问号了。

如果系统只挂了一次,后面不再出问题,那就很难找出问题的根源了。不过这样也有好处,那就是问题的影响的程度相对较轻,毕竟不容易出现。所以在软件开发中通常不是什么问题都解决的,因为不是所有问题都能搞清楚是什么问题,谈何解决呢!

难解决的问题是问题搞清楚了,但是基于现有架构很难,或者没法搞定。遇到这种情况,通常先是很高兴,兴奋,然后就只剩下无奈了。

当然,从技术层面来说并不是完全解决不掉。只是如果要解决需要涉及架构调整或者其它方面的改动,修改调整的内容太多。这种情况下就要考虑利弊得失了。

如果改动太大,可能会引入很多新的问题,可能得不偿失。因此,遇到此类问题可能会采取一些规避方案。

当然,在开发和运营当中遇到各种问题是很正常的,关键是遇到不同的问题采用不同的策略。首先保证的是业务的正常运行,然后是考虑是否需要彻底解决。这样慢慢调整,心理压力会小一些。

作为一个工作多年的老码农,在工作也遇到过一些艰难的技术问题,就以切身体会谈谈对这个问题的看法。

首先需要明确一下,问题是否困难除了取决于问题本身之外,还在于解决问题的人的水平,也许对你很难的问题,在别人看来不过是小菜一碟。明白了这一点,那么这些技术问题也就成了考察程序员水平的试金石,有些人可能会因此气馁,甚至放弃;而有些人则通过解决问题学到了很多新的技术,也让自己进一步成长。

记得多年前看工作中要用到一款开源库,那时候刚学完C++不久,自以为对面向对象了解甚深,然而学习这个库时却是一头雾水,最后在经过泡论坛,然后又认真的学习了面向对象设计模式,后来不但能使用那个库,更重要的是对面向对象编程有了更深的认识!

后来还有很多类似的事情,刚开始时感觉无比困难,但是通过自己的努力,或求助他人、或查阅资料,当最终问题解决时,你会发现自己又牛逼了一些,然后再遇到一些新的问题,如此循环……

其实编程也是一个学习的过程,就如同爬山一样,每一阶段都会有一些山头,只有当你爬上山头才能欣赏美丽的风景,但是当你爬上一座山头的时候,就会发现更高山峰!只有当你爬上最高峰,才能“一览众山小”,可是到那时,你可能会向往地球之外的天地!

很难解决一般就是遇到某些瓶颈了,不同瓶颈的感觉是不一样的,但无非可以归结为下面几类。

不让马儿吃草,还想让马跑。这个是有些不太理解互联网的一些领导的错误观念,他们会给你安排一个老旧台式机,想要让你承载几万、几十万并发的秒杀系统,你当然很难解决。

外界的评论可能是,“这帮程序员是吃干饭的么?这系统也太垃圾了!”

老板的评论是,“我这台式机也不少钱呢。”

程序员的评论是,“这抠门老板不会是个傻子吧。哎,再优化优化吧。”

当然,有些情况也是能够理解的,公司明白需要更好的设备,但是由于成本控制,不得不在某些方面节省。但换句话说,设备成本是占不了一个大头的,可能有其他方面的成本更加需要收紧。

如果是因为成本原因,我们的心情可能是无奈,又有些不能施展拳脚的束缚感。

举个例子,系统用了5年了,迭代了N个版本,在面对新的需求的时候,就会出现需求限制于系统的情况,常常会有程序员说,这个实现不了,那个不符合现在系统规则。其中很大一部分是这些年的积累,欠下的技术债造成的。俗话说,大船难调头。

这种情况更多的出现在刚创业之后的几年,由于一开始的快速迭代,追求先把业务流程跑通,先生存再规范,会让一开始的软件开发流程并不那么规范,如果在1-2年内没有进行重构,那么积攒的3-5年的技术债就会慢慢把你压得喘不过气来。

解决这种情况,一是需要时机,给出足够的空间和时间让技术团队重构,二是需要魄力,你得有成功的把握,不能干着干着说不行了,咱们还是回到原来吧。

如果是因为历史原因,我们的心情可能是期待和渴望,又有些对现状的无奈。

虽然说专家很厉害,但说白了,大部分企业需要的研发人员,还到不了需要专家的级别。所以,一般而言,没有什么技术是攻克不了的。如果真的遇上了,那就说明你的公司已经到达了一个新的层次,从而需要那个层次的人员来解决,可以通过外聘或者顾问的方式,引进新的技术。

如果是因为能力原因,我们的心情虽然有些力不从心,但又为公司在新的台阶而高兴。

不管怎样,程序员是一群追求美好的人,不管是外部限制还是内部限制,不能解决的难题对于技术人员来说总是很憋屈的。

不能着急,慢慢分析,找到问题点,没有解决不了的问题

程序员的技术问题,排除架构师技术选型错误以外,都是程序员的功夫不到家所致。

1,面向百度的程序员会第一时间问度娘,各大社区求助大神。

2,面向源码的程序员会第一时间查看源码实现,查找api文档,思考解决方案。

3,不管技术如何发展,架构如何延伸,不变的是基本功,再先进的组件都是由基础语法书写出来的。

练武不练功,到老一场空,共勉!

首先说下这个很难的技术定义,个人认为在你知道之外的知识都是很难的,一旦你深入了解其使用方式,原理,甚至阅读了他的源码,你会觉得有的时候会恍然大悟。程序员是一个不断要学习的岗位,就要面临很多从未知到已知技术的时候,每当遇到这样的情况时候,总有种不解决了这个问题,睡不着觉的感觉,心里不踏实,总是想尽各种办法去解决这个问题。甚至可以一直追查这个问题。也许这就是一种执拗吧

我老公最近就遇到一个大石头需要敲碎,我作为一个旁观者,都挺心疼他。

他还在读博,最近遇到的问题是他一个项目上的问题,也跟他的毕业设计相关。他刚读博的时候确定了一个方向,去年开题的时候他觉得这个方向没有什么前景,真的是考虑了好久要不要换,如果不换,就是安稳的毕业,换的话接下来的一年多时间他会很艰难,很多新的问题需要一一克服,最后他决定换了,他说他读博就是为了提高自己,还是想挑战一下。

年前,系统板设计好了,然后最近做好回来了,开始调试,说这个板子跟个石头一样,不工作。本来就是礼拜一到礼拜六待在学校不回来,周日是休息的。现在放假回来都是在啃变压器的东西,早上起的很早,晚上又很晚。真的挺心疼的,他还安慰我说,他又要进步了。挺担心他的身体的,我特别希望时间能快点过去,能顺利毕业。他却不希望,总觉得时间过的太快,没有时间搞研究。

今年的生日愿望,希望他科研顺利,身体健康。

以我的从业经历,说说遇到很难的技术问题是什么感觉吧:兴奋、充满挑战性。尤其是在开发中遇到了技术难题,很多情况下真有种可遇不可求的感觉。

我认为能遇到技术难题,至少证明这个工作是有价值的。这种价值体现了两个方面,一是你的工作在整个产品开发中占据重要地位,甚至是核心地位。二是你的认知和经验,仍然有成长的空间。如果你的工作一直没有遇到难题,轻而易举地就解决了一切,那么很可能是你没有机会深入重要的核心部分,或者你的工作性质可替代性很高,简单重复性很高。

分解法。把技术难题拆分,尽量的单元化、模块化,这样有利于逐步攻破,逐步解决。主要是降低技术难度,寻找真正的难点所在。如果问题无法拆分,就是那么一个点,那么需要逆向思维,可以先把问题扩大,看看涉及面有哪些,然后再缩小范围,锁定关键之处。

刨根法。把技术难题抽象化,理论化,从根本的源头去解决。很多技术问题,从基础理论的角度去看,其实真的不难,只要你能定位到相关的技术点,困难点,知识点,就很容易进行快速解决。解决的终极办法就是从理论上彻底解决,做到知行统一。

讨论法。三人行,必有我师。很多情况下,所谓的技术难题,在别人的眼中,也许并不是难题。很多情况下,小组讨论,交换意见,方案互补,就可以解决难题。有些情况下,还需要和供应商一起讨论,主要是补充信息的错漏。经常出现的芯片问题,很多情况下供应商都更加有经验。因为供应商有更多的使用客户,有很多解决问题的经验。最主要的是,芯片是他们设计的,他们更加清楚缘由。

没有绝对的技术难题,有的只是尚未解决的技术难题。

三、为什么程序员都喜欢开源的软件

开源软件有许多好处,总结起来,最重要的有三点。

首先,开源软件对用户的权利保护得更充分一些。举例来说,如果有一天微软公司不复存在了,那么 Windows、Office这些本来由微软公司负责维护的软件很可能由于没人维护下去而被淘汰,但开源软件却不存在这样的问题,开源软件不会因某个人不存在而变得停滞不前。用户曾经花费巨资购买的 386、486微机,现在却只能作为一堆废品来处理,原因就在于缺乏性能优异的应用软件来持续支持,但功能强大的自由软件却可以在这些 386、486微机上跑得很好。

其次,开源软件由于发布很广,开源软件的问题更容易暴露出来,这使得当这些问题解决以后开源软件就变得更加完美。

最后,开源软件对用户个性化的需求更容易满足。由于软件过多地引进了工程化管理,使得软件的标准化程度越来越高。这固然可以增加软件的开发效率,但却使得人们都需要按照一个模式去操作软件。正常人使用着很方便的软件,左撇子使起来就很别扭。随着手机、PDA等新产品的出现,这种个性化的需求会表现得更加强烈。开源软件由于源代码是公开的,所以这些个性化需求更容易得到满足。软件不能单纯用工程表现,在这个问题上,开源软件的开发方式给了人们很深的启示。

共创软件联盟的刘澎则指出,开源文化是人类几千年的智慧结晶,是一种必然的历史发展趋势,这种发展趋势是谁也阻挡不了的。今天,已不可能有人会否认互联网所蕴含的价值,但人们有没有注意过互联网发展初期是一个什么样子呢?几十年前的互联网只是具备了一些核心的协议,应用价值也并没有显现出来,但这根本不会妨碍互联网发展成今天这个样子。互联网在发展初期实质上就是一种开源的形式,今天的开源软件与此非常类似。发展趋势本身就具有一种力量,Windows之所以应用得这么广,在于它符合现代操作系统的标准。现代操作系统的标准就是一种趋势,Linux也符合这些标准,这使得 Linux也将注定成为了一种优秀的操作系统。

刘澎同时认为:“目前开源软件的发展进入到了一个低谷的时期,这其实是开源软件发展的必经阶段。因为开源软件的商业推广模式在创立初期就出现了问题,所以才有今天的发展低谷,可见这个低谷并没有超越于发展趋势之外。我们在二十世纪九十年代中期就采用开源技术解决了路由技术,这个项目在商业上也获得了巨大的成功。事实上,国内有许多开源项目,如 Hopen等,都做得非常成功。因此,面对暂时的困难,就认为中国无开源,认为开源没有希望,是一种敷浅的表现。

中国工程院院士倪光南指出:“从产业层面看,以 Linux为代表的开源软件增强了我国软件业讨价还价的能力,并且使得软件的市场空间增大了。我们必须看到,国产 CPU必须有 Linux支持,否则就会因使用范围太窄而不能投入实际应用。”

在许多人眼中,开源就意味着只有付出而没有任何回报,然而,开源的本意却是“ When programmers can read, redistribute, and modify the source code for a piece of software, the software evolves”(只要程序员对软件的某一部分实现阅读、重新分发和修改代码,即可称作开源)。既使是要求极为严格的GPL协议,也仅要求使用GPL源码这个部分开源,而 BSD协议则仅仅要求在 End User License中,保留原来的协议就可以了。

由此看来,开源软件同样可以做到“别人怎么赚钱,我们也怎么赚钱”,开源与商业利益并是完全对立的。在国内保障体系还不完善的情况下,国内的软件公司和程序员完全可以利用开源软件解决吃饭和生存的问题。而开源软件也并不只包含 Linux这样的系统软件,目前热门的 ERP、CRM乃至知识管理、商业智能同样可以基于开源软件开发。

对程序员个体而言,加入开源社区也并非一无所获。国外许多程序玩家通过社区的锻炼获益匪浅,功成名就者也不乏其人。国内的软件工程技术人员参与过大型开发项目的少而又少,中软 COSIX项目尽管归于失败,但通过这个项目培养出来的参与过大型项目开发的人员已被几大外资软件公司瓜分殆尽。而现实的问题却是,一方面程序人员抱怨没有项目可供练手,另一方面却又不愿加入开源社区得到锻炼。无论国内的程序员有着什么样的想法,开源社区却绝对不失为获得大型开发项目经验和扬名立万的良好场所。

对软件公司来说,开源还是增加软件需求的好方法。软件发展到今天,由于过多地引入了工程方法,使得软件越来越趋于标准化。对个人用户而言,同样的软件,用惯右手的人使用起来得心应手,然而左撇子用起来却怎么使怎么别扭。而对企业用户而言,管理软件的使用必然伴随着管理方式的变化,然而,并不是说管理软件带来的总是适合用户的管理变革,这时用户就会提出系统必须要和管理实现互动的要求,显然,开源软件处理这类问题更为方便。

与国内软件公司远离开源的情况相反, Sun公司把 Solaries操作系统的源代码毫无保留地公开给了业界,微软也已宣布将把投入巨资开发的 Windows CE的 70%的源代码以 5美元的象征性价格出让给业界。微软公司和 Sun公司当然明白这样做带来的好处,源代码开放以后,业界更容易形成基于某类产品的技术标准,这将为技术的拥有者带来更大的市场。而对下游的服务厂商而言,可以更容易地为用户提供更好的服务,表面看来微软公司和 Sun公司在服务市场损失了一部分收入,但这部分损失会在产品市场得到更大的补偿。

从根本上讲,开源与非开源的开发只是开发方法上的不同,采用开源方式开发出的软件产品,也可以采用不同的商业模式来实现其价值。开源不是怪物,开源也不会让某些公司保不住饭碗,相反,开源可以培养出更多高水平的人才,开源软件能应用于核心应用,也能创造出更广阔的需求市场,从而改善软件产业环境。

来自CSDN网站关于开源的调查表明,抱有“开放源代码会使公司失去收入来源”和“加入开源社区意味着只有付出没有回报”想法的人,只占到总调查人数的十分之一;明确表明无条件不加入开源社区的调查者不足 3%;反进来,认为开源拥有良好商业前景的调查者占到了十分之七,认为能从开源中取得回报的调查者更是占到了十分之八。

然而,日渐成熟的开源技术与惨淡的生态环境还是形成了强烈的对比,开发人员对于开源的高涨热情与开源社区的惨淡同样形成了强烈的对比,被赋予了太多使命的开源让我们感受到了从未有过的沉重。面对着这些强烈的反差,我们不得不开始思考一个问题:中国开源路在何方?

谈起中国开源的发展道路,这绝对是一个仁者见仁,智者见智的问题。关于这个问题的答案,涉及到了心态、人才、政府支持、产业等方方面面。应该说,经过了几年的普及,开源在国内确实已经拥有一批拥趸,政府在这方面也下了不少力气,而现在所需的,是要把这些力量汇聚成一股合力。为此,发展开源首先要保持良好的心态,其次是要选择正确的方法,最后是要实现开源成果向产业的顺利转化,当然,政府的支持同样是不可缺少的。总之,开源软件的推动工作是一项系统工程,其中需要用到太多公众的力量和智者的思想。

对许多事情而言,态度往往决定一切,发展开源无疑就属于这类事情。从事过开源实践的人对开源界人士有一个共识,那就是开源界人士的浮躁。关于这一点,无论是早期创办 Turbolinux公司的 Iris Miller,还是把开源软件引入国内的宫敏,再到开源的实践者刘澎都有同感。

开源软件界的人很浮躁,往往是没有听别人把话讲完,就开始了指责。这个时候,如果他们能够静下心来再听别人讲五分钟,结果常常是五分钟过去后,这种指责已经没有办法进行下去了,因为他们误解了别人的意思,别人的意见是正确的。事实上,浮躁也绝不仅是国内开源者的专利,国外开源者也概莫能外。在 Linux开发的初期,Linus曾经删掉了 Linux系统的一部分程序,这遭到了他身边 20多个高级开发人员的反对,这些人在网上公开发文,表示 Linus先生应该征询他们的意见后再决定删除与否。但 Linus先生马上就回复了这些问题,他表示他读了关于这些程序的所有文档,最后发现这是一个黑洞,而保留这些程序的后果只会延续这些错误。最后大家都对 Linus先生表示了歉意,承认他们并没有读过全部的文档。

浮躁带来的最大后果是容易让人忘乎所以,于是开源就变成了带有感情色彩的开源,Linux也一度成了让人用着就想哭的 Linux。共创软件联盟的副理事长刘澎认为,发展开源就要以“进化论”的观点来看待开源软件。而以“进化论”论的观点去看待开源软件的发展,就是要从市场需求的角度去考虑开源软件的发展。开源软件变成某种具体的产品后,能否生存下去,要看市场上是否存在需求,如果不存在需求,以指令的方式强制生产,肯定要出问题,这种产品的寿命也不会太长。如果存在需求,即使眼前看起来困难重重,但这种产品还是具备生命力的,一定会有企业克服重重困难让这种产品面市。以“进化论”论的观点去看待开源软件的发展,就不能无视“拔苗助长”现象的发生。

洪峰则认为,开发开源软件要有一种做学问的态度,因为这不是今天投入多少,明天就能产出多少的问题。许多知识是人类几代人积累的结果,天才科学家为解决微积分中无究小的问题,花了 150年的时间,而解决开根号的问题花了一千年。

与浮躁相伴随的,还有一种心态,就是悲观。浮躁使人头脑发热,还会使开源的发展脱离正常的发展轨迹。于是,内心的狂热与无情的现实就特别容易使人悲观。刘澎对此谈了他的看法,当开源运动陷入低谷后,刘澎同样感受到了失落,他觉得别人都亏欠了自己。这时,有个朋友问他:“难道你就没有缺点吗?”为此,刘澎反省了自己,这才领悟出“我们花了国家那么多钱,却做了许多失败的项目,这怎么能算是国家亏待了自己呢”。据此,刘澎认为要想克服困难,去解决问题,就需要保持一种良好的心态。对从事开源软件研发的企业来说,不要总是指责周围的环境,要多从自己身上找缺点。反过来,经历过失败也并不一定是一件坏事,因为失败本身就是一种财富。刘澎坚信,经历过失败以后,我们才耐得住困难,在艰苦的环境中才能生存得下去。刘澎同时认为,面对暂时的困难,就认为中国无开源,认为开源没有希望,是一种敷浅的表现。

在 Linus和 Richard stallman创立开源软件的初期,他们并没有很好地解决开源软件日后的商业发展模式,这使得开发开源软件的企业在经营上遇到了很大的困难。同时,在现阶段,中国的软件开发人员首先要解决的是吃饭问题,先要生存才谈得上发展,因此,国内开源社区的发展缺乏物质基础。这些使得国内开源的发展不可避免地落入到低潮。基于这个原因,国内开源界的人士普遍认为缺乏良好的商业发展模式,是制约开源运动发展的瓶颈。CSDN的调查显示:对于程序员加入开源社区的前提这个问题,十分之四的程序员选择了自己有足够经济基础的答案,近十分之三的人选择了“得到赞助或从中得到回报”的答案。也就是说,如果商业模式的问题得到解决,将有近十分之七的程序人员加入到各类开源社区中去,这是一个让人感到振奋的数字。

对于这个问题,开源运动的倡导者洪峰给出了这样的解释:开源发展的制约瓶颈在于开源软件厂商没有找到开源项目中存在的稀缺性的东西。传统经济学的出发点是资源的稀缺性,在这种理论指导下,政府采用了强迫性,商业软件强调竞争性,但开源软件中只有合作性,稀缺性仿佛不存在,开源厂商无法找到开源软件所蕴含的稀缺性,厂商开发出的开源软件的价值就得不到体现,开源发展的制约瓶颈也就产生了。但是随着人类的发展,合作性会被越来越多地采用。关于这一点我们可以从政府的法制建设的完善中感受到。

以开源教育为例,如果学生自己去学习,那么付出的成本将非常大,许多学生在大学中专门学习了四年计算机知识,还是不会编程;而我如果给出了学习的线路图,为学生提供辅导,学生的学习成本就可以下降很多。经过两年甚至两个月的学习,就可以成为编程高手。我为此付出了大量的时间和精力,因此就可以把学生节省下来的成本的一部分,作为费用收上来。这就是利用了开源的稀缺性。实际上开源软件完全可以利用其他形式实现赢利,我们可以见到尽管数学定理都是公开的,但这并不表明每个人都能够成为数学家。要成为数学家还就需要付出很大的成本,这种成本就是稀缺性的源头。

对于个人而言,由于找不到这种稀缺性,同样使得一些人不愿加入开源社区。事实上,在开源社区内,你给别人提供了帮助的同时,也得到了非常多的帮助。国外开源社区内的许多程序员都是利用了开源社区,最终他们提高了知名度,也找到了很好的工作。因此,合作也能对个人产生价值。由于国内只有很少一部分人真正理解开源软件的意义和规则,中国软件企业大多也是在按照专有软件模式在运作,使得国内参与开源社区的人太少。因此,要想打破这个瓶颈,首先就需要把开源软件的含义讲清楚。

虽然阻碍开源发展的瓶颈是商业模式问题,但要解决商业模式的问题又会涉及到方方面面的问题,这就使得阻碍开源发展问题变成了许多个,著名的 IT评论人雁鸣先生把这些因素归结为普及程度低、公共资源稀缺、人才缺乏、开源项目少、厂商和社区缺乏合作、应用难以推广、服务滞后、源码不开放、标准不统一等九个问题。

阻碍开源社区发展的最直接的原因就是人气的缺乏,而要解决这个问题,除了要让开发人员明了开源的本质外,还需要让他们明白开源的发展究竟需要什么类型的人才。对这个问题,不同的专家给出了不同的意见,但大致分起来,开源人才又可以分为社区内的人才和产业内的人才,这些人才当中既需要使用层面的人才,又需要高端的开发人才。从数量上看,使用层面的人才需求较多,而开发层面的人才需求较少,整体人才数量将呈金字塔状排列。

就开源社区内的人才来看,洪峰认为 Perl、Linux等开源软件的创立者都是精英,而中国开源社区缺乏的恰恰就是这种精英。开源社区需要各种层次的人才,有应用型人才,也有开发型人才,但就目前来说,急需的是高水平的开发人才。要成为高水平的开源开发人才,要迈过一个很高的门槛,而国内迈过了这个门槛的人还太少。怎么叫迈过这个门槛了呢?基本要求是把 Linux内核研究过一遍,还要能熟练使用各种开发工具。Linux的内核压缩以后是 20M,打印出来后相当于 60多本砖头厚的书,国内很少有人能完成这个工作。而这只是一个学习的过程,真正要成为能对开源社区做出贡献的人才,还要具有相当的创造性。

洪峰同时认为,中国开源社区的成长空间是惊人的,北京有这么多聪明的学生,他们之所以没有加入到开源社区内,是因为高校没有给出适合学生的清晰的发展路线图。如果我们给出他们清晰的发展路线图,中国的开源社区的发展将是充满光明的。

在产业层面,刘澎认为要发展中国的开源软件,在现阶段所需要的不是精英。事实上,也不存在什么精英。所谓精英只不过是比别人早几年认识到了开源软件,如果宫敏先生当年不把开源软件引进到中国,会有另一个人把开源软件引进来。Linus写 Linux内核确实付出了艰苦的努力,但并不是说另一个人就不可能完成这件事情。Linux内核并不能直接应用,真正让 Linux成为一种优秀的操作系统的原因,在于后期大量的工作。

刘澎坚持这样一种观点:现在做开源软件的人缺乏一种献身精神。许多开源的倡导者谈开源文化时显得觉悟很高,但到了实际工作中,开发某个具体开源项目时,动辄就要求上万元的月薪。从这个角度看,发展开源软件目前急需的是有执行能力而又有着对开源文化的信仰的人才。此外,国内开源软件还缺乏复合型人才,往往是原来搞研究的人在搞开源软件项目,这些人只能起到“车间主任的角色”,当上级领导下达生产任务后去完成,而不能实现从研发到把技术成果转换成商业成果的全过程。因此,开源软件界同样需要学会了在市场中同最精明的商人打交道的人。

刘澎强调,这并不是说开源厂商不需要高层次的人才,相反,我们要抱着一种科学的态度严格挑选人才。举例来说,一个职业篮球队需要一名右前锋,找到一名原来打左前锋的职业选手,问他能否适应右前锋的位置,可能会得到否定的答案。然而找一名业余的多面手,我们可能得到肯定的答案。但他的技术水平不行,最终还是要放弃。因此,我们要找的是高水平的专业人才。

软件技术的竞争归根到底还是人的竞争,对此,开源软件也不能例外。从技术层面看,软件的竞争,既不只是金钱的竞争,也不单纯是代码量的竞争,而更多的是创造力的竞争,也正因为如此,人才问题才应该被摆在软件业发展的首位,开源也才因为对于人才培养有着更好的效果而更具魅力。针对开源人才问题,IT评论人雁鸣先生一针见血地指出,当前发展开源急需两类人:运用开源技术的管理软件的开发者和开源教育的推广者。

在影响开源发展的因素中,政府支持一直是一个争议较大的问题。韩国的开源软件从业者已能自毫地说,他们的开源软件发展水平要远远高于中国的开源软件水平,这其中,政府的支持功不可没。另一方面,我们也能见到因政府干预而造成的种种负面作用。于是,政府支持是不是促进开源发展的灵丹妙药这个问题,就成了摆在中国开源发展道路上的一个大问题。

就政府支持的问题,洪峰认为在软件这场智力竞争中,首先应该允许多种形式并存;一方面需要有国家队的选手,另一方面也要有个人选手存在。其中,由个人选手组成的开源社区的成长与产、学环境有着很大关系。Linux为什么诞生于芬兰,而没有诞生于中国或是美国呢?原因就在于芬兰赫尔辛基大学从二十世纪七十年代就很注重操作系统的研究,积累了很多图书和代码。Linus正是在前人的基础上才创立了 Linux。然而,国内在产、学环境方面对开源的发展存在着诸多限制因素。如目前经费的支配存在着垄断,并不是每个有创意的人都能拿到经费。你要把你的思想和别人共享,就要出书,但出版业是垄断的;你要传播你的思想办教育,国家不承认你的文凭,你就招不到学生。因此,洪峰强调,在这个问题上,政府不应该当运动员,而应该是规则的制定者。要让所有的纳税人受益,政府所要做的是制定好游戏规则。开源的发展还是一个反学术垄断的问题。

洪峰同时认为,发展开源软件要抱着一种“入静”的心态,抛开浮躁。并不是要先把生活搞好了,再去搞开源软件,而一旦迈过了基本的门槛,回报就会来了。要知道许多开源软件项目的创立者在创立项目之初经济上也很贫困,但多年的心血换来的是一种超越层次的成功。但问题是目前整个环境太过浮躁,如大学中要求一年发表多少篇论文,但就是没有人统计这些论文中有多少获得过国际奖项,这些论文又有多少原创性。IT业的一大挑战就在于原创,创造出一种新思想,就会带来巨大的收益。创意产生于人的头脑,并不完全产生于军团做战。因此,政府需要为开源的发展创造一个良好的生态环境,这是政府支持中最为重要的一部分。

刘澎则认为,必须重新审视对待开源的保护策略,对待开源软件不能完全采取保护策略,如果把开源软件当作温室里的花朵,开源软件就永远也长不大。我们应该正视一个很有意思的现象:几千年过去以后,人人喊打的老鼠繁殖得比主宰这个世界的人类还要多,而人们视之为保护动物的老虎却进了动物保护园。目前开源社区在经济上遇到了一些困难,但中软、红旗、共创等开源软件企业自身经营也很困难,因此不可能指望他们资助开源社区。同时,国家的资金也应该只用来支持那些踏踏实实搞开源研究的人,而不应落入打着开源的幌子却在为自己谋私利的人手中。

事实上,影响开源发展的还有一个重要的问题,就是国内软件的有效需求不足。在凯恩斯看来,当企业找不到出路时,政府就应出面采取一些诸如启动公共工程建设之类的措施来刺激经济的增长。与此同理,政府也应该考虑在同等条件下,政府可以将采购需要更多地向国产软件(特别是开源软件)倾斜。中国工程院院士沈昌祥介绍说:“国内目前急需安全等级达到A级的操作系统,在国内开发不出A级操作系统的情况下,只好采用国外的产品,而在许多机要部门,这是一个隐患。正因为如此,国家正在下大力气开发A级操作系统,许多从事开源软件研发的机构找到我,要求得到一个机会。这实际上就是需求促进开源发展的一个例子。”

由此看来,在目前的情况下,开源的发展确实离不开政府的支持。而政府支持成为开源发展的灵丹妙药的前提,一是不能用包办代替的方法把开源管死,二是要在宏观层面结合开源发展的需求提供适时的政策帮助。

提起开源的发展,另一个不得不提的问题就是开源与产业的关系问题。业内专家普遍认为,发展开源软件可以促进软件产业的发展,而反过来,实现开源成果的产业化以后,又可以解决开源的商业模式问题,使得开源软件更好地向前发展。从这个角度说,开源与产业是一种互济的关系。

对开源与产业的关系,洪峰举了这样一个例子:在中国西部,人们由于吃不饱饭就想到了挖山,其结果是造成了生态环境的恶化,反过来,人们因此而变得越发贫困。这就形成了一个恶性循环。现在政策反过来了,政府开始鼓励人们种树、种草,并给予一定的补助。这样一来,生存环境改善了,就业机会也增加了,形成了一个好的循环,人们的日子就越来越好过。洪峰感叹,同样的方法为什么不能应用在开源的发展上呢?

倪光南院士指出:“政府原来的做法是支持五、六种 Linux,这样每家得到的支持力度又都不够。现在政府改为制订 Linux标准,去引导在 Linux上的开发,目前我国制订的中文 Linux标准已经引起了一些国家、Linux社区和跨国公司的关注。”一个产业的健康发展,需要不同厂商间的竞争与合作,而标准关系到整个产业链的各个环节,政府在其中的用意,完全可以通过信息产业部苟仲文副部长的一番话表现出来:“从以往看来,政府扶持企业,往往达不到政府所需的科研技术开发效果。即使达到了,又会形成新的垄断,企业往往不愿将研究成果与别的企业分享,最终还是达不到政府想通过个别企业来推动某技术产品在产业界形成主流产品的良好愿望。所以,我们政府在 Linux这件事上,将转向支持基础的、开放的、公共的、服务的能力建设之上,而不是光支持某些企业公司的发展,依靠他们来走这条路。”

早在二十世纪八十年代末,倪光南先生就提出了国内 IT业“无芯无魂”的问题,当时,倪光南先生的建议并没有得到普遍的重视。而在此之后,我们为了弥补操作系统的问题,走了一条封闭开发之路。试想如果当时我们就采用开源的方式解决这些问题,相信今日IT业的格局已不是这个样子了。从这一问题上,我们不难发现开源在整个IT产业中所起的作用有多大。

老话重提,今日的开源又走到了技术成熟而生态环境薄弱的十字路口,风险与机会混杂着摆在我们面前。面对着风险与机遇,我们必须明白,我们今天的行动将决定着经历了冰与火的融合之后的明天的中国开源的命运。