做一個快樂的程序員

      網友投稿 682 2025-04-04

      春節假期,與幾位友人小聚,大家互道工作順利、平安健康云云,期間一位馳騁商界多年的老友問:”你現在在華為做什么工作呀?”我很驕傲地說:”系統架構師“,可是他卻愣了很久,但當我老婆在旁邊補上一句“碼農“時,老友瞬間秒懂,卻把我受傷的心孤獨地留在風中凌亂。


      作為與UNIX同年代的人,我當初選擇計算機專業僅僅是因為抓到什么就學什么罷了。本科畢業遇到互聯網危機,便沒有想法地去讀了研,研究生畢業找工作,面試官問為什么要做軟件開發,答曰“不給錢都喜歡做的事情,何況還給錢”,便從此踏入了編碼這一行,只是從來沒想到一做就是十幾年。

      但凡一件事情做久了,無論成功與否,都會有一些真切的體驗和心得。以前也讀過一些工作中如何成功、快樂,諸如馬洛斯理論之類的文章,也許是因為自己領悟能力比較差,唯一的收獲是慶幸自己當初選擇了編碼作為自己的工作,因為編碼天生就具有讓人愉悅的工作內容和工作氛圍,快樂如影隨從。

      編碼世界:規則簡單有效,粗暴卻完美

      從事編碼,可以鍛煉邏輯思維能力,教會你如何思考。就像學習法律一樣,學法律的人未必都是為了成為律師,但法律教會了你一種思維方式。同樣的,通過編碼可以學習到這個世界上最嚴謹的思維方法。因為在編碼的世界里,對錯是簡單甚至絕對的,只要敲下鍵盤,計算機就會判定孰是孰非,0或1,規則簡單有效,粗暴卻完美。

      從事編碼,可以獲得持續的創造力。跟寫作、繪畫、作曲一樣,編碼也是一種創造性的工作。只要有一臺計算機,掌握了基本技能后,你便擁有了無限的超能,便能隨心所欲地創造出新的東西,豐富和美好這個世界,是不是很棒?

      更酷的是,編碼可以品味孤獨。除了跟別人交流、學習,程序員大部分時間都是獨自在工作,只要雙手觸摸到鍵盤,內心頃刻便會變的寧靜,多酷呀!伴隨著鍵盤清脆的低吟,沉浸在一個人的世界里,跟煙雨蒙蒙天,一杯茶,一個人聽著淅淅瀝瀝的雨聲品味孤獨,簡直有異曲同工之妙,多感性呀!

      能夠選擇編碼作為工作的人,大部分都是喜歡為人處世簡簡單單的人:這群人有著天真爛漫的好奇心,雖不茍言笑,但卻內心火熱,善于分享,樂于助人,甚至有時為了解決問題、寧愿不眠不休,卻深以為樂……跟這樣一群簡單純粹的人在一起,我覺得世界上最好的工作氛圍,也不過如此。

      程序員的三個境界

      但IT時代的膨脹已經讓編碼工作如同文藝復興時的印刷匠一樣,編碼門檻越來越低,遍地《一周XX速成》、《20天XX精通》,仿佛會寫代碼就成了程序員,這讓很多人認為從事編碼工作就是碼農。其實,印刷匠很多,成為大師的不多;碼農很多,但程序員并不多。程序員不是碼農,碼農也不是真正的程序員。

      程序員在英文里對應有三個單詞:Coder、Programmer和Software Engineer,我覺得這三個詞,生動形象地描述了程序員所需要經歷的三個階段,或者說三個境界——

      Coder:只要求能夠熟練使用編程環境,精通幾種編程語言、開發框架和開發庫,擅長寫代碼就可以了。這個階段的程序員能夠按照既定的設計完成編碼。

      Programmer:要求在coder的基礎之上,精通設計模式、算法實現和編碼技巧,并具備熟練應用的能力,這個階段的程序員能夠獨立編碼解決現實問題。

      Software Engineer:要求在掌握業務知識的前提下,理解為什么這么實現,在綜合考慮架構實現,權衡開發成本后,為解決業務問題提出最優方案,并能與業務人員順暢溝通,讓業務人員理解方案。編碼工作達到這個階段,才能稱得上是真正的程序員,才真正實現了從工作到職業的轉變。

      不可否認,這個世界上有一些天才的程序員,他們喝著咖啡,哼著歌,便完成了上面三個階段的修煉。但絕大部分人,都需要為此付出巨大的時間和精力。能否成為職業的程序員,影響因素和方法論很多,各種學習類、技術類的總結遍地都是:主動思考、及時總結、制定規劃等。但我認為其中最重要的是能否做到專注。

      許多沒有達到第三個階段的程序員,就是因為受到各種因素誘惑,變得心猿意馬,不夠專注。因為不夠專注,他們不在意做好自己本職工作,不在意錘煉自己的技能,不在意學習新興的技術。慢慢的,他們會認為從事編碼沒有出路,進而毫無例外地把編程看成是體力勞動,只會粘貼拷貝代碼,知其然而不知其所以然,導致技術停滯不前。在這樣的狀態下工作5年、10年,對于他們來說,沒什么區別,程序員真的就是吃青春飯的碼農。

      程序員VS碼農:我們不一樣

      要避免程序員變成碼農,必須對編碼保持熱情,并持續學習;必須保持好奇心,樂于探求事物本質;必須對所做的工作及時總結,主動優化代碼,讓系統變得更加有機;必須主動嘗試更好的開發方式、更先進的工具,來提升開發效率,并想辦法避免重復性的工作;必須不斷改進設計,將編程變成創造性的工作。只要通過這樣逐步地積累經驗和長時間錘煉,知識體系才能構建完備和豐富,才能避免淪落為碼農。

      幾年前,我曾經重構過一個模塊,從外部看模塊的所在的系統,都是類似這樣的,簡潔而漂亮:

      但從程序員編碼實現的層面看,它實際上是這樣的:

      這個設計在最初的版本沒有任何問題,使用繼承擴展管理對象的接口能力,但僅僅過了兩個版本,項目組PL說實在撐不下去了:增加一個接口,需要修改200多個地方,如果再過一個版本,估計要修改400多個地方了。

      后來我把它改成這個樣子,使用聚合消除了耦合:

      做一個快樂的程序員

      從代碼實現層面看,在功能剛開始開發時,這兩個設計區別不是很大,但隨著系統演進、越來越多的功能加入,繼承關系帶來的耦合會導致模塊之間關系越來越復雜,牽一發而動全身,終究有一天哪怕只做很小的改動,也將成為壓死駱駝的最后一根稻草。

      這次重構的成果是代碼量由43K減少到15K,擴展新的接口能力不再需要修改已有代碼。我想,這或許就體現了碼農和程序員的區別吧。

      CT是一個業務復雜度極高的行業,要想從碼農成長為程序員,需要經歷更多的煎熬,需要發揮更多的創造力,同時也意味著,我們比以往任何時候都需要越來越多的碼農成長為程序員。

      既然我們選擇了編碼作為職業,注定會經歷各種心劫:枯燥、沮喪、迷茫,甚至浮躁……然而無論處于哪種心境當中,我相信,只要想起自己曾經滿懷驚奇、興奮與真誠敲下的那個程序——“Hello,World!”我們就會充滿了渴望和力量,因為那是程序員最初的夢想:改變世界。

      本文為《華為人》版權所有,未經允許不得轉載。如需轉載請聯系編輯部hwrb@huawei.com

      計算 開發者

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:實時立體匹配網絡StereoNet
      下一篇:【IoT】(零)HAL
      相關文章
      日韩精品亚洲专区在线影视| 亚洲av无码成人精品国产| 亚洲乱码国产一区网址| 亚洲AV无码专区在线电影成人| 国产成人精品日本亚洲网址| 亚洲一区二区影视| 亚洲国产精品乱码在线观看97| 婷婷久久久亚洲欧洲日产国码AV | 国产国拍精品亚洲AV片| 亚洲精品无码久久久久AV麻豆| 在线观看亚洲视频| 亚洲国产综合人成综合网站| 亚洲Av无码国产情品久久| 亚洲AV蜜桃永久无码精品| 亚洲精品WWW久久久久久| 亚洲伦乱亚洲h视频| 综合亚洲伊人午夜网| 亚洲午夜久久久久久久久电影网| 亚洲色精品vr一区二区三区 | 亚洲精品制服丝袜四区| 亚洲国产精品无码久久久不卡| 亚洲av无码精品网站| 久久久久亚洲AV无码网站| 亚洲午夜国产精品| 日本亚洲精品色婷婷在线影院| 亚洲熟妇AV乱码在线观看| 亚洲av无码成人影院一区| 亚洲国产免费综合| 亚洲午夜福利在线观看| 亚洲电影国产一区| 亚洲第一页在线观看| 中文字幕在线观看亚洲视频| 亚洲国产成人无码AV在线 | 久久久亚洲裙底偷窥综合| 亚洲日韩乱码中文无码蜜桃 | 久久国产亚洲精品麻豆| 18gay台湾男同亚洲男同| 亚洲资源最新版在线观看| 亚洲av无码专区亚洲av不卡| 久久久久亚洲AV无码专区桃色| 久久九九亚洲精品|