我怎樣面試系統開發員(第二部份,共兩部分)

這篇文章將分為兩部分,這是第二部分,若果你未看「面試系統開發員(第一部份)」,建議你先閱讀那一篇文章。

怎樣處理困難的問題?

我首先聲明,我不會問任何刁難或者有陷阱的問題,因為面試的目的不是要難為別人,而是要找到優秀的同事。明知對方不懂得或者不擅長的東西,我不會問;需要大量思考的問題,我也不會問。不過我總會問一些有挑戰性的問題,否則怎能區分平庸和優秀的人?以下是一些多數應徵者覺得比較難以處理的問題。

繼續閱讀 »

我怎樣面試系統開發員(第一部份,共兩部分)

我快將離開現任的機構,決定告訴大家我以前是怎樣面試系統開發員,希望對正在尋找相關工作的人有用。

我服務的是一個資訊系統開發的部門,除了最高級和最低級的幾個人外,全部都是幹系統開發的工作,我們還雇用了一批透過仲介公司介紹的同事,名義上他們不是我的機構的員工,但他們也要事先通過面試才能上任。我是誰?我便是那個負責面試的「官員」,而且一幹便幹了三年。

這篇文章將分為兩部分,這是第一部分,第二部分在這兒。

注意!六個不良客戶的預警訊號

即使在經濟不好的年頭,我們有時也不得不拒絕一些生意,設計師 Alyssa Gregory 在她的網誌中說,雖然做好設計的工作是設計師的本分,但是也要警惕會增加生產成本的潛在的工作(及潛在的客戶),她列舉了六個不良客戶的預警訊號。

1. 無法就服務條款達成協議

那個潛在客戶看來已經準備就緒……然後他們繼續跟你就價格進行談判,使你無法確定交付的項目及項目的限期,雙方沒有任何東西是以書面確認的 ──沒有簽署好的協議,也沒有通過電子郵件確認的批核,然後客戶說類似這樣的話:「讓我們開始吧,我們可以一面工作一面繼續討論細節。」這時你應該立即掉 頭跑──不是走。

最好和最差的編程人員,效率平均相差 3 倍!

Jakob Nielsen 有一篇關於電腦相關工作的個人效率調查研究, 發現越複雜的工作,人們的效率的差別便越大,其中最複雜的程式編寫工作,最好和最差的員工的效率平均相差 3 倍,最壞的情況下甚至達到 20 倍。研究所涉及的工作包括:文書處理、個人電腦使用、尋找資訊、網站使用、和程式編寫,若果把效率最高的 25% 與最低的 25% 員工相比,平均工作效率的比例是:

 工作種類  效率比例  文書處理  1.8  個人電腦使用  1.9  尋找資訊  2.2  網站使用  2.4  程式編寫  3.0

根據研究的結果,Jakob Nielsen 認為所有機構、公司寧可多花一點時間,多付出一點薪金,也要聘請最好的編程人員,找到最優秀的 1% 的人才可能不容易,但是只要付出一些努力和誠意,找到最好的 25% 人才還是不難的。

為你的網站制定備份策略

最近幾天接二連三有知名網站遭黑客入侵,包括討論區系統 phpBB 的官方網站(phpBB 仍然是安全的,漏洞出在網站上另一個應用系統)及網上書籤網站 Ma.gnolia,網站被入侵已經不是新聞,很多被入侵的系統內的用戶資料被盜取,例如網上求職者網站 Monster.com 上星期被入侵後,數以十萬計的求職者個人資料被盜;有些網站的資料被抹去而無法復原,例如 Ma.gnolia 便承認他們無法復原用戶的書籤,唯有透過網上其他資源盡力恢復用戶的公開資料,其中包括 Google 搜尋器的緩存影像。數據丟失固然嚴重,對網站聲譽和用戶信心的打擊更是無法彌補。

對天真爛漫的設計師說的十大謊言

Mark W. Lewis 在 Painter Creativity 發表十個年輕天真的設計師最經常聽到的謊言,看來還真有點依據!

