我常被問到的問題就是,做為完全失明的人,我是怎樣程式設計的?我在一些地方提供了該問題的回答。比如,我在 Quora 上回答過《有視力障礙的電腦程式設計師是怎樣程式設計的?》,我也在 LiveCoding.tv 的這裡和這裡討論過該話題。然而,本文從更深層次的視角看待我的生活、以及塑造我當前職業生涯和選擇的轉折點。如果你不介意,本文更像是自傳。如果你感到不可思議,請把你的手交給我,讓我們盲人為視力正常的人指路。
(Parham Doustdar,伯樂線上配圖)
緣起
我出生於 1990-2-7,家裡排行老三,生活在伊朗首都德黑蘭。我生來就完全失明,只具備覺察到光的能力,很明顯,我是不具備的。
我踏入程式設計世界是在 14 歲那年。
對於盲人而言,記住 11 年前的程式設計書籍,要用很多努力。由於製作書籍的盲人版本非常昂貴、且耗費時間,這種實驗通過聲音、而非布萊葉盲文注1完成。
我想不起來那本書的作者了。然而,我記得書名是《Visual Basic 6.0》。
對於不瞭解這本書的人,在那個年代,Visual Basic 算作最容易的入門語言之一,它由微軟建立,你可以編寫面向 Windows 的應用程式,除此之外,主要賣點在於你可以輕鬆地建立圖形使用者介面(GUI)注2。因此,你能想象到,這本書以建立響應使用者輸入的 UI 為中心,比如,擺放兩個文字輸入框,它們之間弄個加號。當你點選「求和!」按鈕時,它就會把兩個文字框裡的內容加在一起,並顯示結果。看著不錯吧?
當然,這還沒有真正觸動我。
我想要更多的東西,這本書卻未能滿足我的需求。
我想開發……一款遊戲,一款盲人可以玩的遊戲,給盲人身臨其境般、聲效體驗的遊戲。讓人驚歎的遊戲,類似於我兄弟們在 PS注3 上玩的超爽遊戲。
這絕不是一開始就有的想法。事實上,在玩過 Jim Kitchen 的音訊遊戲之後,我才萌生了這個想法。這種體驗非常獨特,想要為盲人專門開發,提供絕佳的體驗。當然,我常常反對提供更具可訪問性的解決方案,而是使得主流產品可訪問(比如,建立「盲人聚集區產品」)。然而,我發現,大部分遊戲本質上依賴於視覺,這是不公平的期望。
我開始建立一款遊戲,姑且稱作 Swimming(游泳)。玩法簡單:保持游泳,能多快就多快(方向鍵:上),根據你聽到聲音的那隻耳朵來選擇向左或向右(方向鍵:左、右)。比如,如果你聽到來自左側的聲音,你就向左遊;如果你聽到來自右側的聲音,你就向右遊。如果你方向控制錯誤,你就會撞在游泳池的池壁,並被震暈幾秒鐘。
無論怎樣,這次經歷壓根兒算不上成功案例。
有一點需要提一下,我還沒有正當職業。我生活在伊朗,沒有收入來源,不管怎麼說,我都不能要求我的父母去做。這不是我的處事風格。
現在說說現實世界的體驗問題:看了一本書,教我在 IDE 裡建立 GUI,你只需拖拽控制元件,就能在後端產生程式碼,這種書是不能教會你程式設計的。我記得,我的 Swimming 遊戲就有 3 個按鈕,它們出現的理由是因為 Visual Basic 6.0 IDE 為我生成的。後來,我聯合一些朋友創立了 Lighttech Interactive,我從朋友 Robert Osztolykan 那裡聽到的第一句話是:「夥計,你是怎樣看程式碼的?」
最後,這個專案失敗了。然而,它教會了我非常重要的東西:我喜歡程式設計。我感到充實,因為我能夠讓計算機做我想做的事情。我想幫助其他人。
求學之旅
正是這種體驗,讓我選擇了軟體,做為我在大學想學習的課程。這個決定本身存在問題:高中沒有對應的課本,大學相應的課程沒有我需要的書。我要麼依賴於自己的知識,要麼讓別人為我讀書。然而,我討厭為了通過考試而學習既定數量的教材,我更喜歡靠自己。我憑藉自己的知識,在家裡鼓搗了不同的程式語言。我在所有的程式設計課裡都得了 A+ :資料庫、以及包含手動程式設計的其它課程。
對於數學和理論課,比如資料儲存和檢索、作業系統、統計學、以及依賴於演示的其它課程……我都不太擅長,因為我沒有學習它們的渠道。
最終,這些經歷為我贏得了副學士學位注4。另外,凡是教學方式依賴於理論或圖形化演示的,我都心生憎恨。
我儘量遵循教育系統,好讓自己能多學習不同的技術。在大學期間,我就發現 PHP 和 web 是我樂於從事的方向,它們促使我嘗試了不同的框架。
職業生涯
我在 FreeNode 的 #yii 頻道認識了 Howard Chang。當他問一些問題時,碰巧我在,我為了讓他關注我,就刻意給他留下了印象。
這讓我得到了第一份做 PHP 的開發工作。當然,這是我的第一份工作,儘管我的技術能力與團隊其他人處於同一水平,只是我的軟技能還不夠好。最終我惹毛了經理,你們多數人可能猜到了(你讀到這裡,可能正捂著臉吧),大量的不和諧情景隨之而來,我常常感到好奇:「嘿,我做了什麼?他為什麼對我大吼大叫?」是的,那個傢伙一直都討厭我。我只記得他說過一句話,讓所有人驚呆了幾秒鐘,原話記不住了,大意為:「我不會讓一個瞎子破壞我的生意!你明白嗎?」
因此,我辭職了。我在那天傳送了一封郵件,說我不想再來這家公司了。我的軟技能就是這麼差勁兒。
我的下一個東家是一家很棒的創業公司。創始人是一位健談的加拿大籍伊朗人,他的想法很棒:BusinessX。
我是做為第一名員工被僱傭的。前景廣闊、人們意氣風發,激情隨處可見。我們打算改變小企業互動和展示自己的方式。
除此之外,什麼都沒有發生。
就我而言,我僅有一些能夠說得出口的品質,我敢說你也這樣。不知為什麼,我們都傾向於讓我們的所有成就看起來微不足道、以及讓我們的個性、技能和特徵不太完善。同時,我們期望其他人都羨慕我們、擁護我們,以及只是承認我們是多麼地優秀,這樣我們就能繼續活在美好的幻覺裡。
好吧!我跑題了。
我欽佩自己的一個品質,即 我對學習的渴求。以非常快速的節奏觀察、處理和學習,當 BusinessX 走過小企業生命週期(嬰兒期、青春期,再返回嬰兒期)時,我觀察、學習,我還學到了教訓,James Altucher 在 LinkedIn 發表了《今年你要離職的十大理由》一文,促使我離職,以尋找更多的成長機會。
但是,我沒有自己創業,我再次加了一家公司。
由於我完全失明,我已經越來越多地轉向後端 web 開發了。我從來沒有寫過一行生產環境裡的檢視程式碼,這也是我的新公司讓人著迷的地方(我負責 Asterisk 系統的後端 API,它銷售一些服務)。我現在能夠實施我想做的所有實踐:測試驅動開發、設計模式的實際應用、重構、以及各種術語。我做到了。
創辦部落格的初衷
我在目前的公司上班時,發現了一本書《Soft Skills》。在當時,還沒有盜版(對不起,John Sonmez)。然而,通讀了 Uncle Bob 的《程式碼整潔之道》之後,我很想再找一本類似的書。畢竟,依我拙見,BusinessX 第一階段的開發努力未能成功,開發人員屬於非常重要的原因。功夫不負有心人,終於有一天,我找到了網上流傳的一份拷貝,如獲至寶。看完這本書,我意識到,通過部落格分享你自己,具有強大的力量。
還有一件事,從我 13 歲起,我就讀了很多書。擁有一臺螢幕閱讀器,每分鐘讀 520 個單詞,這簡直是老天的恩賜,讓我汲取知識。後來,我決定把我在學的、和已經學到的東西分享出去,展示給世界,同時引發分享和討論、得到指正,促使我堅持下去。我在 SitePoint 網站上的作者簡介頁面、我在 Quora 上的個人主頁、當然還有這個部落格,都有例子。
因此,除了非常陳舊的文章,我認為,正式啟動部落格的理想方式就是向你談談我自己。希望你能喜歡我的故事。
你對我的自傳有什麼看法?它回答你的疑問了嗎?它引發了新問題嗎?如果你有任何疑問希望得到回答,或者你想給本文任何反饋,請寫在下面的評論裡,我樂於看到。
請分享本文!
註釋
- 盲文(法語:Braille)、香港多用“點字”、“凸字”。是盲人使用的文字,由法國人路易·布萊葉發明,透過盲文板、盲文機、盲文印表機等在紙張上製作出不同組合的凸點而組成。https://zh.wikipedia.org/wiki/%E7%9B%B2%E6%96%87
- 圖形使用者介面(Graphical User Interface,簡稱GUI)是指採用圖形方式顯示的計算機操作使用者介面。與早期計算機使用的命令列介面相比,圖形介面對於使用者來說在視覺上更易於接受。https://zh.wikipedia.org/wiki/%E5%9B%BE%E5%BD%A2%E7%94%A8%E6%88%B7%E7%95%8C%E9%9D%A2
- PlayStation(俗稱為PS或PS1),是日本索尼旗下的索尼電腦娛樂(SECI)於1994年12月3日推出的家用遊戲主機。當時與PlayStation競爭的還有世嘉公司的世嘉土星和任天堂公司的任天堂64等。通過爭取第三方遊戲廠商的策略,最後PlayStation在遊戲軟體數量上以絕對的優勢贏得這場次世代主機市場的勝利。至2005年,PS的全球銷量約為1.03億臺。https://zh.wikipedia.org/wiki/PlayStation_(%E9%81%8A%E6%88%B2%E6%A9%9F)
- 副學士學位(英語:Associate Degree)是一種源自美國和加拿大的初級學位,為四級學位系統中的初級學位一種,一般分為文科副學士(Associate of Arts,簡稱A.A.)及理科副學士(Associate of Science,簡稱A.S.)。修讀者一般須在社群學院或專科學院修讀兩年,通常無需通過論文考核,與高階文憑的嚴格制度不同。與之最接近的亞洲教育資歷為大專文憑(但通常大專文憑取得者須在大學全職學習三年)。https://zh.wikipedia.org/wiki/%E5%89%AF%E5%AD%B8%E5%A3%AB