==[碼農(nóng)翻身]15年編程生涯叔壤,資深架構(gòu)師總結(jié)的7條經(jīng)驗

15年編程生涯,資深架構(gòu)師總結(jié)的7條經(jīng)驗
http://mp.weixin.qq.com/s?__biz=MzAxOTc0NzExNg==&mid=2665513065&idx=1&sn=b82b7f98553d8a8e3c4256c8f4ecf742&scene=21#wechat_redirect


前言: 這是一篇應(yīng)InfoQ之邀寫的文章口叙, 首發(fā)在InfoQ微信公共號上炼绘。
大家有空可以多看看InfoQ 網(wǎng)站和公共號 , 是個很有深度的優(yōu)秀社區(qū)。

我和很多人交流過一個有趣的現(xiàn)象妄田,那就是剛畢業(yè)到30歲這段時間俺亮,會覺得時間過得很慢驮捍,總覺得自己還很年輕,但是一旦過了30歲脚曾,時間就如白駒過隙东且,一年又一年飛逝而過。
我自己也是本讥,眼瞅著畢業(yè)快15年了珊泳,15年間從一個剛畢業(yè)的菜鳥,成長為技術(shù)骨干拷沸,做到架構(gòu)師的職位色查,回頭看看,當(dāng)年聽取親戚的一句話撞芍,誤入計算機(jī)行業(yè)秧了,看來并沒有走錯,編程雖然枯燥辛苦序无,但是如果真的感興趣验毡,你就能體會到其中的樂趣,并且獲得可觀的回報帝嗡。
1

好奇心

劉慈欣在《朝聞道》中描繪過這么一個情節(jié):在古老的非洲大陸上晶通,有個原始人無意中抬頭仰望星空,凝視的時間稍微長了一些丈探,超過了外星人設(shè)置的閾值录择,立刻拉響了人類即將產(chǎn)生文明的警報拔莱。因為外星人認(rèn)為碗降,人類已經(jīng)產(chǎn)生了對宇宙的好奇心,文明的產(chǎn)生塘秦,科技的發(fā)展不過是一瞬間的事情讼渊。
確實是這樣,好奇心驅(qū)動人類不斷向前尊剔,在短短的幾千年(相對于長達(dá)幾十萬年的原始時代)里就登上了月球爪幻,并且努力向其他行星拓展。
對于程序員來說也是類似须误,如果你看到新技術(shù)挨稿,新產(chǎn)品沒有像小孩看到新玩具那樣兩眼放光,沒有想趕緊在自己電腦上玩玩的沖動京痢,你就需要仔細(xì)考慮下是否真的對軟件開發(fā)有興趣奶甘?如果根本沒興趣,不要浪費時間祭椰,還是趁早轉(zhuǎn)行臭家,有更多有前(錢)途的職業(yè)在等著你疲陕。
沒有好奇心,就不愿意追本溯源钉赁,追求技術(shù)的本質(zhì)蹄殃。
沒有好奇心,就難于靜下心來你踩,耐得住寂寞诅岩,遠(yuǎn)離浮躁和代碼奮斗,更難于跨過這個苦逼行業(yè)帶來的種種挑戰(zhàn)带膜,走到架構(gòu)師這個位置了按厘。
沒有好奇心,就不愿意學(xué)習(xí)新技術(shù)钱慢,一個架構(gòu)師逮京,如果沒有對技術(shù)的敏感度和前瞻性,一直抱著一套技術(shù)架構(gòu)不變束莫,估計很快會被淘汰懒棉。
當(dāng)然自制力強(qiáng)大的人除外,但話說回來览绿,靠著自制力讓自己做自己不喜歡的事情策严,豈不非常痛苦?
我在上公司的一個關(guān)于Leader的培訓(xùn)課的時候饿敲,老師一直在說Passion(激情)妻导,Passion,Passion怀各,但我一直覺得沒有好奇心倔韭,沒有興趣,怎么會產(chǎn)生Passion呢瓢对?
所以莫湘,對技術(shù)的好奇心/興趣峻贮,是一切的基礎(chǔ)。
2