「這次你平宜一點(或者免費)替我們工作,下次一定補償給你。」 「在見到最後的作品前我們分文不付。」 「幫我們工作的話你會得到很大的暴光率,工作便會陸續找上門。」

10 大求職必備的編程語言

Deborah Rothberg 根據一些資訊科技經理及網頁開發人員的經驗,總結出求職市場上 10 大必備的編程語言,雖然你不一定要全部懂得,但若果你正在考慮多學一種語言的話,從在這份名單中挑選一種準不會錯。

PHP C# Ajax JavaScript Perl C Ruby 及 Ruby on Rail Java Python VB.net

你同意 Deboah Rothbery 的名單嗎?

最優秀的開發人員的四種品格

Rob Walling 根據多年觀察的心得,在他的網誌羅列了最優秀的開發人員的四種品格,這是一篇很精彩的文章,Rob 引用 Facts and Fallacies of Software Engineering 書中所述:「 最優秀和最差劣的開發人員可以相差 28 倍。」下次面試員工的時候不妨檢驗一下他們是否具備這四項品格,你也可以藉此訓練自己成為最優秀的開發人員。

悲觀

凡事只看到光明美麗的一面,便會忽略潛在的災難,所以最優秀的開發人員都是尋找破綻的專家,若果有人建議用撥號連線把重要的數據用 FTP 傳送,你便會聽到他們語帶嘲笑地說:「有甚麼可能出錯的地方?」最優秀的開發人員總是在其他人想不到的地方預測到危險,並且在能力所及的範圍避開這些危 險。

從另一個角度看,偉大的開發人員也是樂觀的一群,對他們的總體成就可說是自信心爆棚,他們知道自己短期來說屬於悲觀的人,但這種性格為他們締造長遠的成功。

為草率的程式而發怒

Paul Graham 曾經說過:「在某方面偉大的人往往不知道自己的偉大,他們只是奇怪為甚麼其他人如此無能。」最優秀的開發人員的最大噩夢,就是見到別人的程式跑得上氣不接下氣,最後拖垮整個系統無法運作,這是絕對無法容忍的。不單止草率的程式,草率的安裝、配置、或者拼錯了一個變量的名稱,也會令他們抓狂。

長遠的人生計劃

在個人生活中作出長遠計劃的人,也具備在開發過程中作出長遠計劃的天賦,建築一個為大軟件的最重要條件,是有能力看透今天的決定對將來做成甚麼衝擊。

關注細微之處

無可否認很多出色的開發人員並不注意細微的地方,以致出現了一些例如沒有註解的程式、拼字錯誤的資料庫欄位、開發的軟件沒有進行單元測試等,開發一個只有五頁的網站這些當然都不是問題,但若果在一間大公司內作開發工作的話,這些問題無疑會判定他們死刑。

真正優秀的開發人員對細微之處總有驚人的固執,有些人堅持所有程式必須適用兩個空白字元來縮排,不能多也不能少,Tab 更是絕對禁止,這種對完美的追求和執著,正是他們優秀的原因。

新的網頁等級分析工具

SEOMoz.org 開發了一個計算「網頁強度」的有趣工具,用來評估一個網頁或者網站的相對價值 (value) 重要性 (importance) 和可見性 (visibility)。

SEOMoz.org 是一間在西雅圖為基地的搜尋器優化公司,網上最常被引用的網頁評級標準是 Google 的 Page Rank,SEOMoz.org 認為這一個標準既不準確,更新也很緩慢,SEOMoz.org 引述一位沒有透露姓名的 Google 員工說,Page Rank 的資料平均來說幾個月都沒有更新過,Google 搜尋器甚至不是用這個等級來決定網頁的列出次序,把這個數值視為一種娛樂便好了。故此 SEOMoz.org 開發了「網頁強度」這個簡單易用的工具,它基於以下因素來評估一個網站/網頁的價值、重要性和可見性:

從外部連結至目標網站/網頁的連結數量 在 Google 搜尋標題的首四個字的結果 網域的年齡 從 .edu 或者 .gov 指向目標網站/網頁的連結數量 從 del.icio.usDMOZWikipedia 指向目標網站/網頁的連結數量 從 Google 搜尋網域名稱的結果數量 Alexa Rank 數值 Google Page Rank 數值

