编者按:下面的文章编译自Oren Eini(网名Ayende Rahien)最近的一篇博客。Oren本人是常驻在以色列的一位开发者、架构师与软件咨询师,微软MVP,Rhino Mock和NHibernate等项目的作者,常写博客,常在全球会议上进行分享。平时,他的博客主要介绍技术本身或技术会议方面的信息。而这次,他开始吐槽了。以下为正文:
我是真的怒了。在我说明原因之前,先介绍一下背景。
一般而言,当程序员来应聘Hibernating Rhinos的工作时,我们会要求对方提交一些自己完成的代码。如果代码与开源项目相关,他们会得到奖励分。
然而有些人吧,似乎不能理解这个要求。下面是我得到的一些回复。
我不知道是否能把代码发给你。我需要问问我的老板。(好吧这真是很傻,你要拿公司的代码展示给其他另一个想要雇佣你的公司。)
代码在这儿,但请别告诉别人。(一般看到这种我就直接删除了,删除之前给对方回信教育一番知识产权的重要性。)
这是我在学校期间完成的项目代码。(我今天这篇文章就是因此而写。)
就是这样。如果你不是因爱好而编程,那么你不适合做Hibernating Rhinos当中的一名开发者。为了便于理解,下面介绍几个我们这儿正在进行的项目:
犹太圣经代码库 – 显示、评论系统
犹太圣经代码库 – 搜索、管理系统(注意,这两个项目由两个不同的开发者发起,两者之间并无关系)
针对Android,iOS,WP7的音乐游戏App
个人财务管理App
针对.NET的自动更新代码库
其他一些开源项目
其他可能还有一些我不知道的项目。(而且我要说的是,这些项目是他们在上班时间之外的个人时间完成的。而且,没有任何人告诉他们应该要做这些。)
这两件事之间有什么关系?就是因为我总是见到这样的人,他们以为在大学期间完成的什么零碎代码足以表现他们的高超编程技能。
好吧,这也并非不可能,不过想想看,你在大学期间完成的项目都是什么样的?它们通常都是非常细小的项目,而评判代码是否符合标准的人,则不知道是哪个疯狂的教授。通常而言,这样的应聘者并不会有多好。
下面,跟大家分享一句我最近收到的代码:
privatevoid doSwap(ref Album io_Album1, ref Album io_Album2)
这是一句C#。通过这一句,你大概也能想象出来整个项目的代码是什么样子的。这一句话至少暴露出下面几个问题:
违反了.NET框架的命名规则(方法名称)
违反了.NET框架的命名规则(argument名称)
交换参数?这是在编写自己的排序方法么?你别说,还真是。
后来我跟这句代码的作者沟通了一下,他说当时的课程就是这样要求的。他们有一套严格的计数法准则,而io_is被作为一个输入/输出的参数。
他们还有其他的规定(比如不能使用foreach),如此这般,造成了一坨如此神奇的代码。
不过这不是重点。我可以理解疯狂的编码标准,但我不能理解的是一个找工作的程序员要提交这样一堆给自己减分的代码。
这是在浪费所有人的时间。而且真的很烦。