足球资料库数据/孙祥/nba五佳球/足球直播哪个平台好 - cctv5今日现场直播

首頁 > 知識庫 > 正文

飛行的架構師和奔跑的程序員
2016-03-01 16:22:06   來源: mengyidan1988   評論:0 點擊:

原文地址:http: blog csdn net mindfloating article details 50682201 關于程序員和架構師的討論很多,我想從不同的角度說下。 尋路 當我剛進入軟件行業成為一名程序員時,我的理想就是成為一名架構師。架構師這個詞的英文叫 Architect,原意是建筑師,因為軟件行業參照借鑒了很多建筑行業的概念,所以就借用這個詞。我是在學校讀書時知道架構師這個名詞
原文地址:http://blog.csdn.net/mindfloating/article/details/50682201
關于程序員和架構師的討論很多,我想從不同的角度說下。

尋路

當我剛進入軟件行業成為一名程序員時,我的理想就是成為一名架構師。架構師這個詞的英文叫 Architect,原意是建筑師,因為軟件行業參照借鑒了很多建筑行業的概念,所以就借用這個詞。我是在學校讀書時知道架構師這個名詞的,當時很多軟件方面的書都是翻譯過來的,現在也不知道是誰最早把 Architect 翻譯成架構師的了。總之從那時起,架構師這個名詞對于我這個還剛準備走出校門的學生來說就特別高大遙遠,自然當成了最初的一個職業目標。

可惜,我進入第一家公司后,這是一個家民營 IT 服務企業,我發現居然沒有架構師這個職位。我所在的一個幾十人團隊里,本科剛畢業的是助理工程師,碩士剛畢業的是初級工程師,然后是中級,高級工程師。再往上就變成了項目經理、這個團隊就是一個項目經理,下面有幾個高工,然后一堆初級和助理工程師。讓我頗為失望的是,我當時明顯覺得未來我的職業發展目標并不是當時團隊項目經理所處的方向。不過一想我離架構師這個目標還早,當時估計最快也要十年吧,先把程序寫熟再說,我也不太可能在這里干十年,以后換個就好了。

實際,一年后我就換了個公司,入職后又失望了,發現還是沒有架構師這個職位。不僅沒有架構師職位,連工程師都不分初、中、高級了,全是軟件工程師,再上面是組長、科長、部長,然后就是總經理。科長、部長這類職位是國營性質的,而經理這類職位更像民營公司性質的,這就是一家正在從國營向公司制轉型的公司,所以職位也很奇特的混合著。我當時也是想還早,先專注好眼前的事,寫好程序做好事情,至于有沒有架構師這個職位將來再說。

在這里工程師雖說不分級,但團隊里也有一位大家口中的牛人,姓陳,大家稱呼陳總,實際并沒有承擔任何管理職責。工作了十多年了,專注于 IBM AIX 和 HP UX 小型機以及 Oracle 數據庫調優。我們那時經常長期出差在客戶現場開發、實施,支持上線等,陳總一般不出差。他出現的時候一般都是我快把數據庫搞掛的時候,然后就來現場救火,分析磁陣 IO,抓 SQL 調優什么的(當時應用系統都是圍繞數據庫為中心的)。通過從底向上來發現性能瓶頸,再建議程序優化,當時我覺得他最符合我對架構師這一角色的一些想象,但又總覺得還差點啥,當時是說不上來。總之當時我是很期盼看到一個真正的架構師是怎樣的,他們是如何工作的?

在第二家公司工作了幾年后,工作了已快 5 年了,我還是沒有找到答案,而且感覺走程序員技術發展道路在當前的公司碰到了瓶頸。再次跳槽后,我想之前民營和具有國營性質的公司都沒有架構師職位,而且這個名詞來自國外,那么外企應該會有吧?嘗試去面試過幾個外企,不幸的是英語口語太差都沒有通過面試,而我那段時間也從廣州搬回成都。老實說成都當時的程序員就業環境比廣州差不少,工作找的有些郁悶,就干脆休息了半年,好好想想清楚下個五年我該何去何從?

也正是在這賦閑的半年,我突然發現原來除了國企、民營 IT 服務(外包)企業和外企之外,還有一類公司和它們很不一樣。這就是互聯網公司,而可惜的是成都當時幾乎沒有任何互聯網公司在這邊有研發。而正在我等待的時間里,一家新興快速成長的互聯網電商公司正好在成都設立研發中心,時機正好也就加入進去。