SEOMoz.org 強調她們只是提供 Google Page Rank 以外的另一個選擇,結果並不完全準確,不能用作專業的網頁評估報告或者視為權威性的資料。

從 SEOMoz.org 的評估項目來看,外國與及英語的網頁會較有優勢,所以評估的結果也不用太認真看待。其實任何一種評估方法都難以絕對公正,一個網頁的重要性本質上就是因人而異、因時而異、因地而異的,我們也可以參考 SEOMoz.org 的作法,製作一個中文網頁的「網頁強度」分析器。

大家不妨去測試一下你的網站/網頁 的「強度」是多少,評估一次大概要半分鐘至一分鐘,此後結果會被儲存 72 小時,即是說不論你的網站有任何更新,都要在 72 小時後才會有新的評估結果。

在公眾電腦上如何安全地輸入密碼?

這一篇報導跟 PHP 沒有什麼關係,但作為技術人員我們經常都會遇到類似 PCMAG.COM 所述的難題,解決的方法也很巧妙,值得跟大家分享。

有人向 PCMAG.COM 查詢:

作為公司在坦尚尼亞的一名財務主管,我有時要在沒有手提電腦的情況下公幹,這種情況下要連繫上受密碼保護的網站,也不得不使用網吧或者酒店的商務中心,我很擔心這些公眾電腦會否有紀錄按鍵的間諜程式。

若果我使用 Windows 的螢幕鍵盤(用滑鼠點擊輸入文字)能否防止這些間諜程式紀錄我的密碼?

倘若螢幕鍵盤只是模擬鍵盤的按鍵,紀錄按鍵的程式仍然有可能截取我的密碼,那麼使用複製/貼上的方法又能否解除這個威脅?間諜程式會否紀錄剪貼薄的內容?你們有沒有在公眾電腦安全地輸入密碼的建議?」

PCMAG.COM 的回應:

螢幕鍵盤原意是給行動有困難的人輸入少量的文字,為了有最佳的兼容性,它模擬真實的按鍵送給應用程式,我嘗試了數個商用的按鍵紀錄程式,發現它們都能夠紀錄由螢幕鍵盤輸入的文字。

你可以嘗試使用字元對應程式(Character Map utility),透過連擊滑鼠來建立你的密碼,然後把密碼複製/貼上應用程式的密碼欄,不幸地間諜程式除了紀錄按鍵外,大部分也會紀錄剪貼薄的內容,甚至會擷取螢幕,所以使用字元對應程式也未必可行。

有一個較為可行的辦法:輸入密碼時加入額外的字元,然後使用滑鼠選擇及刪除這些多餘的字元,例如你輸入 passFROGword,跟著選擇和刪除中間的 FROG,又例如輸入 p1a2s3s4w5o6r7d8,然後把每隔一個字元刪除。按鍵紀錄程式仍然會記錄你的密碼,但是會和其他不是輸入密碼的按鍵混合。

……

話說回來,最好的做法還是避免使用不安全的電腦,即使你可以逃避按鍵紀錄程式攝取你的密碼,你仍無法避免它們擷取螢幕上重要的財務資料。你的最佳作法是提高你的手提電腦的安全性,然後面對要拖著沉重電腦上旅途的命運。

搜尋引擎編索引的極限:你的文章應該有多長?

網站的開發人員,特別是商業網站,對於如何針對搜尋引擎進行優化,使自己的網頁能夠在搜尋的結果中排得較為前列的位置,都進行過不少研究,也有無數 針對「搜尋引擎優化(Search Engine Optimization, SEO)」的文章發表過,指導大家如何令搜尋引擎重視自己的網頁。

不過一直以來似乎還沒有人研究過搜尋引擎是否保證把頁面上所有文字編列索引?曾經有人懷疑,搜尋引擎視太短的頁面為沒有實質內容而予以忽略,但是太 長的頁面則只會截取一部份編列索引,其餘的部分會是為內容重複和關鍵字重疊而予以忽略。即是說頁面太短固然不行,根本進入不了搜尋器的數據庫,太長則屬浪 費,若果你有一些很精闢的關鍵字在頁面的後半部才出現,即使有用戶用這個關鍵字進行搜索也不會找到你的頁面。

