招聘一个程序员,唯一对你有意义的是他能写出好程序的能力。 很少人像这样去招人,他们更喜欢去挑剔程序员的个人癖好和性格缺点。
我一说出这样的话,人们大量的评论就会批评道:你错了,错了,完全的错了。 好的程序员需要具备沟通交流的技能,他们要有跟他人一起合作的能力。团队里不止你一个人! 事实上,人们会说:最好折中一下对技术上的要求,这样可以找出更能适应企业文化的人。
你不如这样说更合适:找不到那种技术上又好、又能适应企业文化的人,我就等着,一直找到为止。
我们很少有敢这样奢侈的公司,也许Google可以这样,就是Google这样的公司也一直处于一个“对招聘程序员感到绝望”的状态中。如果你决定去等,我可以预见到每招到一个程序员你都要等待一个漫长的时期,同时业务会因为缺乏程序员而崩溃,火烧眉毛。
那么,那种更好呢?
让我们来考虑要那些中等或下等的程序员,他们和蔼可亲,而且努力工作。 他们的程序写的不好–他们的程序根本不是按照他们想的那样工作,即使他们做到了,那也是烂程序,很难去维护。他们在基本的功能上挣扎探索,更不解决不了复杂的问题。但是他们却能跟上团队,项目进度每天点都在更新,可以看见他们每天都在座位上奋斗。一切都很好,你的经理会很高兴,因为整个团队看起来在平稳的向前推进。
当发布日期不得不往后推迟,产品Bug多的没法使用,人们会哀叹说软件本来就是很难做,于是投入更多的和蔼可亲的平庸的程序员去修复问题。 事情的结果我想大家都知道。
对于程序员,没有太多的事情可以用和蔼来解决。一个友善的平庸的程序员可以成为业务分析师,技术性的销售员,或着其它的能够利用他的和蔼和他的一点点的技术知识来工作的职位。这样的工作他们会很满意,但这都是在茶话会工作上的,可不是去找出有效的办法做出好的软件。
另外一个选择是,找个程序员,他能做出好的程序,但也许不善于和他人相处,或者老是迟到,或其他。他能开发出按照设计运转的软件,他能把复杂的问题抽象成一个简单的问题。软件好使,可维护,你随时可以按要求修改。
这个世界很真实,有太多的方式都会让我们把事情搞砸,但至少我们是有机会的。人可以给人留下不错的印象。团队可以建设的不错。员工在长时间的为你工作,不错。大量的业务没有按照预定的设计工作,但还是成功了,不错。但是绝对不会有伟大的软件会在平庸的程序员手下实现。.
证据就在代码里。 就这些。
[英文出处]:The proof is in the code. That is all.
有话要说