概述
磕磕碰碰又是一年惰聂,沉淪崛起又是一年,哭哭笑笑又是一年易遣,姑且來回顧一下今年的經(jīng)歷吧彼妻,總體來看今年的經(jīng)歷還是很“多樣”的。有個偉人說過豆茫,聰明的人懂得保持生活的不穩(wěn)定性侨歉。感覺我這一年可以用幾個字概括:在穩(wěn)定中窺探不穩(wěn)定。
大致的方面還是工作揩魂、學(xué)習(xí)和生活幽邓,特意看了上一年的展望,大致展望還是完成了火脉,馬馬虎虎牵舵。
工作
總的而言,工作壓力不小倦挂,主要設(shè)計幾個復(fù)雜項目的重構(gòu)畸颅,作為負責(zé)人,需要考慮的事情多方援,極力在保障系統(tǒng)的合理性和穩(wěn)定性没炒。這里挑主要的分類描述,細的事情且忽略犯戏。
重構(gòu)及帶來的思考
這一年需要重構(gòu)的大系統(tǒng)有兩個送火,別的小重構(gòu)就忽略不占篇幅了拳话,這兩個系統(tǒng)有共同的地方:
1、業(yè)務(wù)功能多漾脂;2假颇、業(yè)務(wù)處理流程長;3骨稿、業(yè)務(wù)邏輯復(fù)雜笨鸡;
在這些挑戰(zhàn)中,如何保障業(yè)務(wù)邏輯的可讀性坦冠、如何保障系統(tǒng)的穩(wěn)定性形耗、基于什么思維或模式對系統(tǒng)進行設(shè)計,這些都是擋在我們開發(fā)人員面前的首要問題辙浑〖さ樱苦心思慮,并和小伙伴付諸實踐后判呕,我發(fā)現(xiàn)沉淀下來其實是軟件設(shè)計的問題倦踢。若將這些重構(gòu)歸類于軟件設(shè)計的思考,我發(fā)現(xiàn)與nginx源碼中有共鳴的地方,因為都是很復(fù)雜的邏輯,這些邏輯用面向過程一行一行樸素地描述必然是無法維護的匠题,簡單而言是先確定軟件模型,再設(shè)計軟件流程晤碘,最后使用方法如模塊化、鉤子等將子邏輯解耦管理功蜓。后面有時間我再輸出一篇關(guān)于重構(gòu)的文章园爷,在nginx源碼的文章里也打算按此思路描述。這個過程是痛苦且無奈的式撼,基本是先確認(rèn)可行的方案童社,再與小伙伴們討論和后面編寫代碼驗證的過程中,不斷打磨和質(zhì)疑該方案端衰,并作出優(yōu)化叠洗。
在這個過程中也窺探到架構(gòu)設(shè)計的門檻,關(guān)于一個良好的架構(gòu)是如何被設(shè)計出來的旅东,這個問題被種下了一個種子灭抑。在2020學(xué)習(xí)的回顧中,nginx源碼后面的學(xué)習(xí)方向轉(zhuǎn)向軟件設(shè)計抵代,部分原因就是由此由來的腾节。
研發(fā)流程管理
在開發(fā)過程中,由于遇到一些大項目,逐漸意識到要保證項目良好案腺,研發(fā)流程的管理是必然要重視的庆冕,流程如系統(tǒng)設(shè)計、技術(shù)評審劈榨、模塊分工访递、協(xié)議制定、單元測試同辣、業(yè)務(wù)邏輯開發(fā)拷姿、聯(lián)調(diào)、提前冒煙測試等等旱函,都是需要專人和需要單獨的工作量的响巢,在各個階段小伙伴們各盡其事,將風(fēng)險識別并處理棒妨,才能保障項目是完善的踪古,系統(tǒng)穩(wěn)定性才是可保障的。小項目不需重視券腔,但是大項目不重視必手忙腳亂伏穆,捉襟見肘。
系統(tǒng)穩(wěn)定性思考
服務(wù)在重構(gòu)后纷纫,系統(tǒng)是分層設(shè)計的蜈出,每層邏輯也是歸屬到各個模塊的,系統(tǒng)的可讀性和可維護性是有相應(yīng)保障了涛酗,但是隨之而來的是架構(gòu)變動引發(fā)的系統(tǒng)穩(wěn)定性保障,如何防止模塊的越界偷厦,是否推行CodeReview商叹?如何保障模塊性能?如何保障模塊開發(fā)的質(zhì)量只泼,是否需要添加單元測試剖笙?以及服務(wù)的監(jiān)控指標(biāo)采集和監(jiān)控等等,這些都是引發(fā)的思考请唱,目前還沒有精力作更多的實踐弥咪,后面可能會作計劃實踐。
工作其它
其實不管是重構(gòu)還是小迭代十绑,抑或是職業(yè)發(fā)展聚至,工作中都不由自主的有一個自我驅(qū)動的問題,就是到底怎么樣的素質(zhì)本橙,才是一個高程應(yīng)具備的扳躬,在以往的面試經(jīng)歷中,可能會自然想到算法、某開源軟件源碼贷币、設(shè)計模式击胜,但是作為一個務(wù)實的程序員,我們心知肚明這些被“綁架”的技能其實在并不會在工作中發(fā)揮很大的影響役纹,或者說這些是基本技能而非決定性的關(guān)鍵技能偶摔,但是如何去探索這個命題呢?這個問題也是導(dǎo)致我學(xué)習(xí)方向轉(zhuǎn)變的原因促脉,后期學(xué)習(xí)會去看關(guān)于“高級開發(fā)基本的素質(zhì)”的書辰斋,如《代碼整潔之道》、《重構(gòu)》嘲叔、《程序員修煉之道-從小工到工匠》亡呵、《程序員修煉之道-通向務(wù)實的最高境界》等等,目前只輸出了《代碼整潔之道》的閱讀筆記硫戈,在學(xué)習(xí)計劃的回顧中在作描述锰什。
學(xué)習(xí)
學(xué)習(xí)其實占據(jù)了2020年很大的時間占比,在2020年年初接續(xù)19年的計劃丁逝,打算在架構(gòu)學(xué)習(xí)上繼續(xù)折騰汁胆,20年的大體計劃其實還是架構(gòu)學(xué)習(xí),只是在方向上有了更多轉(zhuǎn)變和細化霜幼。
20年初到年中嫩码,大概是3月到5月這個區(qū)間,折騰的是MySQL的高可用罪既,基本是分庫分表的實踐和輸出铸题,接續(xù)19年看kingshard的源碼,但是沒有取得很大的或者是實用的成效琢感,這段實踐后期是學(xué)習(xí)MySQL的協(xié)議丢间,因為kingshard的MySQL協(xié)議里握手的邏輯一直報錯,只能苦讀MySQL協(xié)議的官方文檔驹针,這部分的學(xué)習(xí)沒有進度管理烘挫,進度一般,后面也沒有沉淀輸出文章柬甥,是需要改善的地方饮六。
6月份開始,決定學(xué)習(xí)網(wǎng)絡(luò)模型苛蒲,網(wǎng)絡(luò)模型的沉淀已經(jīng)單獨輸出了文章了卤橄,其實主要是研究reactor的實現(xiàn)。
7月份臂外,開始學(xué)習(xí)nginx源碼虽风,初衷或者動機還是網(wǎng)絡(luò)模型棒口,主要希望了解nginx對于reactor的具體實現(xiàn)。這時候開始了學(xué)習(xí)進度管理辜膝,基本是記錄每周學(xué)習(xí)計劃无牵,每日進度,每周總結(jié)等等厂抖【セ伲看nginx源碼一直持續(xù)到年底,學(xué)習(xí)效率其實是比較一般的忱辅,不過也能勉強完成任務(wù)七蜘。
在近年底的時候,學(xué)習(xí)方向慢慢轉(zhuǎn)向至軟件設(shè)計墙懂,看nginx源碼的期間也穿插看了一些軟件設(shè)計的資料橡卤,主要是工作上已經(jīng)學(xué)習(xí)的思考總結(jié)上認(rèn)為軟件設(shè)計可能更有意義和有價值,方向其實還是架構(gòu)設(shè)計损搬。
nginx 源碼學(xué)習(xí)
看nginx源碼其實是希望了解reactor其中一個成熟的實現(xiàn)碧库,netty太復(fù)雜學(xué)成本太高,于是挑了一個稍簡單一些的nginx的實現(xiàn)巧勤,但是學(xué)習(xí)中對nginx的http細節(jié)的實現(xiàn)沒有太多的興趣嵌灰,主要是邏輯太多,在主框架的基礎(chǔ)上颅悉,http的幾個階段其實就是不斷的后續(xù)回調(diào)各階段回調(diào)函數(shù)處理沽瞭,具體細節(jié)強行背下來實在是太枯燥,沒作詳細的學(xué)習(xí)剩瓶。主要學(xué)習(xí)在對nginx的整個框架的流程上驹溃,對整體流程或事件模型還是比較熟悉的,目前對nginx的輸出目錄如下(nginx 源碼分析之網(wǎng)絡(luò)IO模型)延曙,后面視情況調(diào)整:
- nginx 設(shè)計概述
- 模型設(shè)計
- 多進程模型
- 多路復(fù)用模型
- 流程設(shè)計(主流程)
- 模塊設(shè)計
- nginx 進程或 reactor 模型概述
- nginx 進程信號模型
- nginx 進程通信
- 基于信號和通信吠架,nginx 的管程功能
- nginx 的鎖實現(xiàn)
- nginx 的定時器功能
- 子進程 reactor 事件模型
- nginx 執(zhí)行主流程(初始化服務(wù)端連接的邏輯等)
- 模塊結(jié)構(gòu)與模塊主流程解析
軟件設(shè)計
軟件設(shè)計是后期學(xué)習(xí)方向上的轉(zhuǎn)變,也是21年后續(xù)學(xué)習(xí)的方向搂鲫,學(xué)習(xí)的初衷有工作上重構(gòu)觸發(fā)的思考,有寫代碼過程中對代碼的思考磺平,最主要的是對學(xué)習(xí)方向的探索和后面的職業(yè)規(guī)劃魂仍,也就是架構(gòu)設(shè)計。在學(xué)了極客時間一些關(guān)于架構(gòu)設(shè)計的專欄和看了架構(gòu)師大神的直播后拣挪,對架構(gòu)設(shè)計有一個大體的了解擦酌,意識到在做一些“厲害”的系統(tǒng)架構(gòu)設(shè)計前,其實有不可缺的業(yè)務(wù)架構(gòu)設(shè)計和應(yīng)用架構(gòu)設(shè)計菠劝,這里包含了需求理解赊舶、系統(tǒng)邊界劃分、業(yè)務(wù)代碼設(shè)計等等更務(wù)實的架構(gòu)設(shè)計,這里可以看極客時間 王慶友 大神的架構(gòu)專欄笼平,李智慧大神在直播中也提到架構(gòu)是來源于業(yè)務(wù)园骆,并且是隨著公司業(yè)務(wù)發(fā)展逐步升級的。
在業(yè)務(wù)架構(gòu)里其實很重要的是如何做軟件設(shè)計寓调,如何對軟件作解耦锌唾,如何根據(jù)需求選擇對應(yīng)的軟件模型。這里引發(fā)出來的其實是對諸如軟件設(shè)計的藝術(shù)夺英、軟件設(shè)計的素質(zhì)等的探索晌涕。李智慧大神在直播中有一個建議的書單,書單第一個就是《程序員修煉之道-通向務(wù)實的最高境界》痛悯,因此在研究設(shè)計藝術(shù)前余黎,我想先了解和確認(rèn)一個高程應(yīng)具備的素質(zhì),或是架構(gòu)設(shè)計應(yīng)具備的素質(zhì)载萌,以作砍柴前磨刀之功惧财。
今年的進度尚開始,目前的學(xué)習(xí)計劃是讀《程序員修煉之道》炒考,后面的方向是設(shè)計原本可缚、設(shè)計模式,再往后是架構(gòu)模式等斋枢,計劃還待細化帘靡。
其他學(xué)習(xí)
由于現(xiàn)在求職對算法還是有不低的要求,因此算法的學(xué)習(xí)還是需要的瓤帚,但是20年沒有什么計劃和精力學(xué)習(xí)算法描姚。
除算法外,對概率論居然也有興趣戈次,20年翻出大學(xué)概率論的教材翻了幾章轩勘,并沒有深入的學(xué)習(xí)。
這些其它的學(xué)習(xí)怯邪,我打算作為學(xué)習(xí)的“點心”绊寻,當(dāng)在學(xué)習(xí)主方向上疲乏了,或停滯不前的時候悬秉,就轉(zhuǎn)移注意力到這些“點心”的學(xué)習(xí)上澄步,按20年的學(xué)習(xí)進度管理,無進度的時間還是相當(dāng)不少的和泌,與其停滯無進度村缸,不如轉(zhuǎn)移注意力在一些其它的愿意研究的方向上,算法和概率論都非常有意思武氓。
生活
生活上今年沒有太大的進步梯皿,19年的展望是調(diào)理好身體仇箱,但是并沒有太多的好轉(zhuǎn),但是好的方面是大概知道了病因东羹,后面慢慢調(diào)理還是有希望的剂桥。
生活上偏單調(diào),本意上是繼續(xù)發(fā)展健身百姓、養(yǎng)生的興趣渊额,并且將自己的生活調(diào)整為自己期愿的作息,但是心理上有一些問題垒拢,直接影響到身體了旬迹,導(dǎo)致健身到20年11月份基本就停止了,11月份前的計劃也僅僅是夜跑和晨跑求类,沒有太多真正興趣上的期盼奔垦。可以說20年的生活交的答卷是不及格的尸疆,從下面幾個方面椿猎,我記錄一下生活方面的回顧。
心理健康
從小在一個不怎么有愛的家庭成長寿弱,父親與母親之間沒有太多感情犯眠,極少相互關(guān)心,父親強勢症革,母親懦弱筐咧,我小時候還有家暴。父親將自己事業(yè)生意上的問題肆意發(fā)泄在家庭中噪矛,身為家庭的支柱卻給家庭施加了極大的壓力量蕊。母親經(jīng)常偷偷抹眼淚。我作為小孩子過早地暴露在這種成人的世界中艇挨,長期缺乏安全感残炮,后面進一步造成自卑和膽怯的性格。在此基礎(chǔ)上缩滨,父親強行將自己狹隘的世界觀強加在兒子身上势就,使得我更加郁悶,無處宣泄脉漏。在北京漂泊的6年苞冯,由于遠離家人,極少與父親溝通鸠删,心理健康上的問題反而被隱藏起來,回到南方后兒時記憶被喚起贼陶,父親處處價值觀和世界觀的強加使得心理一度扭曲刃泡。使得20年被籠罩在這個心理扭曲的陰影下巧娱,對生活的影響尤大。主要是心情壓抑烘贴,導(dǎo)致脾胃不好禁添,精神狀態(tài)差,身體氣血不好桨踪,因此健身老翘、工作、學(xué)習(xí)的進度很大一部分是由此影響的锻离。
上述這些基本就是20年的心理健康的情況了铺峭,好處是至今已經(jīng)能將心理問題描述出來,也就是能找到病因汽纠。目前看后面的職業(yè)發(fā)展不能算一馬平川卫键,但是也能一步一個腳印按計劃前進,只要自身可以完全獨立虱朵,脫離原生家庭莉炉,那么心理問題也能逐漸被解開。
由于骨子里愛好養(yǎng)生和運動碴犬,假以時日絮宁,可以將心理不健康導(dǎo)致的身體問題調(diào)理回來。
生活作息
生活作息上20年有幾個目標(biāo)服协,分別是晨練绍昂、飲食、睡眠上達到自身期望蚯涮,晨練20年堅持了半年治专;但是飲食上其實沒有按自己期望的來進食,還沒有太多精力來研究合適自己的食譜遭顶;由于心理問題张峰,以及工作壓力,20年睡眠上也有不少障礙棒旗,但是好在都有解決辦法喘批,慢慢調(diào)理即可。
作息上21年仍有很大的挑戰(zhàn)铣揉,仍有很多東西需要學(xué)習(xí)饶深,這些將會體現(xiàn)在21年的每周總結(jié)內(nèi),將會逐漸調(diào)整到正軌上逛拱。
蛋殼糾紛
自11月中下旬房東上門通知搬離敌厘,打開手機一看,方才知道蛋殼暴雷了朽合,而后就開始了每天心臟吊著的狀態(tài)俱两,一方面希望蛋殼能恢復(fù)饱狂,但是一方面又要與室友一起與房東周旋。后面發(fā)生的事情其實相對新聞上被趕宪彩、跳樓的租客而言是好運多了休讳,房東是個廣東中年婦女,性格其實很好尿孔,但是不明事理俊柔,在一次次談判中撕破臉皮,在基本達成了雙方將損失分?jǐn)偟姆绞胶蠡詈希欠繓|又不愿意分?jǐn)傋饪蛽p失雏婶。一度將我們租客趕到了派出所,好在警察同時是站在租客這邊芜辕,在警告房東后又平安度過了一周尚骄。這樣一直堅持了一個月,后面約到社區(qū)工作站調(diào)解的一周中侵续,房東提出可以多住一個月倔丈,我由于正在重構(gòu)大項目,工作壓力大状蜗,在損失10幾天房租的基礎(chǔ)上需五,各方分?jǐn)倱p失,雙方達成了一致轧坎。
12月中下旬宏邮,微眾銀行看租客是在是太可憐,將蛋殼欠租客的貸款免除缸血,轉(zhuǎn)為由微眾向蛋殼提起訴訟蜜氨,至此,我們這些占比高達69%的微粒貸租客終于解放捎泻,我在近12月底解除合同飒炎,搬到了村子里。
蛋殼糾紛正正發(fā)生在我作為負責(zé)人的第二個重構(gòu)項目中笆豁,工作壓力和生活壓力大郎汪,加上本身心理健康問題,一度精神狀態(tài)恍惚闯狱,還好室友小伙伴以及工作小伙伴非常給力煞赢,才能平穩(wěn)度過。
過年的一些思考
過年回老家哄孤,在一些瞬間發(fā)現(xiàn)按自己程序員的職業(yè)發(fā)展照筑,以及自己理想中的生活方式,回老家發(fā)展越來越不切合實際,目前還是多做準(zhǔn)備凝危,多學(xué)習(xí)饭弓。
回老家與親戚的交談中,意識到自己對未來的規(guī)劃太過細致媒抠,太過焦慮,實際上大部分人無法清晰地看到后10幾年自身的發(fā)展和未來咏花,既然如此趴生,何不將遙遠未來的規(guī)劃忘掉,像是10年后的未來昏翰,保持這個不穩(wěn)定性苍匆,保障自己未來2、3年的規(guī)劃穩(wěn)定性即可棚菊。焦慮來源于未知浸踩,那就把能控制的未知填上,將無法預(yù)知的未知忘卻统求。
21年展望
21年專注的方面與20年一致检碗,依舊是工作、學(xué)習(xí)码邻、生活折剃,不一樣的是需要做的比20年更好,要交更合格的答卷像屋。
工作上依然是沉淀怕犁,學(xué)習(xí)上依然是折騰,生活上依然是堅持己莺。當(dāng)然能找到更多的朋友一起走是再好不過的事情了奏甫。
在穩(wěn)定中窺探不穩(wěn)定吧,不是偉人說的凌受,我說的阵子。