优秀程序员的首要特性:判断力

openkk 12年前
     <p> 公司在招聘程序员时,可能更注重开发者是否聪明,是否有深厚的开发技能等,但 Tammer Saleh 在 <a href="/misc/goto?guid=4958185704516872926">EngineYard</a> 中发表文章《<a href="/misc/goto?guid=4958197996574234944">The Number One Trait of a Great Developer</a>》中表示,判断力才是一名出色开发者所应具有的首要特征。下面是对该文的译文:</p>    <p> 我发现很多公司在招聘 Ruby on Rails 程序员时,往往注重开发者的三个主要特征:足够聪明、大技术社区中的知名度、深厚的 Ruby 开发技能。其实这些考察点并不正确。虽然这三大特性很重要,但他们却忽略了一名出色开发者所应具有的首要特征:判断力。</p>    <p> <strong>关于 Jack 和 Dianne 的故事</strong></p>    <p> Jack 是一个摇滚巨星。Jack 喜欢谈论世界上最酷会议中提到的最新发展趋势。他很重视在一个新项目中使用三种以上的新技术。当请他做一个基于互联网的控制后台,用于将烹饪方法与厨具进行匹配。他投入很大的精力开始做此事。最终该后台中用到了 Google Protocol Buffers、node.js,具有可扩展性,却很难维护。</p>    <p> Dianne 是一个优秀的程序员。最初 Dianne 是一个 Unix 管理员,两年前才开始做 Ruby 开发。当被要求开发一个同样的系统时,她首先问了以下几个问题:</p>    <p> “预期会有多少厨具?”</p>    <p> “我们希望12个月内卖出500套厨具。”</p>    <p> “需要多长时间出一份报告?”</p>    <p> “大概一小时一次。”</p>    <p> “这网络的可靠性如何?”</p>    <p> “使用 WiFi,它很稳定。”</p>    <p> Dianne 使用 MySQL 数据库写了一个 RESTful API 结点。PostgreSQL 可能更适合,但她只懂 MySQL。</p>    <p> Dianne 采用的这个解决方案可以扩展到1万个用户吗?不能,但这个系统并不需要这样做。Dianne 的解决方案很简单、容易理解,具有更好的维护性。Dianne 知道它并不是最简洁的解决方案,但她却知道任何更复杂的事都会超出她现在的能力。</p>    <p> <strong>判断力很重要</strong></p>    <p> 当给定一个很有趣的“问题”时,没有判断力的开发者就会陷入精心设计最简洁解决方案的陷阱中。他们总会有一种很自然的欲望而导致过度设计该解决方案,要么追求复杂度、速度和功能性,要么很简单地找机会演练一下他们所掌握的新技术。他们需要时常被检查,以确保不会在半路掉进“兔子洞”里。</p>    <p> 更遭的是,他们并不知道什么时候才超出他们的能力,所以他们总会在整个项目中留下代码炸弹。</p>    <p> <strong>雇佣有判断力的员工</strong></p>    <p> 我会让我的团队判断应聘者是否聪明,是否适合我们的文化。而我负责判断他是不是有很好的判断能力。为了做到这一点,我会带他出去喝啤酒,并两个主要的问题:</p>    <p> 1. 对于 Ruby 和 Ruby on Rails 框架,你最不喜欢哪一部分?为什么?</p>    <p> 2. 请告诉我你最后一次使用的很有趣的技术?你从中学到了什么?</p>    <p> 这些问题可以很好地帮助你,让一个开发者充满热情地谈论他们在什么时候充满激情,在什么地方情绪低落。从中你可以了解到很多,他们是怎样的人,他们来自哪里。他们是否喜欢 NoSQL 这种数据库?他们是否了解什么时候不能使用它们?他们是否了解多线程编程中最难点?他们是否喜欢使用函数式编程、哈希函数,原因是什么?</p>    <p> 原文链接:<a href="/misc/goto?guid=4958197996574234944">The Number One Trait of a Great Developer</a><br /> <br />      来自: <a id="link_source2" href="/misc/goto?guid=4958197996574234944" target="_blank">www.engineyard.com</a></p>