Serge Bondar 針對這個問題進行了一個實驗,目的就是要解答:

各大搜尋引擎讀入多長的頁面來編列索引?

實驗設定

Bondar 預備了 25 個檔案,容量從 45KB 到 4151KB,在這些檔案中每隔 10KB 的距離插入一個全宇宙獨一無二的關鍵字,這些獨一無二的關鍵字用程序生成,Bondar 稱之為索引深度標籤,完成後他便把這 25 個檔案放上網頁,隔了一段時間後使用三大引擎:Yahoo!、Google、MSN 搜索這些索引深度標籤。

實驗結果

Yahoo! 編列索引的深度:

Google 編列索引的深度:

MSN 編列索引的深度:

分析

三大搜尋引擎果然對頁面的長度設有上限,超越上限的部分任何文字都不會被編索引,這個上限大概是:

搜尋引擎 頁面的長度上限 Yahoo! 210KB Google 520KB MSN 1020KB

對於長度比這些上限短的頁面,當然可以讓它們快樂地活下去,但是過長的頁面是否需要截短呢?Bondar 相信多出來的部分不會拖低整個頁面的評價(Page Ranking),若果有編排和表達方式上的需要,這些頁面亦無需蓄意修改。

繼續閱讀 »

提問的智慧(3.2 版)

作者:

Eric Steven Raymond

Thyrsus Enterprises

<esr@thyrsus.com>

Rick Moen

<rick@linuxmafia.com>

版權 © 2001, 2006 Eric S. Raymond, Rick Moen

修訂歷史 修訂版 3.2 2006 年 1 月 10 日 esr 加入 Rick Moen 的修定 修訂版 3.1 2004 年 10 月 28 日 esr 文檔 ‘Google 是你的朋友!’ 修訂版 3.0 2004 年 2 月 2 日 esr 主要增加網頁論壇應有的禮節內容 原文:How To Ask Questions The Smart Way

翻譯(3.2 版):阿恆 <khchung@hkpug.net>

時間:2006 年 6 月 12 日

翻譯(3.1 版):王剛 <yafrk@yahoo.com>

時間:2004 年 11 月 2 日

內容

譯文

棄權申明

引言

提問前

提問時

仔細挑選論壇

繼續閱讀 »

認識 IPv6

新一代的網絡協定第六版(IPv6)將會是互聯網的未來標準,我們有需要認識 IPv6 與網絡協定第四版(IPv4)有何異同,IPv6 有什麼好處,與及認識有什麼資訊產品兼容這個新標準。

隨著網上的活動與日俱增,有越來越多的電腦產品需要連接上互聯網,對網絡地址的需求越來越大,現時大部分的網絡產品所使用的 IPv4 網絡協定已經逐漸滿足不了網址的需求,可用的網址日益短缺,IPv6 就是在這種情況下發展出來的新協定,它能夠與 IPv4 兼容並且與 IPv4 交互運作,最重要的是它解決了 IPv4 的缺點:

IPv4 網址空間瀕臨用罄 全球選路表的容量已經擠滿 配置複雜 IP 層面的安全措施不足 實時傳送數據的能力低

IPv6 與 IPv4 最明顯的分別是網址空間大幅增加,IPv4 採用 32 位元來記錄網址,每一個網址分為四個 8 位元的位元組,表達出來的時候使用四個十進制的數字,每個數字之間用一個定點分隔,例如:12.24.56.78。

IPv6 則採用 128 位元來記錄網址,每一個網址分為八個 16 位元的位元組,表達出來的時候使用八個十六進制的數字,每個數字之間用一個冒號分隔,例如:ABCD:1234:BCDE:5678:56:78:90:AB。