養(yǎng)成計算機(jī)的思維方式

之前在“碼農(nóng)翻身”公共號發(fā)過一篇文章,叫《學(xué)會編程奏属,而不是學(xué)會Java》說的就是要能夠以計算機(jī)的方式去思考纳猪。
現(xiàn)在的計算機(jī)還很“弱智”址愿,你不能這么說:『電腦谭企,我要創(chuàng)建一個像Java的ArrayList類似的類,有個get埃仪、add乙濒、remove方法,還有這個ArrayList的容量不是固定的贵试,能夠自增長琉兜,快點給我寫出來凯正!』
現(xiàn)在的電腦當(dāng)然寫不出來。
相反你只能用計算機(jī)能理解的方式豌蟋,用非常非常低級的計算機(jī)語言去告訴它做事情:創(chuàng)建一個類廊散,分配一個固定大小的數(shù)組用來存放數(shù)據(jù),用一個數(shù)(size)來記錄數(shù)組里存了多少數(shù)據(jù)梧疲。如果數(shù)組滿了允睹,就需要增大數(shù)組,并且把數(shù)據(jù)從老數(shù)組復(fù)制到新數(shù)組幌氮。
這里邊有很多很多的煩人的細(xì)節(jié)需要你去處理缭受,一不留神就會出錯---計算機(jī)編程就是這樣。
養(yǎng)成計算機(jī)的思維方式该互,流暢的把人類語言的需求轉(zhuǎn)化成計算機(jī)語言米者,這是程序員的基本功。
很多人會語法宇智,也懂框架蔓搞,但是在基本功上卻不過關(guān),只能在初級程序員上踏步随橘。
這個基本功的訓(xùn)練就是數(shù)據(jù)結(jié)構(gòu)和算法喂分,我的經(jīng)驗是多做習(xí)題(大學(xué)時我把數(shù)據(jù)結(jié)構(gòu)后面的習(xí)題都做了一遍),讓這個思維在腦子里固化机蔗,以后的編程就可以信手拈來了蒲祈。
3

扎實基礎(chǔ),融會貫通

我很久之前參與過一點開源軟件的開發(fā)萝嘁,有幸看到了一個老程序員的簡歷梆掸,讓我震驚的是他竟然在Altair這個最早的電腦上編過程序。
沒錯酿愧,Altair就是那個連顯示器和鍵盤都沒有沥潭,靠撥動開關(guān)來輸入,靠指示燈來輸出的所謂“個人電腦”嬉挡,比爾蓋茨和保羅艾倫在上面寫了一個Baisc的解釋器,從此開始微軟之路汇恤。
如果有了在這樣的機(jī)器上編程的經(jīng)歷庞钢,我相信這些老程序員對硬件,驅(qū)動因谎,操作系統(tǒng)基括,應(yīng)用軟件的理解要遠(yuǎn)遠(yuǎn)超過我們現(xiàn)在這些人。
我之前要寫文章遇到了一個問題:一個進(jìn)程要讀取文件财岔,在底層用的是DMA的方式风皿,DMA完成文件讀取以后要通過中斷讓CPU去處理河爹,但是CPU和中斷處理程序根本不知道進(jìn)程的ID,它怎么去和進(jìn)行關(guān)聯(lián)桐款,如何去喚醒那個等待的進(jìn)程咸这?這個問題讓我意識到其實我對計算機(jī)的基礎(chǔ)也并沒有融匯貫通。
我們大學(xué)里都學(xué)過計算機(jī)組成原理魔眨、操作系統(tǒng)媳维、編譯原理、計算機(jī)網(wǎng)絡(luò)遏暴、數(shù)據(jù)庫侄刽、匯編語言,能不能把這些知識融會貫通朋凉,打通任督二脈州丹,在我們的腦海里建立一個計算機(jī)運算的圖景?
把這些知識融為一體杂彭,我相信能超越絕大多數(shù)程序員当叭。
現(xiàn)在的軟件開發(fā)封裝的層次已經(jīng)非常高了,只要學(xué)會Java就能做一個編程工作了盖灸,隨著你做的越來越深蚁鳖,越來越專,這些基礎(chǔ)的問題就會浮現(xiàn)出來赁炎。
更重要的是醉箕,計算機(jī)軟硬件的基本思想在這幾十年里其實變化不大,例如緩存徙垫,增加抽象層等讥裤,有了這么基本的思想的武裝,去學(xué)習(xí)新的東西不但學(xué)的快姻报,理解的會更透徹己英。
4

