2010年11月26日星期五

明星软件工程师的十种特质

  如今,每家公司都似乎成了科技公司。从软件创业公司到投机性投资公司、制药巨头和媒体巨头,它们都越来越多地加入到软件业务行列。

  代码质量不仅成为了一个必需品,更成为了一个竞争优势。因为众多公司围绕软件而竞争,开发软件的人——软件工程师正显得越发重要。但是,你该如何发现那种百里挑一的程序员呢?在本文中,我们简明扼要地列出了明星开发人员的10种特质。

明星软件工程师的10种特质

  1. 热爱编程

  编程是一种为了满足兴趣而心甘情愿去做的劳动(Programming is a labor of love)。和其他任何职业一样,唯有真正的热情,才能完成真正的伟大事情。这里有个误解,认为编写代码是机械化并纯科学性的。事实上,最优秀的软件工程师是工匠,他们能把能量、独创性和创造力融入到每一行代码中。伟大的工程师知道何时该把代码雕琢至完美,知道何时把大型系统像拼图一样组装到一块。热爱编程的工程师从构建软件中获得满足,就好比一位作曲家在完成一部交响乐后而欣喜若狂。正是兴奋感和成就感,才造就了喜爱编程的明星工程师。

  2. 完成事情

  有很多技术人员只谈论软件而不编写代码(只说不做型)。而伟大软件工程师会真正去编码,这也是他们最为重要的品质之一。他们是实际做事的人。聪明人都知道,解决问题的最佳途径是直面问题,而不是花上数周来设计复杂又不必要的架构和函数库。优秀工程师应当会问:解决手头问题的最简单方法是什么?最近的软件开发方法——敏捷实践,正是专注那个。它的思想是,把复杂的项目拆分为短小的迭代,每个迭代只关注一小部分的增量功能。因为每个迭代对应的编码只需要数周,所以功能易于管理并简单。

  3. 持续重构代码

  编码很像雕刻。要像艺术家一样不断完善自己的作品,软件工程师也要通过可能的最佳方式来持续完善自己的代码,以达到目标。重新塑造代码的原则称为“重构”,Martin Fowler在他的创意书中有相应描述。重构背后的原始思想是:改善代码而不改变其功能,移动调整部分代码以确保系统不腐,还有确保系统完成基于当前需求该完成的事。持续重构可以让开发人员解决另一个著名的问题——“黑盒遗留代码”(这个问题基本无人想触及)。

  几十年的软件开发文化要求我们,不应该去改变正常工作的东西。然而,随着时间推移,问题是我们成为了老旧代码的奴隶,老旧代码变得不稳定和不兼容。而重构正好可以改变这一状况,因为我们是代码的主人,不是它的奴隶。重构在工程师和代码之间建立起持续的“对话”,并带来所有权、确定性、自信心和系统的稳定性。

  千万不要成为老旧代码的奴隶。如果代码是他人所写,或许你可以轻易推脱责任。但大多数时候,那些代码是自己所写,要拿得起放得下,旧代码该埋时,就把它埋了!

  4. 使用设计模式

  自从所谓的“四人帮”(Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides)发表他们的著作——《设计模式》后,全世界的软件工程师一直都在讨论模式。在我们所处世界,不管是自然界还是人类行为,模式无处不在。软件工程自然也不例外。模式就是不断重现的跨语言跨系统的场景和机制。一位优秀的工程师通常能识别并利用模式,而不是受制于模式。工程师不应(强制)让系统去适应某种模式,而需发现在系统中使用模式的时机(恰当使用模式)。在使用模式来确保正确性时,应借鉴利用前人的智慧结晶,使用以前能正当解决特定工程问题的方法。但请切记:模式不是万灵药;不要为了使用设计模式而使用设计模式。

  5. 编写测试

  曾有段时间,软件工程师们认为测试不值得他们去做。然而,如果你不做测试,你怎么能确保代码就能正常工作呢?敏捷实践中的“单元测试”已获得普遍认可,因为它注重编写测试来反映代码是否有效。随着系统增大,测试也随之增大。有经验的工程师知道并了解测试的价值所在,因为测试的目的就是创建一个能正常运作的系统。优秀的工程师通常会确保出现过一次的Bug不会再出现第二次。但优秀的工程师也知道,不应该浪费时间写那些琐碎或多余的测试,而需要专注测试各个组件中的核心部分。

  6. 善用现有代码

  “重新发明轮子”一直是软件行业中的巨大问题之一。从发明新语言到从写函数库,忽视并重写那些已经存在并已能工作的奇怪驱动力,已经造成大量软件开发的失败案例。一位明星工程师会专注三种基本类型的重用:第一,内部基础架构的重用,相应代码是他自己或同事编写的;第二,使用第三方的函数库,比如JDK.最后,研究使用某些大型网络服务商提供的相应服务,比如Amazon.总之,正确善用现有的代码,使得软件工程师能真正专注于最为重要的事情上——应用程序本身。

  7. 专注可用性

  优秀的工程师通常都专注于用户。无论用户是企业还是个人,无论是为消费型的软件公司还是投资银行,需要关注的都是可用性。用户如何和系统交互?系统是否提供一种简单、直接和平稳的操作体验?有种说法,因为软件工程师是技术人员,他/她和“用户如何与系统交互”没有关联,这种说法严重错误。优秀工程师努力工作是为了什么?不正是让系统简单并易于使用。他们无时无刻都会想到用户,不会尝试去发明那些令人费解,只有极客才能理解并欣赏的东西。

  有些时候,一些软件工程师过于投入,反而忘记所编写的程序/软件,是供他人使用,不是做给自己看的“艺术品”。所以,在软件开发过程中,一直要把“用户”放在心中。

  8. 编写可维护的代码

  软件开发界的另外一个小秘密是:编写优秀代码和糟糕代码所花费的时间是一样多。一位训练有素的工程师,他/她会从第一行代码开始就考虑可维护性和代码的演化。没有任何理由编写“丑陋”的代码、长达数页的函数,或是稀奇古怪的变量名。优秀的工程师编写代码会遵循命名惯例,代码编写紧凑、简单和不过度炫耀聪明。代码的每一行,都应恰如其分地展现出其原有目的。在给不便理解的代码(块)合理注释时,别忘了命名规则。清晰明了的函数名和变量名可以让代码不言而明。

  在编码时,有些程序员会有这种心态:过一会儿再来修改或完善某部分代码或某条语句。但谁知这一“过一会”竟然是“一天”、“一周”、“一个月”或“一年”,甚至以后根本就没机会再回头修改。所以,尽量别妥协写出暂时堪用的代码。否则,不仅不会节省开发时间,也可以阻碍整个进程。当然也不利于后续维护人员的工作。

  9. 能用任何语言编程

  优秀的软件工程师活血有自己一门特别钟爱的编程语言,但从不会执迷于当中。如今已有很多优秀的编程语言,也就是说,如果你只会使用其中一门语言,说明你缺乏多样性。你可以用Java、C#或C++编写任何现代软件,可以用PHP、Perl或Ruby编写任何网站的后台。简而言之,编程所用语言,远远没有语言相应的函数库重要。优秀的工程师能够认知到这一点,并愿意去学习新语言、新函数库和构建系统的新方法。

  10. 知晓基本的计算机科学知识

  最后,但肯定不是优秀工程师最不重要的特质就是:扎实的基础。优秀的工程师或许并没有计算机科学的学位,但他/她必须知道基础——数据结构和算法。如果不知道哈希表,或者不知道链表和数组之间的差别,你如何构建一款大型的软件?。这些都是每位从事软件开发的开发人员应当知道的。算法也同样重要,从二分查找到各种排序,到图形遍历,一位明星工程师必须知道并内在消化这些基础东西。因为这些基础就是你在构建任何现代软件中做抉择时的必备品。

  结束语

  以上就是区分伟大软件工程师的诸多特质。其中讨论的“热情”,是非常重要的。代码重用、设计模式、基础数据结构和算法都是必须知道的,而敏捷实践中的重构和单元测试则有助于工程师应对复杂的软件。尤为重要的是,明星工程师相信简洁和常识。也正是这些信念,帮助他们成功构建当今世界所需的看似不可能又错综复杂的系统。

  来源:伯乐在线投稿,原文链接

