當前位置:
首頁 > 科技 > 頂級程序員的生活是怎樣的?網友:很後悔,找不到女朋友!

頂級程序員的生活是怎樣的?網友:很後悔,找不到女朋友!

當碼農的這幾年時間,經歷了好幾家完全不同類型的公司。具體屬於哪些領域範圍什麼的,這裡先不說了 ,身邊員工的平均水平已經是很不錯的。這種圈子以內,包括自己,基本上沒有什麼特別明顯上等下等之分。但是偶爾會接觸到境界更高的那種神人。不一定是年齡最大的。不一定是職位最高的。也不一定是那個最受歡迎的裝逼者。反而,往往是那個平時不怎麼說話,天天藏在角落打字,看上去獃獃的,感覺比較無聊、古怪的那個誰了。也許好幾個月一直都不知道他/她這個人到底在幹嘛。直到終於有一天看到了對方寫的代碼,或者稍微有機會溝通一下某個問題。。。然後迅速感覺到對方的嚇人能力。這種感覺,並不是刻意比較出來的,而是一種自然發自內心的好奇 ;欣賞-五體投地』敬佩,印象深刻。如果你對「頂級」的理解就是 Top 0.0001% ),那我就沒話說了,也許一輩子從來都沒接觸到過。但是至於那些 top 1% 左右到底是怎樣的。。。雖然還是比較稀有,但我們也都有所親身體驗吧。我們都有時候感到自己與這種人的差距之大,或者一些莫名其妙的自卑。還是可以討論一下的。據我觀察,這些人都有以下幾種共同特徵:

1)簡潔、清晰代碼不存在任何繁瑣的、密集的、多餘的、重複的。function 長度都不超過半個屏幕,深度又不超過兩層 closure(不存在for... for...)。複雜的那些流程都被組織起來,成為若干小 function,或者用多維向量式同步計算。一行代碼也不會太長,最多兩三個調用步驟(括弧)的樣子。而且代碼文件的長度也很合理。function、class、module、package 之類的樹根關係和分類,非常理智,按照所有代碼的負責範圍、功能、主次關係、附屬關係、以及調用/引用/公用的順序條件。什麼東西適合單獨拉出來,做成一個單獨的 library/庫,也都很有道理。再說,不存在任何奇怪的雜數、變數名、函數名,等等。configuration和tests之類的,都很詳細完整,又超級乾淨、易懂。所有 types/structs 的定義,內的,外的,也都是清楚分類,還有資料庫結構什麼的,都很靈活簡單,又嚴格。這種嚴格簡化,並不屬於格式癖、強迫症、等等毛病。純粹是為了讓自己和其他讀者一眼看懂所有代碼。代碼容易理解,容易更改,更別說容易利用/開啟。看到這樣的代碼,感覺好美啊,用不著任何comments等來說明解釋作者的思路。說白了,就是作者自己思路清晰的表現。從一開始計劃,就已經預料到了整個結構的需求,以及考慮到了許多未來需求。

2)細緻、耐心遇到新問題/bug的時候,大部分工程師只會想辦法避免,隱藏。比如加幾個 if。其實這種處理方式相當於治表不治本。而且會讓代碼越來越繁瑣,大大提高未來更多bug出現的概率。高級程序員,他們會焦慮很久,反覆把矛盾拆開;理解整個系統哪裡不對勁;比如哪個核心假設有錯。然後想辦法修改整個系統,提高輸入輸出容忍度,保持整體簡潔程度。以及加test。他們這樣做,經常顯得效率比較慢,有點煩人。但是個人覺得,考慮一下長期利弊,這樣處理問題是比較正確的。他們在開發新東西的時候,也可能用了更長時間才完成,一樣值得。細緻的另外一些優勢;他們腦子很清楚每個函數的輸出、輸入格式,以及函數的責任。更厲害的是:還很熟知每個東西的佔用時間和佔用資源,(還有complexity),細到每一行,幾個微秒納秒。也知道不同伺服器的速度差異,伺服器之間的時間距離,線程之間的距離,等等好多。他們知道哪些東西最值得優化。對這些方面都很敏感,也總有一大列自己不滿意的地方,追求完美的心不死。隨便問一下,他們可以告訴你這個過程在不同情況下的時間和資源需求,也不需要真的去做測試做分析。有時候真的很誇張!

