普通程序员、文艺程序员、2B程序员
- 可可 - 宇宙的心弦希望能引起广大苦逼的正在学或者已经学过c++人的共鸣和会心一笑吧. 如何辨别自己在现实还是虚拟世界.
这并不是想象的那么容易。简历上的工作经历并不能说明什么问题,因为卓越的程序员并非总是有“正式”的工作经验来说明他们有多优秀。事实上,简历上的工作经历往往会误导。不过,从简历中还是可以得到某人是否是卓越程序员的一些细微线索。
我觉得自己是一个非常优秀的程序员。同时,我也花费了大量的时间在商业圈,找技术人员做项目,面试别人等等。正是如此,我觉得自己有足够的经验去识别一个优秀的程序员,我会在下文中分享,希望能够帮助那些 “商业人士”更好地找到人才。那些有可能成为优秀程序员但还没有摸到门道的,也可以阅读这篇文章,从而发现自己需要改进的地方。
在Paul Graham的这篇《导致创业失败的18个错误》文章里提到:
在90年代,导致绝大多数创业失败的是那些劣质的程序员,很多这样的公司是几个商人共同创立的,他们有聪明的想法,然后让程序员来实现这些想法。但事实上要困难地多——因为那些企业家他们无法分辨一个程序员是否优秀。他们甚至都没有机会见到那些顶极的程序员。
事实上,那些商人选择自己认为优秀的程序员(比如简历上提到自己曾是微软的工程师),但事实上不是。然后会发现创业之路就像二次大战一样艰难。
如果你不是程序员,如何来挑选优秀的程序员呢?我觉得没有最佳答案。我想说你最好找一个优秀的程序员来帮你筛选。但你如何找到这个人?
这点上,我不太同意Graham。我觉得优秀的程序员有很多特质。即使一个商人也能识别。我下面来一一列举。
0. 激情
在我与别人合作的经历中,遇到过很多技术员:他们写程序,因为他们觉得这是份不错的工作。业余时间从来不会去编程。当他们知道我家里有一个局域网和 3台电脑时,显得很震惊。他们只是在工作,不会主动学习新事物,除非工作中需要,或者为了找份工作。当一天的工作结束时就再也不想谈论它了。有些人觉得工 作之余谈工作不适合社交。但如果你想结识一个优秀的程序员,体现出自己的激情是很重要的。
1. 自学并喜欢学习
时过境迁,编程语言也在不断进步和完善,新的技术会出现,新的标准也会到来。当然不是说,所有优秀的程序员都对那些事物有浓厚的兴趣,但有很多程序 员他们从来不会主动学习新事物,除非迫不得已,因为他们不喜欢学习新东西。这些人往往是在大学时学的计算机专业,然后渴望毕业后找到份好工作。
如果你打算雇佣某个程序员,只要提到“我能掌握那个,只要把我送到培训中心一个星期”。不要雇佣那样的人。优秀的程序员不需要培训中心。事实上,优秀的程序员会提到你从未听过的新技术,然后向你解释为什么必须用它,即使他都不知道如何使用。
2. 聪慧
有些商人觉得缺乏情商就是不够聪慧。事实上聪慧包括很多因素,情商只是其中之一。优秀的程序员不是不会说话,事实上,优秀的程序员通常是你认识的人 中最聪明的。他们中的很多人有很好的社交能力。我参加过几次 London Ruby User聚会,除了少数几个特例,大多数人都很聪明,善谈,兴趣广泛等等。但你不会在公众场合看到他们谈论,然后会想“这是怎样的一帮geek啊”。
不要认为那些话不多的人就是好的程序员。他们不是,如果在完全放松的环境下都不能很好地交流,他们不是优秀程序员的概率会很大。
3. 隐藏技能
这跟激情有关,也是优秀程序员的一个特征。
我在9岁时就开始编程,那时还不是在PC上,后来迁移到了PC,学了Pascal。当我14岁时,用C和Assembler写了一个 raycasting引擎。花费了大量的时间与显卡打交道,终于可以看到很酷的图形效果。在这之前,我只是个二流的程序员,没有信心做任何复杂的事情。当我完成它时,我收获了自信。我知道只要我想,再难的事情我都能搞定。
这会在我的简历上出现吗?不会
我深信大多数优秀的程序员都有类似的冰山不会出现在简历上。他们觉得这不是“合适的经历”。可以对那些潜在的优秀程序员问一个这样的问题“你能告诉 我一个自己独立完成的项目吗?即使是不完整的,在业余时间开发的,没有出现在简历上?”如果他们不能,他们很可能不是优秀的程序员。
4. 多种技能
这个很简单,由于对新鲜事物的热情和强烈的求知欲,那些22岁以上的程序员通常掌握好几门语言。这不可避免,学习一个新技术是最有意思的事情之一。
5. 证书
这其实不是一个优秀程序员的特征,很多有计算机相关证书,很多没有。年龄也一样,有些18岁就展露头角,有些40岁才有所成就。我的经历告诉我,大 多数平凡或者差的程序员大学时才开始编程,为了他们的计算机课程。而优秀的程序员编程的历史可以追溯到更远。如果你的准程序员在大学前没有接触过变成,他 所有的经历都是从第一份工作开始的,他很可能不是一个优秀的程序员。
声明
上面或者下面所说的特征不是必备的。你很可能会发现 NB的程序员不符合这些特征。我的观点是,你不太可能找到一个优秀的程序员不符合这些特征中的任意一条。当然,你也会发现差的程序员也符合这些特征中的某几个。但我深信,一个程序员,这些特征符合地越多,那么他是优秀程序员的概率就越大,作为一个商人,你可以信赖这些人。
总结
以下几个特征,能够帮助你找到优秀的程序员
- 对技术充满热情
- 编程是生活的一部分
- 会在你的耳边谈论技术相关的话题,如果你有兴趣的话
- 主动学习新技术
- 对自己不能认同的技术,感到不适应,无法全身心投入
- 聪明,对很多话题都感兴趣
- 在大学/工作之前就开始编程了
- 有隐藏的冰山,自己完成的大项目
- 对许多不相关的技术有了解
原文:Daniel Tenner
译文:李忠
-------------------------------------------------------------------
你可能对以下文章也感兴趣
Velocity 2011会议分享
敏捷软件测试的七个关键成功要素
Facebook是如何管理代码的
HTML5在移动开发中的现状
Scrum实施经验
-------------------------------------------------------------------