新浪微博微群功能上线

  以前曾经给新浪微博提了一个建议,就是实现类似Facebook的群组功能,一个群组可以是一个封闭的小圈子,用户可以在里面发言,外部无法看到,就和QQ群一样,加入群组需要审核,管理员可以删除用户,这样就可以实现团队微博或企业微博的部分功能了。

  其实,新浪微博以前曾经开发了一个“新浪乐居”,是一个以房产为主的微群,但运营并不太成功,而在今天,感恩节之夜,新版的新浪微群功能出来了,我访问进去看了一下,竟然发现新版微群已经实现了我当初提的几点建议,微群管理员可以将其设置为“私密群组”,使其发言只能被群友看到,外部看不到。

  微群将对QQ群和豆瓣小组等网站产生一定的竞争关系,目前新版的微群功能还是较为简单,和微博类似,如果微群的竞争目标是腾讯QQ群的话,那应该还需要支持上传文档、通用格式的文件等功能,最好再支持日历、投票和问答的功能,管理员或用户可以给发布的信息增加Tags(主题),管理员可以将信息增加为精华等Tags类型,那样的话,微群就将成为QQ群的一个有力竞争对手。

  目前一个用户可以创建3个微群,满足以下条件才能创建微群:1.上传头像,2.粉丝达到10人,3.微博超过10条,4.已创建微群不超过3个。

  新浪微群比腾讯QQ群的好处在于:1、免费。2、成员数更多。3、所有发言都会保留待日后查看。4、发布信息可带标签。5、可针对信息评论。不足之处:1、发布信息方便性不如QQ。2、发布信息140个字,无法发布长信息。3、贴图不方便。4、不支持上传任意格式的文件。5、没有群相册和群共享。6、目前还不支持手机访问。

  微群(QQ群)如果设置为“开放群”,在运营上其实风险挺大的,像QQ群那种私密群还经常面临审查,“开放群”就更危险了,一旦出现所谓的“有害信息”,就会遇到监管的麻烦,因此设置为“私密群”对于运营来说更为“安全”一些,外部只能猜测群里可能有有害信息,但却没有证据。

  新版微群的地址是 http://q.t.sina.com.cn ,目前的新版微群仍在内侧阶段,需要通过邀请码才能访问。下面是Mr_Janco网友发布的新浪微群的试用体验。

