作為一名程序員,最大的成就感來自哪裡?

可否分享一些,在工作中讓您最有成就感的一件事或一個項目?


我覺得最大的成就感來自於自己作品的受到用戶喜愛,我開發過兩個用戶過億的程序

一個金山詞霸,一個YY語音。

但是最有成就感的不是這兩個,而是《金山遊俠》,一個單機遊戲修改器。因為這是我和另一個同學完全出於自己的興趣和需求而開發的程序,入職金山之前就做出了原型,連名字都沒有,被金山包裝成正式產品去銷售,才取名叫金山遊俠。

這個產品正版只賣了幾萬套,銷售額也就100多萬,去掉開發、生產、銷售等費用,可能還是虧損的。詞霸才是盈利的,不過也不多,每年也就一兩千萬的銷售額。

最近幾年還有人在用遊俠,居然還能在現在的Windows上運行,微軟保持二進位兼容的能力和決心實在驚人,因為金山遊俠自從3.0以後已經14年沒繼續開發維護了。

知乎上也有人問過

金山遊俠為什麼不出新版本了? - 知乎

金山遊俠是兩個程序員開發的,一個是我,但是我2004年離開金山,當然不能拿代碼出來自己修改發布,因為版權屬於金山。

另一位程序員雖然還在金山,但是他很忙,因為他在金山做CEO。

就是下圖這位 鄒濤

評論區里跟我投訴WPS各種問題的各位,我已經離開金山十多年了,而且我從未在WPS項目里工作過,沒有貢獻過一行代碼,WPS真的跟我沒關係。

另外如果要投訴建議去微博找,章慶元 和 葛珂,這兩位才是現任的WPS總負責人,冤有頭債有主誰的問題你找誰去。


忽然發現,在這個問題里還有 @Sting 的回答,這世界真小在這都能碰上。我十幾年前和Sting短暫合作過幾個月。


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

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

舉一些例子。

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,歡迎技術牛人加入我們,長期有效!


我先出一對王

用了我的shader

用了我的SH各向異性BRDF

再出二炸

用了我的Lightmap壓縮、SH各向異性BRDF、水面建模、水面渲染

其他的嘛,就剩一些散牌,大家隨意

用了我的Kinect掃描建模演算法

用了我的software tessellation

用了我的spherical gaussian

用了我的各向異性BRDF近似這些項目啊,都亦可賽艇。


@叛逆者 把 @vczh 炸得不敢回答了

目前的話是這個,一個人弄出來的

(話說我要不要做個這玩意的比例版……)


我熟悉很多種語言:
普通話,粵語,潮汕話,英語,C,C++,Java,Python,Perl,Shell,SQL,AWK,Typescript,processing
我還掌握並使用過很多種其它語:
Spanish, Korean, javascript, as3, objective-C, Lua, HTML, php

而且,我靠我熟悉的語言,擁有了一份收入還不錯的工作。
對,我就是一個會多種語言的文科生。

工作報告(和回答這個問題),我用其中一種;
與同事交流,我用其它若干種;
寫作的時候,我也用其中若干種;
吹牛逼的時候,我就都搬出來~~~~

~~~~~~~~~~~~~6.22 晚上 23時更新~~~~~~~~~~~~~
沒想到一個隨便的回答,竟然過了300個贊。
然後答主發現大家竟然在關心兩個問題:答主是不是潮汕人以及粵語和潮汕話是方言還是語言。
1. 答主是潮汕人。而且今天是答主生日哦。禮物何在?!

2. 區分語言最大的原則是,兩個只會其中一種語言的人,是否可以正常交流(mutual intelligibility),既相互可理解性。顯然,粵語、潮汕話、普通話間,不具相互可理解性。所以從這個方面上講,這是漢語族的三們語言(不嚴格)。這三們語言在語法上也是有區別的。

但如果寫成文字,那麼80%左右的內容是相互可理解人(其他20%主要是辭彙、語法、文化等的不同造成的)。從文字層面上說,可以認為它們是漢語言的三種方言(不嚴格)。

關於粵語是語言還是方言,網上有足夠的討論,大家可以去搜。但是我覺的大家應該好好學習Python,她真的是一門不錯的語言。


偶像的認可;

14年時候,傳奇程序員tim sweeney到騰訊訪問,剛好到正在開發的天刀項目中來交流。

當時組裡同事都很激動,好幾個人過去表示,tim sweeney和虛幻引擎是激勵我們進入遊戲行業的原因,真指路明燈,過去猛烈的握手合影,場面一度控制不住;

(組裡同事和sweeney合影)

tim sweeney是純geek的感覺,完全沒架子,非常隨和,鄰居大哥的感覺,到團隊里看看引擎效果,一秒鐘進入狀態,問問題很專業,而且有的地方他猜不出怎麼做的時候就是那種求教的感覺,聽的時候很專註,完全沒有裝b的感覺,就是大家想像的樣子,非常贊。

然後看了大約這樣一個場景

sweeney和紫發TA哥給徐徐點頭,"shadow and lighting is pretty good"