要透徹地理解一個技術(shù)的本質(zhì)

先舉個Ant中的例子,大部分人學(xué)習(xí)Ant只是學(xué)會怎么使用吴旋,認(rèn)識到Ant提供了很多內(nèi)置的task來幫助我們方便的完成自動化的構(gòu)建损肛,例如命令。
<copytodir="../backup/dir"> <filesetdir="src_dir"/> <filterset> <filtertoken="TITLE"value="FooBar"/> </filterset> </copy>
很少人會思考為什么Ant的task是以XML來描述的荣瑟?為什么Ant不提供一套Java類庫/API來讓程序員用治拿,那樣不是更自然嗎?
這其中的一個重要原因就是XML可以自定義標(biāo)簽笆焰,所以表達(dá)力無與倫比劫谅;如果用java,它的語法不允許自定義一個像copy、fileset這樣的關(guān)鍵字捏检,只能定義一些類來模擬這些Copy荞驴、Fileset,就沒有這么簡單明了贯城,不信你嘗試一下熊楼。
Ant給我們的重要啟示就是,用XML來描述任務(wù)冤狡,能極大的擴(kuò)展語言的能力孙蒙。但是Ant的問題就是需要程序員處理太多的細(xì)節(jié),指定源代碼路徑悲雳,指定編譯文件的路徑挎峦,指定資源文件的路徑,指定需要的jar包及其位置合瓢,很煩心坦胶。
于是Maven出來使用“約定優(yōu)于配置”的方式解決了Ant的問題。
理解了技術(shù)的本質(zhì)以后就能夠觸類旁通晴楔,就能夠快速學(xué)習(xí)顿苇,這在技術(shù)更新很快的軟件行業(yè)尤為重要。
只是學(xué)會使用是不行的税弃,不但要知道how纪岁,還要知道why。
停下來则果,思考幔翰,才是進(jìn)步的本質(zhì)。
5

要能寫漂亮的代碼

架構(gòu)師不是高高在上西壮,脫離代碼只說不做的人遗增。架構(gòu)師首先是一個優(yōu)秀的程序員,要能夠編寫項目或產(chǎn)品中的核心功能款青,隨時能夠卷起袖子去解決項目中的問題做修。
代碼寫的不漂亮怎么能拿得出手?怎么能夠服人抡草?
所謂漂亮代碼不僅僅是清晰饰及、易懂、優(yōu)雅渠牲,更要實現(xiàn)功能旋炒,沒有Bug或者極少Bug。
其實如果代碼簡單優(yōu)雅签杈,一般沒什么問題。
寫出漂亮代碼并不容易,需要思路清晰答姥,有良好的編程基礎(chǔ)铣除,有優(yōu)秀的抽象能力,以及對一門語言的熟練掌握鹦付。
6

抽象的能力