新浪微博微群功能上线

  新浪微博微群功能上线将兴起微博小组化讨论(作者Mr_Janco

  11月25日,内测已久的新浪微博微群功能上线,微群的前身是新浪微博“乐居微群”,乐居微群因界面不友好,以及没有隐私设置等功能,一直得不到认同,新浪也没有将其集成到微博中去。而这次上线的微群功能则比较成熟,下面来看看新浪微博。微群的几个新特性。

  微群首页

  新浪微博。微群,登录后,首页列出了最近更新的微群以及两条最新微群消息、今日微群微博、新成员数,而点击“按时间查看”,可以看到所加入微群中所有最新的微博,用户可以更直观地了解自己所在微群最近的情况。

  微群内部界面

  与乐居微群有所不同,微群的群内发布微博按钮左边多加了“同时发送到我的微博”选项,默认情况下是不勾选的。另外,就算选择了“同时发送到我的微博”,发布后的微博结尾也不会像以前乐居微群那样留有微群名+微群地址的尾巴。

  微群管理隐私保护

  值得一提的是,微群管理中的隐私保护,多了一个非常实用的功能,就是选择微群类型。当选择“私密群组”,配合“需管理员批准后才可加入”选项,微群所发布的信息将不会被外界所看到,也就是先了小组私密谈话,开秘密会议等活动形式。

  相信在不久之后,新浪微博会将微群的链接放到微博顶部,并且完成新浪微博官方客户端和开放平台API的跟进工作。手机客户端普及微群功能的话,无疑是对传统IM的一大打击,基本上IM能够实现的功能,微博都实现了。新浪微博能否打败腾讯QQ,大家拭目以待。

2010年11月25日星期四

黑莓封杀Kik Messenger

  最近异常火爆的跨平台社交短信软件Kik在其官方博客上,Kik被黑莓RIM封杀,黑莓用户已经无法下载Kik客户端。

  Kik Messenger是一个社交短信服务,目前在Android、iPhone和黑莓平台都非常的火爆,他可以实现跨平台之间的信息交流。Kik Messenger在表现形式上很类似手机的短信,但其是利用网络而不是运营商发送短信的软件,其速度非常快,并且完全免费,界面也非常简洁和易用。

  Kik Messenger支持三个手机平台(Android、iPhone和黑莓),其用户增长模式是爆炸性的:10月19日发布到3个智能手机平台,两个星期后用户就超过1万,而到了现在1个多月后,Kik已经拥有超过250万用户,其中有近100万黑莓用户,并且Kik的用户量还在不断增长。

黑莓封杀Kik Messenger

  因为RIM有着自己独特的黑莓手机内置集成IM软件BlackBerry Messenger(俗称BBM),其功能和Kik几乎一样,但不能跨平台运行,只能在黑莓手机用户里使用,而Kik的跨平台特点让黑莓用户也可以和其他平台用户进行通讯,从而对黑莓的固有用户群产生了威胁。

  因此,RIM做出了一个艰难的决定,将Kik Messenger从黑莓的应用商店中下架,对于已经安装Kik的黑莓用户,则关闭了PUSH功能,使得Kik的消息传递会延时长达一个小时,RIM还禁止Kik访问黑莓软件开发工具包和签名钥匙。RIM官方对Kik Messenger下架给出的说法是“考虑到用户隐私问题”。

  目前Kik Messenger的iPhone和Android用户不受影响。

  Kik做为一个创业型的小公司,RIM公司的这个决定对其产生了巨大的打击,因此Kik在官方博客里呼吁,RIM应采取开放的心态,倡导黑莓形成一个良性的开放平台生态系统,否则将会严重打击第三方开发者的积极性。

  iPhone和Android用户下载Kik的地址是:http://www.kik.com/download.php

2010年11月23日星期二

新浪首届微博开发者大会资料

  新浪主办的中国首届微博开发者大会在11月16日在北京举行,此次大会剖析了整个产业的发展趋势和机遇,解读了微博平台的开放理念,作为微博行业的首场技术盛宴,本次大会吸引了行业专家、草根网民尤其是各类第三方开发者的普遍关注。

  新浪在本次开发者大会上公布的最新数据显示,截至2010年10月底,新浪微博用户数已达5000万,新浪微博用户平均每天发布超过2500万条微博内容,每秒钟产生微博785条,每天微博带来3000万的流量。

新浪首届微博开发者大会资料

  以下是大会嘉宾演讲视频资料

  曹国伟:从门户向平台转变 - 希望微博能够成为中国社会发展的引擎,改变网络生活。

  李开复:互联网发展四大趋势 - 微博其实是满足了每一个人非常原始的一种欲望。

  彭少彬:中国式微博的奇迹 - 所有的奇迹都源于新浪微博,它成为了新媒体时代的缔造者

  蔡文胜:微博开放而公正 - 新浪微博有两个重要点,一是公正,二是开放。

  沈南鹏:微博是重要营销手段 - 推动把微博作为一个很重要的营销的手段和工具。

  无线互联专场

  王煜全演讲:无线开放平台的发展与未来

  许士彦演讲:从Weicon看如何设计优秀的第三方应用

  郑书仁演讲:微博在智能手机中的爆发点

  陈石演讲:打造手机上网的开放式体验

  开发者与技术专场

  汪华演讲:互联网创业者的机会

  王明功演讲:微博平台产品和应用

  杨卫华演讲:微博平台架构和安全

  陈理捷演讲:在SAE上开发高性能的微博应用

  演讲PPT收集

  PPT是根据现场照片整理制作的,下载地址

2010年中文互联网开放式评选

  2010“ChinaMode零零壹”中文互联网开放式评选,由中文网络科技领域饱含理想热情与原创活力的25位独立博客共同发起,旨在动员普通网民提名和投票,选择出过去一年他们所关注和喜爱的网络应用和服务。

  以关注创业公司和创新应用为宗旨,以让有着相同热爱和志趣的人们彼此遇见、互有助益为诉求,以一个舞台连接无限的创想,放大草根的声音和智慧。换一个角度记录我们的互联网2010,换一种方式为创业路上的人们加油喝彩。

  2010年让我们感到最为兴奋的,是App Store和3G带来的一个真正的生态系统和创业环境,虽然还不成熟,但是却在往着良性的方向发展;2010年真正值得让人纪念的是在这个复杂的环境下,还是那些摸爬滚打的创业者和创业公司们。他们需要被更多的人发现而快速成长。“ChinaMode零零壹”评选因此而诞生,希望让更多的创业公司和创新应用,通过这个评选活动被发现,关注和嘉奖。

  请点击往年回顾了解过往评选结果

  详情尽在官方网站: http://chinamode.org/

2010年11月22日星期一

工信部应先进行自我批评

  3Q大战以一种怪异的方式完美落幕,工信部经过慎重研究后正式对两家公司提出批评,要求两家公司:“确保相关软件兼容和正常使用,5个工作日内向社会公开道歉。”腾讯道歉公告中表示:“这不是最坏的时刻;也没有最好的时刻;让我们放下愤怒;让我们保持敬畏;让我们打开未来之门。在政府的推动下,我们一直渴求的”阳光下的竞争“时代终将到来。”而奇虎360表示:“在注重创新的同时,更兼顾产业的和谐;在敬畏用户的同时,更兼顾有序的竞争。”

  从这些字里行间似乎我们能发现以前的竞争是不阳光的、无序的,为了利益可以不择手段的,用户是可以不敬畏的,产业是不和谐的。处在这样的产业环境大家都在怕,360怕腾讯撬走自己的饭碗,腾讯怕360绑架自己的用户,面对互联网行业如此恶劣的产业环境,工信部在批评3Q之前是不是应该先进行自我批评?

  首先如果有互联网行业有较完善的反垄断、反不正当竞争机制,那么360怎么敢强奸腾讯QQ软件,“帮助”QQ去广告,“帮助”QQ用户变得更安全,这种行为纯属流氓小混混的不正当竞争作为,但是360是被逼的,怕腾讯真革了自己的命。如果有互联网行业有较完善的反垄断、反不正当竞争机制,那么腾讯QQ怎么敢悍然宣告与360不兼容,这种做法纯属蹩脚的滥用垄断地位做法,但是腾讯也是被逼的,怕360真把自己的收入砍掉一大截,然后取而代之。

  他们都在怕,怕什么?怕流氓、怕垄断、怕不正当竞争,他们一边高呼着反流氓、反垄断、反不正当竞争却又用着这些手段打击竞争对手,他们受着伤却又同样去伤害别人,他们怕的其实不是手段本身,他们怕自己是受不是攻。中国互联网遵从流氓法则、丛林法则、原罪法则,只要你以后成功了,没人会记得你当年做过什么。

  而这一切都和工信部脱不了干系,作为互联网行业的主管机构,没他们有担负应有的责任,直到现在互联网没有任何限制不正当竞争和垄断行为的专属法律,没有任何一家公司对于不正当竞争与垄断有过血淋淋的记忆,没有对互联网用户隐私的定义和保护机制。功不奖,过不罚,互联网风气何以为正!

  那工信部在互联网究竟做了什么?花费2000万采购声名狼藉的绿坝,最后迫于压力不了了之。采用多种备案、审核、执照的方法对互联网进行严格管制,限制互联网创业公司的发展。每年开一次互联网大会,享受大家波涛汹涌的MP,和大佬们一起畅谈业界走势。配合CNNIC搞搞中文域名,圈中小企业的钱。召集一群专家,讨论一下网站实名制的前景。

  所以工信部你能不能更靠谱、更给力一点?制定一些法律法规来反流氓、反不正当竞争、反垄断,让互联网创业者不用再人人自危?做好自己该做的,自己不该做的就不要去做,不过在这之前工信部应该向中国所有互联网公司、中国所有网民诚恳道歉。

  来源:XJP投稿,原文地址

工信部批评360公司和腾讯公司

  11月21日晚间消息,工信部通报批评360与腾讯,将调查两公司涉嫌违法行为;责令两公司停止互相攻击并公开向社会道歉,妥善做好用户善后处理事宜。

  以下为通报全文:

  关于批评北京奇虎科技有限公司和深圳市腾讯计算机系统有限公司的通报

  北京奇虎科技有限公司、深圳市腾讯计算机系统有限公司,相关互联网信息服务提供者:

  近日,北京奇虎科技有限公司和深圳市腾讯计算机系统有限公司(以下简称两公司)在互联网业务发展中产生纠纷,采取不正当竞争行为,甚至单方面中断对用户的服务,影响了用户的正常业务使用,引起用户不满,造成了恶劣的社会影响。事件发生后,工业和信息化部高度重视,会同相关部门及时了解情况,平息争议,坚决维护用户合法权益和市场秩序。经研究,现对两公司通报批评,并对两公司及相关互联网信息服务提供者提出如下要求:

  一、 责令两公司自本文件发布5个工作日内向社会公开道歉,妥善做好用户善后处理事宜。

  二、 责令两公司停止互相攻击,确保相关软件兼容和正常使用,加强沟通协商,严格按照法律的规定解决经营中遇到的问题。

  三、 我部将依据职权,会同相关部门对两公司涉嫌违反相关法律规定的行为进行进一步调查处理,责令两公司做好配合工作。

  四、 责令两公司从本次事件中吸取教训,认真学习国家相关法律规定,强化职业道德建设,严格规范自身行为,杜绝类似行为再次发生。

  五、 相关互联网信息服务提供者要引以为戒,遵守行业规范,维护市场秩序,尊重用户权益,共同促进互联网行业健康、稳定、持续发展。

  工业和信息化部

  二O一O年十一月二十日

  之后,360公司腾讯均在其首页向广大网民发出道歉,诚挚地向用户致歉,并表示腾讯与360软件、网站已全面兼容。

  经过稍后的实际测试,360的确已经和QQ空间完全兼容了。360接着也再次弹窗提示,将360浏览器又进行了更新,不再默认修改User Agent来伪装IE浏览器,不选“统一IE和360安全浏览器的User Agent标示(重启后生效)”后,重启之后也不会自动勾选了。

伪装IE浏览器