然後是雲海和樹海

然後sweeney就high起來了,各種「wow「,"awesome","amazing"

表示是"best scene rendering I"ve ever seen"


有老婆……還有頭髮……


…………………………………………………………………………

沒想到抖個機靈,贊過百了,實在慚愧……
不過講真作為程序員真的應該做到work life balance…


龔大開大了,我這種智障先走了,諸位繼續,這破網站沒法玩了

對了,我有女朋友,還很漂亮

PS:我不是輪子哥,我體重只有半個輪子哥


寫了個 Game Engine。順便用自己的 Game Engine 寫了一系列的遊戲。

是的,為了方便編寫遊戲腳本,我還拓展了下 notepad++,當做個簡易的 IDE 來使用。

引擎里有哪些看起來比較複雜的東西?自己定義了一套腳本(叫做 fscript),寫了個簡單的腳本解析器。寫了個用在立繪切換的 Shader。搞了搞 FreeType。當初寫引擎的時候,鏈表和 hash 表的實現都是自己手寫的,那個酸爽~

做了個彈幕遊戲。

遊戲視頻:UP主自製遊戲_實況解說
圖形渲染、粒子系統、碰撞檢測都是自己寫的,還寫了個光效疊加的 Shader。當然最屌的還是音頻信息可視化,遊戲所有對象和狀態都和背景音樂有互動。


想想,這都是大二大三時候的事了。如果路子不走野的話,現在大概在做遊戲開發或者搞圖形、可視化相關的東西吧~ 哎,可惜了 ╮(╯▽╰)╭


我覺得作為一名程序員,你編寫的程序就像承載你思想和智慧的DNA片段,

程序員最大的成就就是能夠讓這些DNA片段在世界的各個角落潛移默化地影響著每個人的生活。

當然,還有可能是月球的某個角落。


嗯,有女朋友


和傳統行業相比, 程序員擁有了工作成果被無限複製的機會. 這也意味著, 你一個小時的工作, 可以有機會變成一萬個小時, 甚至更多. 同時, 你也有機會使你的工作惠及世界各地的人們, 以某種方式改變著他們的生活. 在你和世界之間建立的這種偉大的聯繫, 便是所謂成就感的來源吧.

有時候, 早上醒來, 看到用戶在app里上傳了新的作品, 一天都感到很開心. 或者看到身邊的家人朋友在使用自己製作的產品, 幸福感滿滿的時刻.

上幾張用戶上傳的圖片吧, 使用iOS應用 New Pixels 繪製的小圖片:

謝謝!


我女票(當時還不是)之前和她一朋友接了個兼職,是個什麼樣的兼職呢?

團購網站大家都知道,裡面是海量的商家、團購信息,這些信息怎麼來的呢,絕大部分都是銷售談好了商家,然後把圖片、信息等傳到系統里;再由工作人員在系統里安排分發給下面的『寫單』人員來寫這些單子信息。

由此可見這個工作沒啥技術含量,所以招了很多兼職的,按單子數結錢。

女票和她朋友每天要寫30個單子,但是這個下載特別費時間,總體來說流程是:

打開單子列表→複製單子的名稱→點進去單個單子→看附件是否是打包上傳的→如果是那麼直接下載/否的話,拉到最下面選擇打包下載→把下載的附件重命名為單子的名稱→全部下載完後,解壓開始傳圖片寫單子

這多麼複雜,尤其是下載、重命名,要點無數回,還有各種彈出頁面。於是靈光一閃,上網找了點資料,寫了個chrome插件:

於是乎,只要打開自動下載模式,直接點擊列表中的單子名稱,就會自動下載附件素材到以今天命名的桌面文件夾里,而且每個附件都重命名好啦。把原來半分鐘的時間縮短到了2秒,不用點來點去,不用複製來粘貼去,只要點點點滑鼠就好了,方便開心。


有老婆,
人到中年未禿頂,
沒有啤酒肚,
很少加班,
每周鍛煉4次


成就感,應該就是編寫的代碼得到同行的認可,編寫的程序產品可以讓廣大用戶(程序員)使用到,對他們的生活(工作)有一點點方便或者改善吧。世界可以因為自己的付出可以變的更美好一點,這本就是一件很快樂很有成就感的事情了。


高中時編寫遊戲腳本,盜QQ號,做簡單的網頁,非常裝逼。
大學時,幫外校女同學輔導計算機等級考試,買電腦,裝電腦。修電腦,成功進入女生宿舍若干次,女盆友非常開心,女盆友的室友非常開心,女盆友和她的室友都覺得我很牛逼。
畢業後幫客戶解決問題。搞定複雜問題,領導感覺我很給力。
被工作逼得不斷學習,感覺自己是傳說中的終生學習不斷成長,相當牛逼。
現在身為人父,特別擅長找寓教於樂的手機遊戲哄孩子。得益於行業的開放特性,預期不會有代溝,到時候說不定還能帶孩子一起農藥,以孩子為借口申請電子玩具一起玩。想想都牛逼。