3)靈活、萬能這種感覺來自他們對新事物的理解掌握速度。這種高能程序員,本來就肯定熟悉了至少三四門計算機語言,用過好幾百個庫。這些經驗足以讓他們快速看懂其它沒接觸過的東西,直接下手更改或利用。每次思考新問題,新的項目。。。一般工程師都是直接開始用自己最熟悉的工具來實現。但是對於頂級的那些來說,總有好多好多選擇。他們能研究利與弊,同時想辦法把將來的複雜程度最小化。如果一定要用自己不熟悉的工具,新的語言,也完全願意,無障礙。或者說,他們可以幫助其他團隊解決跟自己領域不太相關的問題。並且提出各種中肯建議,討論起一些人家都沒思考過的事。人家能有這種能力,讓人感覺好佩服。很多時候自己都沒開過這種腦洞,事情突然簡單了很多,每次或多或少,都有點慚愧。更誇張的是:他們的豐富經驗給他們帶來了一種莫名其妙的自信、勇敢。沒有適合的工具?好吧,自己寫一個出來。沒有這種服務、API、功能?好吧,自己做一個出來。有時候甚至發明自己的子語言來表達或處理新的一類問題。大家覺得很系統、很基本、很固定的那些東西,大神們都看作小事,隨便主動改一下,或者擴大功能,這些都無所謂了。什麼都不怕。還很會替其他團隊朋友考慮,經常獨立主動開庫,把新東西分享給大家一起用,甚至徹底公開、open-source。

4)懶這裡說的「懶」,不是貶義的!意思是:這些人時時刻刻都在想辦法減少自己的負擔。只要一個東西需要手動做兩次,他們就會立馬想辦法自動化。總是寫好多腳本負責每天要做的那些無聊事。腳本又都是整理得很清楚的,自動化的。懶到什麼程度;舉幾個例子:有個朋友不想查每天的運動比賽怎麼匹配(因為不同網站的命名雜七雜八)。所以設置每個小時,只要出現無法匹配的東西,直接給他發郵件鏈接讓他可以點進去處理。不僅是個腳本,那個鏈接也是他自己花了一天做出來的小網站,專門為了處理這種問題。點幾次滑鼠就完事了。暈!(以前其他公司都沒想到這個減少時間的幾個手段,還僱傭人專門每天手動核對,呵呵)之前公司有的人需要每次下交易,跟skype的人溝通,下單。最後感覺很煩,寫了一個自動程序負責跟這個人自動交流。後來徹底自動化了,包括每天的利潤報告都是自動生成。還蠻搞笑的。因為那個人說話也像機器一樣,都是固定句子格式,可能到現在還沒發現對方是掛機程序。(那家公司超懶,幾乎所有功能都是chat裡面說說的,對方程序接受命令並實現,根本不用手動登陸伺服器什麼的)以前在一家公司,有個臨時工,每天需要填時間收費表等等。還需要加進去各種他用的伺服器之類的還有lunch的cost。哈哈。。。最後他也基本上自動化了,直接生成pdf並發送。

二)。高級程序員都是這樣的心態。

5)性格、背景另外發現了一些趣事。這幾個人最大共同點就是從很小年齡開始對計算機感興趣。都是十二歲左右開始寫程序解決問題,或者編輯遊戲做mod之類的。而大多數後來才認真學編程的人,(大多數人類似吧),根本無法跟上他們的節奏和經驗。然後他們都比較安靜,不太擅長社交。好像。。。很多也都沒有男女朋友(?)頂級程序員肯定迷戀於計算機的所有運轉細節,根本不想花時間處理人類。有時候顯得非常驕傲,但是他們一般都是對的。至少,他們的好多預測都成立了,不僅是公司內部的事,好多科技趨勢他們也都早就相通了。對我來說,這就是神人一級的程序員。從他們身上能學到好多好多非常有價值的概念。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 玖陸科技 的精彩文章:

華為P20梳起劉海了!正式曝光:Al處理器 三顆攝像頭 前置指紋
進入「劉海屏」時代!國產手機也梳起了劉海,你喜歡哪一款?

TAG:玖陸科技 |