软件开发的主要工作是编程,我从小十分喜爱电脑上的软件开发,这个小我指的是最早在大学里接触大型计算机,当时用穿孔卡上机,后来开始使用IBM的个人电脑,PC。记得当时中国人十分聪明,发明了GB码,采用双位ASCII码来表示中文,结果不需要特殊的硬件和键盘,直接在DOS下就可以输入和显示中文。 我在这里并不是要回顾电脑编程的过去,作为软件开发工程师,大多数人的共同感觉是干这一行虽然的确十分有趣,但是必须不断地更新新的技术。风靡一时的技术、语言或系统,也许没过几年就会成为陈旧的语言是技术,新语言尤其是技巧、技能不断出现,编程人员需要紧紧跟上学习更新。这张不断地学习知识,提高技术能力,对于许多人来说却是一个十分头疼的事情。如果你还不知道什么是StackOverflow (简称SO,我估计大多数人都通过谷歌搜索见过,但不一定知道其真谛),下面我给编程人员介绍这个可以借助高手寻找编程答案和学习新技术和的捷径。 StackOveflow:编程人员的社交网络 我喜欢收听各种podcasts,相当的一部分是有关IT和软件开发的,我从中得到许多新技术的动态和资讯。几年前我从一微软高手的播客中听到介绍SO,我还清楚地记得,当时创办这个网站的团队力图创建一个能够让编程人员相互交流帮助的Q&A(问与答)网站,他们说虽然有不少软件高手乐于写博客,参加各种论坛或讨论区,但实际上有相当人数的高手既不写博客,也不怎么参与各种论坛,一是这些奉献的努力很难持久,二是网络上的服务都不是那么方便即时。因此他们提出一个让编程人员自主参与和相互评分的网站服务,他们设计了一系列奖牌等级,根据不同的参与,参与者可以得到相应的积分和奖牌。这种民主的投票方式和公平的奖牌制度可以反映参与人员的水平,同时也创造一个竞争的环境。结果这一服务经过宣传推出之后,网站的服务器第一天就爆满,SO立即在软件编程人员中掀起一股热潮,受到软件专业人员的追捧,很快在许多软件影响圈受到推崇。 听到这一新的网络服务网站的消息之后,我当晚回到家后即刻查询,结果发现这的确是一个非常有意思的网站。 登陆的方式是采用各种网站支持OpenID的登陆名,不用另起用户名和密码,而是采用其它网站的OpenID来登陆。一经注册之后,注册用户即可提出和解答问题,也可以对各种讨论,并可行驶其权力给提问、解答和评论加分或减分。每年SO有一次投票选举,用户提名或自愿申请管理委员会,经过热烈的讨论之后,被推选上的人员开始行驶管理和仲裁权力。 我立刻被SO所吸引,我发现SO是一个非常棒的资源。我一开始定下的原则是不是追求得分的高低,只是充分利用这个网站解决我工作和学习中遇到的各种编程难题。我结果发现SO的解答是相当迅速的,一般的情况下,在5到10分钟之内,我就得到各种答案,许多答案都是高手的解答,这些解答都是我做不出来的。因此我开始形成一个习惯,如果有一个难题我一时找不到答案,或者我不确定是否是最佳和简练的方法,10分钟到半个小时内我解决不了的问题,我马上上SO提出问题。有时,我晚上在家上SO浏览或提出问题,有时睡觉想着整理我的问题思路和条理,第二天提前起个大早赶紧上网提出问题,等我赶到公司上班,打开电脑,我就得到让我叫绝的解决方案,我有时情不自禁“哇!”的一声大叫,引起周围的人员不解皱眉,但我即刻就可以迅速展开我的工作。 SO对于我们这些非英文的IT人员来说,这也是一个非常好的锻炼英文能力的地方,通过提出问题,可以学会如何将提出的问题表述清楚。有时有些问题是比较难以清楚表达,这时就需要好好整理自己的思路,将问题简化,而不是将实际问题或无关的枝节全盘托出,经过思路理绪,这样提出的问题效果最好。 通过SO上的交流,我也学会了如何和其他网友的友好往来,一般我对于能够给出提示和答案的人都加一分,但不急于确定谁是问题的最终答案(被确定答案的人可以得两分),而是耐心等待,有时会得到更好的答案。另外对于有些问题,也许会得到评论,这时需要解释互相往来。有时发现提出的问题文字或逻辑有问题(尤其是长时间没有答案的情况),这时就需要编辑修改。我认为SO一个非常好的练英文园地,这种相互真人之间的交往是不可多得的学习和锻炼的机会。 Q&A实例 这里举一个我最近在SO上提出的一个有关如何使用VIM替换的问题。VIM是计算机编程最古老和功能最强的文字编辑系统,我想使用该软件的功能将一段文字用替代的功能转换为一段C#程序的编码。我认为我的问题是VIM的高级替换技巧,在谷歌上很难找到解答。下面是我的问题图像表达: 上面的图像都是我提问中写的编码过程,SO提供非常好的编辑系统,主要是针对程序问题。这里介绍一个小技巧,如果键入四个空格,之后的文字就会自动转换为编码的显示,这样很容易写部分编码的实例。 结果几分钟之后,我立刻得到答案。我提出这个问题有两个目的,第一是希望得到解答,第二个是我的主要目的,希望通过各种答案用实例学习VIM的高级替换功能。结果我仔细研究学习这些实际的答案,我理解和掌握了VIM的高级替换技巧,在非常短时间内长了不少知识。 SO和相关网络社交是非常丰富的资源 我使用SO多年,我不是追求得分,而是利用其解决我编程中的许多难题。但从中,我发现许多人都是热心的软件高手,看看他们的得分和覆盖面相当广的知识技巧,我都赞叹不已。在这个过程中,我的积分也逐渐提高,截止目前为止,我在SO上的积分是2391。这些都是其他编程软件人员给与的评分,综合各种因素,我目前在SO的综合表现名声为前15%排名内。据说,在美国,许多公司甚至将SO的得分作为找工作的标准和基本要求。如果连SO都不知道,作为编程人员,在社交和网络搜索方面的能力也许要打一个大的问号。 SO只是属于编程人员的问答社区,其它问题不能投入,否则会得到减分,问题和解答将会被删除。但SO的巨大成功,相关的社会网区现在也陆续推出,比如如何使用电脑的社区,系统管理社区,甚至出现其它的社区,如数学,英文,等等。相比较而言,SO仍为最活跃的社区。另外SO的每个用户都有RSS feed,如果你对那些高手感兴趣,希望跟踪他们的提问和活动,你可以订阅这些RSS。 数年前,SO的成功,引起了中国软件编程人员的极大兴趣,有一些人主动与SO联系,希望推出中文的SO,建立姊妹联系,但我在SO的播客中听到主办人推辞了这一要求,他们认为编程的基本要求是英文,并不认为中文可以作为一种语言来讨论编程问题。我当时不敢苟同,但SO坚持对此提议不感兴趣,结果这帮中国软件高手们复制了SO的模式,在中国建立了为中文编程人员开创的社交网络。我当时立即登陆注册,但是几年下来,中文的SO的确是冷冷清清。希望国内的编程人员积极参与,能够开创一个为会中文的编程人员有价值的专业社区。 SO的模式也许是仿造其它已经存在的网络社区,也许SO的巨大成功让许多类似的让参与者组织的网络社区陆续出现。不论怎么说,我是非常喜欢这一社交网络,我从中得到不少收益。 结束语 电脑技术的发展虽然日新月异,我们各种不同层次的使用者都会遇到各种疑难问题,如果按照传统的方式,自己苦思冥想,或者阅读大量文献图书,上网从茫茫大海中寻找,这都是一个非常花精力和时间的艰苦过程。人的一生时间短暂,如果我们能使用社交网络的力量和智慧,帮助我们解决问题,迅速学习和交流技术和技能,我认为在某种意义上是延长了我们的寿命,因为我们可以在短时间内可以解决问题,丰富我们的知识。我是以提出问题为主加入SO社区网,在这个学习、使用和分享的过程之中,我发现我的问题越来越少,正是我从中得到巨大的好处,我现在也开始利用空闲时间来帮助其他网友解答问题。 对于许多中文为母语的IT编程人员来说,希望你能发现SO会给你的工作和学习带来无穷的收益。我从社交网络中得到收益,因此我的简单格言是: 生活是美好的,分享使得我的生活更加丰富美好,让我尽情享受和分享美好生命的时光! Life is beautiful, and sharing is wonderful. Enjoy and share my life! 参考资料 我的RSS |