IPv6 也可以表達成一個 96 位元的前置段加上一個 32 位元與 IPv4 兼容的部份組成,表達出來的時候前面的部份用 IPv6 的格式表示(十六進制和冒號),後面的部份用 IPv4 的格式表示(十進制數字和定點),例如:ABCD:1234:BCDE:5678:56:78:145.62.3.87。

在 URL 中 IPv6 的網址必須用方括號包著,例如:

http://[ABCE:1234:BCDE:5678:56:78:90:AB]:80/index.html http://[65:0:4EB8:4E:459A:3C:C24:31]/index.html

除了表達方式不同,功能上 IPv6 與 IPv4 也有很多不同,例如 IPv6 沒有子網域廣播地址,因為它並不是使用特定的地址來實現廣播,IPv4 的回送網址是 127.0.0.1,IPv6 的回送網址是 0:0:0:0:0:0:0:1,此外在保安功能、網址管理、流動器材的支援上 IPv6 都比 IPv4 優勝。

現時支援 IPv6 的操作系統包括

Windows Server 2003 Windows XP SP 1 Windows CE .NET 4.1 Sun Solaris 8.0 HP-UX 11i IBM AIX 5.2 ML3 Redhat Enterprise Linux Advance Server 繼續閱讀 »

Web 2.0 已經成為註冊商標了

又一宗商標註冊、侵權的事件。

在互聯網上有多少網頁與 Web 2.0 有關?數以百計?成千上萬?太少了,Google 一下 Web 2.0,一共超過八億個!Web 2.0 近年已經成為資訊科技界的明星詞彙,但原來它已經被人註冊,以後不能隨意亂用,否則可能要面對大公司的法律訴訟。

IT@Cork 是愛爾蘭一個為資訊科技界的專業人士服務的非牟利團體,他們將於今年六月八日舉行一個名為 Web 2.0 的半天會議,就在會議舉行前兩星期(即五月廿五日)他們接到 O’Reilly 一份法律文件,指 Web 2.0 是他們的註冊商標,要求 IT@Cork 不要用 Web 2.0 作為他們的會議名稱。

這次會議的籌委會會員之一 Tom Raftery 在他的個人網誌公 開了這次事件,他說他在今年二月曾經發信邀請 O’Reilly 的創辦人及行政總裁 Tim O’Reilly 出席這次會議,並且發表演說,當時 Tim O’Reilly 回覆說他很榮幸獲得邀請,但由於工作太忙無法出席遠在愛爾蘭的會議。既然 Tim O’Reilly 在二月已經知道這個會議名為 Web 2.0 Conference,為甚麼要在會議開始前兩星期才發出律師信要他們改名?Tom Raftery 在他的網誌上苦惱地問:他應該怎樣做?

一石激起千層浪,這篇文章迅速在各大網站轉載,網民在聲討 O’Reilly 無理之餘,建議大家以後棄用 Web 2.0,改用 Web 2.1,甚至 Web 3.0,而且要杯葛所有 O’Reilly 舉辦的所有會議。

事情峰迴路轉, 第二天(即五月廿六日)IT@Cork 又收到 O’Reilly 一封函件,表示考慮到 O’Reilly 在發出律師信前沒有與 IT@Cork 好好溝通,兼且他們的會議還有兩星期便舉行,O’Reilly 表示只要他們保證以後不會用 Web 2.0 作為會議的名稱,這次可以破例讓他們照樣使用 Web 2.0。Tom Raftery 在他的網誌上公佈了這封信,並認為他們使用 Web 2.0 這個名稱並無不妥,拒絕向 O’Reilly 作出任何保證。

同一天一名 O’Reilly 的員工在網誌上刊登了一篇聲明 ,那是代 O’Reilly 的公關副總裁 Sara Winge 發出的,表達了 O’Reilly 註冊 Web 2.0 只限於「即場活動」,包括會議、研討會、講座等,那是為了保障他們即將舉辦的一個同名會議 的權益。

繼續閱讀 »

開放源碼軟件作者的五大毛病

First Monday 很久以前刊登了一篇 Michelle Levesque 的文章,抒發他對開放源碼軟件作者的五大控訴,今天看來仍然很有啟發性:

