當前位置: 華文問答 > 數碼

作為一名程式設計師,最大的成就感來自哪裏?

2016-06-22數碼

十幾年前做的遊戲外掛,現在還有人在用。



我一直覺得我的技術直覺/判斷力非常好,有很多有趣的創意,初看起來自己都覺得很難,但是動起手來往往真的能做到。創意被驗證的那一刻是最開心的。

舉一些例子。

1,d2hackmap這個外掛,原作叫d2maphack,一個老外寫的。起因是有一次我給d2maphack打了一個修補程式,把他惹著了,在論壇裏指責我。我好心沒好報也很火大,決定教訓他。我做了一下技術分析,覺得能把他的外掛軟件反組譯用C語言還原出來!一般來說隨便還原一個軟件都要面對海量的組譯程式碼,難度是很大的。想像一下還原notepad.exe的原始碼就知道了。但是我真的做到了,由於是hack了maphack,所以我給它起名叫hackmap,哈哈哈。原始碼可以在網上搜尋鍵碼d2hackmap找到。


2,終極裝備大概是所有電子遊戲玩家的夢想。那時我在一個私服上玩暗黑破壞神2,有一天走在馬路上,我突然想到一個點子,透過它我可以得到任意裝備,想要什麽就有什麽。細節在這裏:Hacking Diablo II之Uploading。不過這個事的副作用是我發現自己對遊戲沒有追求了。到後來玩暗黑已經不打遊戲,盡找人聊天。前段時間玩皇室戰爭,我已經從技術狂墮落成RMB玩家了=_=!。


3,外掛做到後來,由於暴雪出了反外掛檢測系統,所以外掛也要做相應的反檢測。期間我產生的一個想法是可以把多個程式在一個行程空間跑,從而把自己隱藏起來。細節在這裏:[舊文存檔]Introduction to Remote Run Library


4,以前做醫療器材開發,自家設計的硬件平台(基於Intel XScale 270),軟件跑在Windows CE上。有一天我覺得其實不需要客製的硬件平台也可以跑,於是用VMWare做了個模擬器,在上面跑我們的軟件系統。這個模擬器大大方便了我們的內部測試、原型展示,銷售們也終於可以不用帶著笨重的器材到處做演示了。老板後來差點把它產品化了直接賣。部份成果在這裏:如何制作支持VMWare的Windows CE BSP。

有評論者認為這個事技術難度不大,不值得說。我解釋一下。從技術難度來講確實沒那麽高,因為硬件平台也好,套用軟件也好都是我們自己設計的,對我來說是白盒。關鍵在於你怎麽會想到去做這個事情,因為完全沒有人要求你做,也沒人知道這麽做是否可行,也不知道能幹嘛用。我的成就感在於意識到了這個東西的價值而且自己技術上判斷能做出來。成就感這個東西不光來源於技術難度,其實更來自於大家的認可和創造的價值。簡單講一下這裏面創造的價值在哪裏。一個是把套用軟件開發和硬件開發解偶了,原先套用軟件必須等板子回來後才能開發,第一塊板子回來、點亮(BBU)、板級功能偵錯穩定是要花很多時間的,有的時候板子有bug還要重新做,周期很長。其次產品的功能演示、渠道培訓、客戶演示等都需要樣機,非常不方便而且器材也不便宜。再次產品界面需要轉譯成很多國家的語言,轉譯是外包的不知道在哪個國家,也需要樣機做本地化。這些場景模擬器都可以解決,節省了大量的時間和成本。


5,幹過一些雜七雜八的活兒。比如有個朋友是器材代理商,他有器材壞了找我修,仔細研究了一番我覺得可以。於是自己買了同款微控制器、編程器等器件,把ROM倒騰出來刷到新器件裏再焊上去。更有意思的是,另外一個產品和它的硬件設計完全相同,只是多焊了兩片記憶體。我買了兩片記憶體焊上去,刷進另一個產品的ROM,完美變身了。


6,有一次玩一個工業器材(客製的軟硬件系統),用熟了以後我覺得其實可以山寨。於是照著人家的硬件規格自己湊了一套(用PC104、SDRAM、CF卡等),把人家的軟件系統扒出來裝到我的山寨器材裏,再寫點程式碼添了一些膠水模組跑起來了。當然我是純技術研究,沒有拿去賣錢哈。

7,還有一個帶給我很大成就感的:一個人做了整個硬件產品,成功商業化了。其中包括:溝通需求、定義產品規格、做總體方案、找人做結構設計、開模、找廠商做硬件設計和生產、自己寫所有的軟件和PC端配套程式、偵錯、寫文件、測試,等等。基本上所有的器材開發環節都走了一遍。

8,在家人、朋友和鄰居大爺眼裏,我是個神奇的電腦老中醫,俗稱IT男,最大的功能是給他們修電腦。憑這個本事,我進過女生樓,獲得過鄰居大爺青睞給介紹妹子。。。

9,其他的有機會再寫。

總結起來,我折騰這些東西,最大的成就感來自於整個過程中產生的創意、設計、實作、絞盡腦汁的解決問題,以及成功後的喜悅。

我有時想,如果當初選擇做黑客,我應該可以成為很好的職業黑客。但是比起去分析別人的系統,我更享受自己創造東西帶來的快感,所以我選擇了做程式設計師。

我的本職工作是軟件開發,絕大部份的時間都是在做正規的軟件開發,外掛這種是業余興趣偶爾玩玩。自我定位的話,我稱自己為有黑客精神、有完美主義傾向的程式設計師,但我並不是技術宅也不是技術控哦,有情商的好不好!在職業生涯中,我比較自豪的是從人生第一次寫產品程式碼開始,我一直都是職責範圍內的主程式設計師,從構思設計到編碼實作都是我主導。第一份編程工作是寫一個醫療系統閘道器模組,把各種醫療器材整合到資訊系統中。第一個版本雖然能工作但程式碼寫的很爛(第一次寫產品程式碼誰都好不到哪兒去)。我重寫了三遍,從最開始只能接一種器材到最後可以快速整合不同廠家不同類別的器材,也因此成為公司的核心模組。第二份工作是因為對底層開發感興趣,跑去做系統級開發,所謂的BSP(Board Support Package)開發,寫過Boot Loader、OAL(OEM Adaptation Layer)、驅動程式、BSP和應用程式的介面設計等等。這份工作的成就感在於我從零BSP開發基礎、沒有人帶的情況下一個人扛下了幾乎所有BSP開發(在老美同事看來是不可思議的,他們覺得至少需要兩三個人)。

在職業生涯中,我覺得最有成就感也最讓我感動的是,不同的領導、同事對我的評價都非常好。這些都是原話:「你是我最希望做同事的人」,「你是我見過最好的程式設計師」,「你是團隊裏我最不希望離開的人」,「你做軟件做到了一定境界」。


有人問到技術道路如何成長,我寫了一篇答案在這裏:

有哪些IT初學者(新人)成長為技術大牛的真實經歷? - 知乎


接下來打一波小廣告,我現在在做目前為止最有挑戰的一件事--創業@聲網Agora,歡迎技術牛人加入我們,長期有效!