抽象思考的能力怎么強(qiáng)調(diào)都不為過尚粘。
現(xiàn)實的需求紛繁復(fù)雜,如果架構(gòu)師不能夠把這些亂無頭緒的需求抽象成一些“概念”敲长,在概念的層次進(jìn)行思考郎嫁,系統(tǒng)根本就無法設(shè)計。
但是抽象出概念以后還不夠祈噪,還要看看這個概念是不是正交的泽铛,能不能獨立變化,如果不能辑鲤,考慮下新的概念抽象盔腔。
“正交”講的是線性無關(guān),非常重要月褥,就像一個點(x,y)弛随,在x軸的變化不會影響y,y軸的變化不會影響x宁赤,這就是正交舀透。
“正交”威力巨大,(x,y)可以表達(dá)二維平面的所有的點决左,如果增加一個z軸愕够,不但能表達(dá)三維空間中所有的點,并且每個軸都可以獨立變化哆窿。
如果能做出正交的設(shè)計链烈,這個系統(tǒng)的開發(fā)和維護(hù)會非常舒服,以為可以放心大膽的修改其中一個方面兒不會影響其他挚躯。
設(shè)計模式一直強(qiáng)調(diào)的『發(fā)現(xiàn)變化并且封裝變化』其實就是這個意思强衡。
抽象能力的訓(xùn)練沒有捷徑,就是經(jīng)驗的積累码荔,勤于思考和學(xué)習(xí)漩勤。例如:學(xué)習(xí)Android的程序員可以思考下Android是怎么對未知的,紛繁復(fù)雜的應(yīng)用程序進(jìn)行抽象的缩搅?為什么有Activity越败、Service、BroadcastReceiver硼瓣、ContentProvider這四大組件究飞?
深入閱讀:《抽象置谦,程序員必備的能力
7

技術(shù)領(lǐng)導(dǎo)力

我在IBM學(xué)到的重要一課就是:要用技術(shù)的影響力來領(lǐng)導(dǎo)人,而不是威權(quán)和職位亿傅。
換句大白話來說媒峡,就是要能讓技術(shù)人員服你。有了技術(shù)影響力葵擎,你在團(tuán)隊發(fā)出的聲音才會被傾聽谅阿,被尊重。
但是影響力不是很快就建成的酬滤,這是個漫長的過程:你解決了一個技術(shù)難題签餐,你提出的方案被證明可行....
這樣的事情會一點一滴的積累起你在別人心目中的形象,建立你的個人品牌盯串,最終大家會給你貼上一個標(biāo)簽:大牛氯檐。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市嘴脾,隨后出現(xiàn)的幾起案子男摧,更是在濱河造成了極大的恐慌,老刑警劉巖译打,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耗拓,死亡現(xiàn)場離奇詭異,居然都是意外死亡奏司,警方通過查閱死者的電腦和手機(jī)乔询,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來韵洋,“玉大人竿刁,你說我怎么就攤上這事√掠В” “怎么了食拜?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長副编。 經(jīng)常有香客問我负甸,道長,這世上最難降的妖魔是什么痹届? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任呻待,我火速辦了婚禮,結(jié)果婚禮上队腐,老公的妹妹穿的比我還像新娘蚕捉。我一直安慰自己,他們只是感情好柴淘,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布迫淹。 她就那樣靜靜地躺著秘通,像睡著了一般。 火紅的嫁衣襯著肌膚如雪千绪。 梳的紋絲不亂的頭發(fā)上充易,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天梗脾,我揣著相機(jī)與錄音荸型,去河邊找鬼。 笑死炸茧,一個胖子當(dāng)著我的面吹牛瑞妇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播梭冠,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼辕狰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了控漠?” 一聲冷哼從身側(cè)響起蔓倍,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎盐捷,沒想到半個月后偶翅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡碉渡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年聚谁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滞诺。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡形导,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出习霹,到底是詐尸還是另有隱情朵耕,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布淋叶,位于F島的核電站阎曹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏爸吮。R本人自食惡果不足惜芬膝,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望形娇。 院中可真熱鬧锰霜,春花似錦、人聲如沸桐早。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至友存,卻和暖如春祷膳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背屡立。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工直晨, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人膨俐。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓勇皇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親焚刺。 傳聞我的和親對象是個殘疾皇子敛摘,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,520評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)乳愉,斷路器兄淫,智...
    卡卡羅2017閱讀 134,600評論 18 139
  • 一.每周運動2次。 前兩周都有堅持蔓姚,后面因為生理期和工作原因捕虽,都沒有堅持。最近很多事情都沒有在日事清里記赂乐。所以也沒...
    summerlight閱讀 214評論 0 0
  • 愛情是永恒的薯鳍,但情人不是。并不是所有你愛的人都能與你白頭偕老挨措。 01 “你這樣死皮賴臉的纏著我有什么意思挖滤?我已經(jīng)說...
    茶木森閱讀 294評論 0 0