奔跑

進了互聯網公司后,不僅有了架構師職位還有架構師團隊,有了方向又可以放心的作一名程序發力狂奔。不停的寫程序,優化代碼,追求更優更簡潔的代碼,重構了一遍又一遍,解決一個又一個問題。我曾在以前的文章中將程序員具體和代碼相關的工作比作劍術,修煉代碼技能類似練劍的過程。很多程序員夢想著有一天能成為一代高手,面對敵人,抽刀拔劍,剎那間交擊,歸劍入鞘,敵人倒下。就像線上系統突然出現大問題,你打開電腦,查了幾行日志,敲下幾行代碼,分分鐘系統恢復。

好吧,實際這也就在電影里能有,隨著系統規模的擴大,程序員需要解決的問題和解決問題的方式完全不同。以前看過一篇文章說,進入大規模分布式時代,局部的代碼優化已不是最重要的,不像二十年前硬件制約了軟件的規模。更重要的是程序之間的協作方式,溝通路徑的簡潔清晰性。

一個好的程序員當然能寫一手好代碼,在我學習寫程序的前七八年里,業余時間做了一些練習性質的項目。在 Github 之前的時代,Google 還能訪問,在 Google Code 上維護了應該不止十萬行的業余之作。后來 Github 興起后遷移過來,不斷練習重構優化維護自己的專屬工具庫,刪減了很多冗余代碼又新增了不少,目前還剩下幾萬行。這個過程持續了七年,基本每年重構優化一次,在 Github 持續 commit 時間最長有 118 天(最近看到有人連擊 365 天的,真心佩服)。如今過去兩年再回頭看曾經的代碼,不能說覺得完美到不能再優化了,只是覺得繼續下去于我劍術精進終究有限,而更大的價值如今已不再局部的優化上。

此時我已在團隊承擔總體的系統設計工作,專注于局部代碼優化其實是在驅動細節而非本質。資深程序員出身的架構師,單兵作戰能力都是極強的,就像《進擊的巨人》中的利威爾兵長,具備單挑巨人的能力。可當你面對成群結隊的巨人來襲時,個人單挑能力的作用始終有限。這時從程序員到架構師不僅僅是一個名稱的變化,有時它也意味著技能和視角的轉變。在地上飛奔了七八年的程序員,在面對成群的巨人襲來時,深深的感覺到,殺光巨人不應是目的,真正的目的是到達彼岸。選擇合適的路徑,堅定的前行,清除或繞過擋道的巨人,到達目的地。

飛行

資深的程序員,每天大部分時間和代碼打交道,當需要轉變為架構師時,卻有一個障礙,借用一句臺詞來說:
引用
汝今劍術已成 ,而道心未明,唯不能斬絕與代碼之情。

開發功能,解決 bug,優化代碼,這是一個資深程序員的拿手技能,也是地面作戰的基本技能。而一個架構師還需要掌握其他維度的技能,也許就像一個立體機動裝置,讓你能在需要時飛在空中看清全局,也能落地發起凌厲一擊。多了一個空中的維度,過去在地面練到精熟的劍術,飛在空中還有效么,這需要時間去學習,適應新維度的技巧。

這不是一個容易掌握的技能,這正是我曾經寫過的從一個點到另一個點連成線的技能升級,需要一個升維的學習過程。所以很多討論架構師到底還要不要寫代碼這事兒的,我思考后的結論是,需要拔劍時就拔劍,而無需在意如果每天不拔劍是不是劍就銹住了?當劍術精進后總覺得每次拔劍就要殺人(只處理難題),其實有時拔劍也可以只是切菜(擋路的小問題),只要有助于達到目標。就像《火星救援》里的馬克為了回家便要去種土豆,只要開始,解決一個問題,解決下一個問題,解決下下個問題,等解決了足夠的問題,就能回家了。飛在空中的架構師就是要在高處看清都有哪些擋在回家路上的必要問題,落地成為進擊的程序員們將其一一斬殺。

如今問我,還出劍么?劍還在手,該出就出。那么還練劍么?練,練空中出劍,術還未成,但道心已明。

相關熱詞搜索:互聯網 架構師 other 非技術

上一篇:怎么減少編程中的 bug?
下一篇:Go 1.6 發布,默認使用 Cgo ,支持 HTTP/2

分享到: 收藏