如果沒(méi)寫(xiě)過(guò)開(kāi)源代碼,請(qǐng)別給我投簡(jiǎn)歷
譯文【51CTO快譯】編者按:下面的文章編譯自O(shè)ren Eini(網(wǎng)名Ayende Rahien)最近的一篇博客。Oren本人是常駐在以色列的一位開(kāi)發(fā)者、架構(gòu)師與軟件咨詢(xún)師,微軟MVP,Rhino Mock和NHibernate等項(xiàng)目的作者,常寫(xiě)博客,常在全球會(huì)議上進(jìn)行分享。平時(shí),他的博客主要介紹技術(shù)本身或技術(shù)會(huì)議方面的信息。而這次,他開(kāi)始吐槽了。以下為正文:
我是真的怒了。在我說(shuō)明原因之前,先介紹一下背景。
一般而言,當(dāng)程序員來(lái)應(yīng)聘Hibernating Rhinos的工作時(shí),我們會(huì)要求對(duì)方提交一些自己完成的代碼。如果代碼與開(kāi)源項(xiàng)目相關(guān),他們會(huì)得到獎(jiǎng)勵(lì)分。
然而有些人吧,似乎不能理解這個(gè)要求。下面是我得到的一些回復(fù)。
- 我不知道是否能把代碼發(fā)給你。我需要問(wèn)問(wèn)我的老板。(好吧這真是很傻,你要拿公司的代碼展示給其他另一個(gè)想要雇傭你的公司。)
- 代碼在這兒,但請(qǐng)別告訴別人。(一般看到這種我就直接刪除了,刪除之前給對(duì)方回信教育一番知識(shí)產(chǎn)權(quán)的重要性。)
- 這是我在學(xué)校期間完成的項(xiàng)目代碼。(我今天這篇文章就是因此而寫(xiě)。)
就是這樣。如果你不是因愛(ài)好而編程,那么你不適合做Hibernating Rhinos當(dāng)中的一名開(kāi)發(fā)者。為了便于理解,下面介紹幾個(gè)我們這兒正在進(jìn)行的項(xiàng)目:
- 猶太圣經(jīng)代碼庫(kù) - 顯示、評(píng)論系統(tǒng)
- 猶太圣經(jīng)代碼庫(kù) - 搜索、管理系統(tǒng)(注意,這兩個(gè)項(xiàng)目由兩個(gè)不同的開(kāi)發(fā)者發(fā)起,兩者之間并無(wú)關(guān)系)
- 針對(duì)Android,iOS,WP7的音樂(lè)游戲App
- 個(gè)人財(cái)務(wù)管理App
- 針對(duì).NET的自動(dòng)更新代碼庫(kù)
- 其他一些開(kāi)源項(xiàng)目
其他可能還有一些我不知道的項(xiàng)目。(而且我要說(shuō)的是,這些項(xiàng)目是他們?cè)谏习鄷r(shí)間之外的個(gè)人時(shí)間完成的。而且,沒(méi)有任何人告訴他們應(yīng)該要做這些。)
這兩件事之間有什么關(guān)系?就是因?yàn)槲铱偸且?jiàn)到這樣的人,他們以為在大學(xué)期間完成的什么零碎代碼足以表現(xiàn)他們的高超編程技能。
好吧,這也并非不可能,不過(guò)想想看,你在大學(xué)期間完成的項(xiàng)目都是什么樣的?它們通常都是非常細(xì)小的項(xiàng)目,而評(píng)判代碼是否符合標(biāo)準(zhǔn)的人,則不知道是哪個(gè)瘋狂的教授。通常而言,這樣的應(yīng)聘者并不會(huì)有多好。
下面,跟大家分享一句我最近收到的代碼:
- privatevoid doSwap(ref Album io_Album1, ref Album io_Album2)
這是一句C#。通過(guò)這一句,你大概也能想象出來(lái)整個(gè)項(xiàng)目的代碼是什么樣子的。這一句話至少暴露出下面幾個(gè)問(wèn)題:
- 違反了.NET框架的命名規(guī)則(方法名稱(chēng))
- 違反了.NET框架的命名規(guī)則(argument名稱(chēng))
- 交換參數(shù)?這是在編寫(xiě)自己的排序方法么?你別說(shuō),還真是。
后來(lái)我跟這句代碼的作者溝通了一下,他說(shuō)當(dāng)時(shí)的課程就是這樣要求的。他們有一套嚴(yán)格的計(jì)數(shù)法準(zhǔn)則,而io_is被作為一個(gè)輸入/輸出的參數(shù)。
他們還有其他的規(guī)定(比如不能使用foreach),如此這般,造成了一坨如此神奇的代碼。
不過(guò)這不是重點(diǎn)。我可以理解瘋狂的編碼標(biāo)準(zhǔn),但我不能理解的是一個(gè)找工作的程序員要提交這樣一堆給自己減分的代碼。
這是在浪費(fèi)所有人的時(shí)間。而且真的很煩。