編者按:原文作者羅布·沃林(Rob Walling)從事Web應用開發10年之久,擔任過業內顧問、自由開發人員和全球最大的信用卡預付公司City of Pasadena的開發經理。現居住於加州中部城市弗雷斯諾(Fresno)。關注並指導IT創業,著有《開發人員創業指南 / A Developer’s Guide to Launching a Startup》一書。以下是“成為更優秀的開發人員”系列的第2篇。(《成為更優秀的開發人員:第1篇 – 製造粉絲》)
多年來,商業顧問一直指導企業要“知道你的核心競爭力。”也就是說,要“瞭解自己的優勢,並堅持下去。”。例如:哈雷戴維森的摩托車世界聞名。但在香水行業,他們可能就不那麼優秀了。世界上最好的六發式左輪手槍有一部分出自史密斯威森公司,但是我卻不認為他們的自行車也能如此成功。麥當勞嘛… 好吧,我不會說他們很會做食物,但是他們卻非常擅長賣出大量的食物。但是他們絕不會,我的意思是永遠不會把它兌換成現金,然後到拉斯維加斯賭場去做龍蝦三明治。
知道自己的核心競爭力可以幫助開發人員遠離麻煩。在我的職業生涯中,我大多是在編寫web應用程式,並且自認為很擅長這個工作。但是也有一些我從未做過,也不會馬上做好的事情:編寫編譯器、建立一個超高速搜尋應用程式和實現一些我想到的加密演算法。這使我想起了一個故事…
我當時在合作維護一個很成功的電子商務網站,我們在思考一個加密密碼的方法,這樣它們就不用以純文字形式儲存了。網站是用Java寫的,我大約6個月之前用過Java,但即便是6個月過去了,無論如何我還是不能在Sun公司提供的文件中查到任何資訊(有人知道如何高效地使用搜尋工具麼?)。(編注:推薦閱讀《如何使用搜尋技巧來成為一名高效的程式設計師》。)
對文件進行了幾個小時的徹底搜查之後,我放棄了,打算編寫一個快速簡單的加密演算法對密碼進行雜湊處理。取每個字元的ASCII值,加點什麼數,除以點什麼數…不管怎樣,始終都是數字,對吧?
我最終實現了。然後我們釋出了這個應用程式。不出所料,幾天之內人們一直抱怨無法登入。最初我想這肯定是某種詭異的巧合;十個人同時忘記他們的密碼。我已 經準備好呼叫檔案了,直到大約調查了20分鐘以後,我發現,當字串中有兩個字元是可見的ASCII碼範圍的邊緣字元時,我的加密演算法並不能真正地起作用。它確實處理了那些值,可是加密結果卻是不可見字元,也被稱為“控制”字元。
控制字元每跨越一個邊界,不管是從資料庫到應用程式、還是從應用程式到瀏覽器,都可能會因為層與層之間錯誤的編碼而產生意外變化,所以這給我增添了許多困難。果然,一些錯誤的ASCII解碼導致了一大批人無法登入。
這個案例讓我學到了堅持自己優勢的重要性。多次成功之後,我們經歷了第一次挫折。好在我們沒費多大力氣就修復了它。
堅持自己的優勢絕不表示你不該涉及新事物。恰恰相反,你必須不斷學習來加固自己的核心競爭力,否則就可能落伍。當然,在這點上一定要明智。(編者注:Rob 文中蘊含的意思可能是:要有選擇性地學習新事物。例如:核心競爭力是Web開發,那麼,應該選擇和Web開發相關的新事物學習,而不是轉而鑽研加密。)
從web應用程式到桌面應用程式的跨渡並不是很大。從web應用程式轉到編譯器,(雖然有可能)這是很困難,遠非看一兩個教程就可以搞定的事情。當然,還要遠離加密那個更繁瑣的東西!對於那些完全超出你知識範圍的任務,你先要花大量的時間做調查、漸漸熟悉這個主題、然後要慢慢學習,而不是複製貼上你第一眼看見的示例程式碼。(編注:對於一位自由開發人員,Web開發或許是一個不錯的選擇,僅2010年12份,全球主要專案網站新增Web開發專案15,641個,涉及專案預算超過1700萬美元。參見伯樂線上最新專案資訊)
原文作者:Rob Walling 編譯:伯樂線上 敏捷翻譯 – 高志翔
如需轉載,但請註明原文/譯文出處、譯文超連結和譯者等資訊,否則視為侵權,謝謝合作!