介面設計:這是絕大部分開放源碼軟件的通病,很多非技術的用家不明白為甚麼開放源碼軟件比 Windows XP 或者 Mac OS X 難用得多,Mac OS X 尤其得到文章作者的稱許。事實上用家看到的是軟件的介面,這正是用家賴以評估的主要因素,差勁的介面無異於驅趕用家。 說明文件:絕大部分的開放源碼軟件不是沒有恰當文件,就是只有過時的文件。恰當的意思是這些文件應該讓最入門的用家也能輕鬆看得明白,而且是集中一 處讓用家容易找得到,無須到網上、新聞 組、交談室等地方搜尋。缺乏恰當而準確的說明文件,開放源碼軟件永遠只會被視為劣質產品。 功能為主的開發心態:開放源碼軟件的作者很容易因為個人的興趣而把很多功能加入,忽略了整個系統的穩定性、可用性和整體的協調,當用家遇到了問題,卻因為說明文件的不足而陷入困境。 為自己服務的開發心態:很多開放源碼軟件的作者把他們認為很簡單、很理所當然的事情,推廣到其他人身上,忽略了用家的真正需要和要求,結果是開發出來的東西只有他們自己或者少數技術專家才會使用。 宗教式的盲目:很多熱情的開放源碼軟件作者對商業軟件具有很大排擠心態,拒絕向很多成功的商業軟件借鏡學習,令自己失去了改進的機會,甚至不肯承認任何缺點。

所有軟件都適合開放源碼嗎?

Aaron Wormus 在他的網誌中探討是否所有軟件都適合開放源碼,他首先引述一個義大利網站 OSS Blog 訪問 Tobias Schlitt 的一篇文章 中的一段說話。

Tobias Schlitt 說:「我認為現代所有軟件都應該開放源碼,聽起來似乎有點極端,但其實是有原因的,現今大部分的軟件在技術或者概念上並沒有大的突破,軟件開發無非是把其 他軟件集合起來,在外面編寫一點兒程式包裝好,這種做法與開放源碼的概念配合得很好;另一個原因是軟件市場正在改變(可能是由於開放源碼或者是其他原因),賺取利潤的方法已經不再靠軟件本身,而是靠提供支援的服務。後一個原因更適合我作為一名電腦迷的口味,我喜歡透過別人的程式學習,當我需要一些新功能或者修正一些錯誤時,我也喜歡修改這些程式。」

儘管 Aaron 認同開放源碼的概念,但卻不認為這個概念可以應用到所有軟件,與及適合所有商業運作模式。他以一個自己開發的專業財務軟件為例,這種軟件基本上只有商業用途,使用這種軟件的公司互相是競爭對手,他引申出一連串問題:有甚麼驅動力使他開放源碼?開放源碼的話對投資開發這個軟件的公司有甚麼回報?對社區又有甚麼益處?他是否應該盲目把這個軟件的源碼公開?

微軟說:「開放源碼既不可靠,也不可信任」

據 CNET News 報導BBC World (英國廣播公司國際頻道) 播出的一輯紀錄片 Code Breaker 中,微軟的歐洲總部副總裁暨首席技術總裁 Jonathan Murray 表示:「開放源碼既不可靠,也不可信任。」

Jonathan Murray 繼續說:「有些人使用社區為本的軟件,透過在社區分享這些軟件而獲益。另一些人則投向商業軟件,尋求可靠性和可信任性。我們最終所做的決定,還是以哪一種方法帶給我們最多好處為準。」

至於好像 Red Hat 和 MySQL 這種以商業形式運作銷售開放源碼軟件的公司,不知道屬於 Murray 口中的那一種公司。

紀錄片還訪問了「一個小孩一部手提電腦」計畫的 Nicholas Negroponte,他不認同微軟的開放源碼較為次等的說法。

另一位受訪者 The Economist (經濟學人) 的技術專欄作家 Kenneth Cukier 則說開放源碼的軟件功能上與商業軟件分別不大。

還有好幾位人士接受了這個節目的訪問,包括 Free Software Foundation 的發起人 Richard Stallman。