大學最愁考試,尤其是政治,什麼馬原,毛概,統統去死好么。好了,下面開始正題。。
大二剛開始學C++,然後有點基礎。我們這屆的馬原和毛概老師神經病複發,要閉卷考試,當是我們的心情就是這樣的

然後我就發現,老師在電腦從她的優盤裡拷課件的時候,看到了xxx期末考試卷,哈哈哈哈(?ω?)hiahiahia ,原來期末考試卷都在老師優盤裡,這尼瑪是道送分題啊!回去我就開始coding,思路:既然試卷都在優盤裡,那能不能在老師插上優盤的時候,自動拷貝出來,然後再發我郵箱呢?經過兩晚上調試,親測可行,能夠把優盤裡以.doc或者docx的文件都拷貝到電腦的臨時目錄,然後又花了兩天,把文件發送到我郵箱 ,哈哈(?ω?)hiahiahia ,大功告成。就等著去收試卷。。

BTW,這個程序得事先運行在電腦上啊,老師打卡開電腦,我根本沒時間去運行程序啊!!!蛋疼,第一次嘗試失敗!

回去不甘心,改進一下,把程序打包到我的優盤裡,只要我優盤往電腦上一插,就會自動運行在電腦里,哈哈,我特么太機智了,那會兒都要蹦起來了好嗎!!

第二周,老師打開電腦,我就趁老師出去打水的功夫,先把優盤直接插上去,就直接回座位,然後老師發現優盤,問這是誰的,然後我就搶著說可能是上節課老師留下的,要不我先保管著,待會兒給樓管大爺吧(*/?\*)捂臉。哈哈哈。然後,老師插優盤,拷課件,哈哈哈,一切都順理成章!!

不要問我最後成績怎麼樣,我們宿舍集體90以上手動微笑臉╭( ′? ? ?′ )╭?警察叔叔!就是這個人!


袁工,麻煩您來總部一趟,有個問題一個月都沒解決,幾個工程師聯合調試也沒找到bug,嚴重拖延了項目進度。
哦,我去一趟。
好的,我讓小王開車去接您。
……
袁工,先吃飯,酒都溫好了。
我擺手,入座,看屏幕。
一刻鐘後,起身摸酒杯,未涼,微微熱。
袁工,真乃神人也。
……
酒足飯飽。
袁工,這是勞務費,拿著拿著。
袁工,什麼意思,嫌少??您不拿,就是看不起兄弟了,當著這麼多同事的面,您這是打兄弟的臉啊。
……
實際沒有這麼誇張,但差不多,錢我拿了,飯吃了,酒沒喝,離去那一刻,我留下一個偉岸的背影,有一股童話般的趾高氣昂。

……
解釋一下,有人問一個公司還有勞務費?!翻翻白眼,少見多怪,你的頭髮太長。

我們公司按不同事業部,相互之間很獨立,介於子公司和分公司之間(起碼我如此理解),還分新舊兩個園區。

我們事業部需要向動力部買電,按時交電費,很平常的一種公司運行模式,有時候合作緊密,有時候業務衝突,還有內部惡性競爭。

比如一套充電樁系統,剛走這點想法,事業部領導快點督促我去總部,要公章走流程,目的就是搶在另一個事業部之前,把數量不多的企業服務號註冊了,我記得當時申請的時候,微信好像只為一個公司提供5個服務號,不知道現在啥情況。

然後申請微信支付寶網銀的支付資格,再然後,領導長呼一口氣,好的,先看另一個項目,充電樁項目先放著。
……
再解釋,有人覺得我寫的和某些小說情節一模一樣,我可以很負責的說,確有其事,可能我說的有傳奇和演義色彩,下面也有解釋,當時我是謙虛實際心裡牛逼哄哄。其實大家都有這種體會,不是我編程牛逼,是他們天天看,過多討論業務邏輯,思維僵化了,而忽略一些簡單的技術細節,恰巧我就那麼一刻高光時刻,主角附體。

或者,大家就當我在吹牛逼吧!呼呼呼!


兒子喜歡玩遊戲,周末就編了一個小文本遊戲,小傢伙玩的不亦樂乎。

成就感滿滿 (? ̄▽ ̄)?


寫程序這麼多年,最有成就感當屬高中弄了個RPG,還有2010年第一次做出了帶intellisense的編輯器(依稀記得還用來 @Yong He 給他以前的一篇siggraph的文章寫demo )的時候。雖然這兩個東西都是Demo,技術遠遠比不上我做的其他東西,但開心這種事情本來就跟技術是沒有關係的(逃

工作的時候,還是實習期間做的事情覺得最屌,當時給VS加上了一個菜單,你可以在一個.net項目上面右鍵(不限語言),然後跑個Wizard,就可以把你的程序變成web service,一點代碼都不用寫。結果我走了之後,他們reorg,東西就流產了


推薦閱讀:

在技術上強到什麼程度,才會成為年薪百萬的技術型大牛?

TAG:技術 | 程序員 | 成就感 | IT行業 |