如果沒寫過開源代碼,請別給我投簡歷
原文:That ain’t no Open Source that I see here
編者按:下面的文章編譯自 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),如此這般,造成了一坨如此神奇的代碼。
不過這不是重點。我可以理解瘋狂的編碼標準,但我不能理解的是一個找工作的程序員要提交這樣一堆給自己減分的代碼。
這是在浪費所有人的時間。而且真的很煩。