思想篇:
八、抽象
按照維基百科上的解釋笤休,抽象是指為了某種目的,對一個(gè)概念或一種現(xiàn)象包含的信息進(jìn)行過濾政基,移除不相關(guān)的信息,只保留與某種最終目的相關(guān)的信息辕坝。
從另一個(gè)角度看荐健,抽象就是簡化事物,抓住事物本質(zhì)的過程江场。抽象幫助我們將現(xiàn)實(shí)世界的對象抽象成類址否,完成從現(xiàn)實(shí)世界的概念到計(jì)算機(jī)世界的模型的映射。
面向?qū)ο蟮乃枷胫饕?個(gè)方面:面向?qū)ο蟮姆治觯∣bject Oriented Analysis佑附,OOA)、面向?qū)ο蟮脑O(shè)計(jì)(Object Oriented Design啄骇,OOD)瘟斜,以及我們經(jīng)常提到的面向?qū)ο蟮木幊蹋∣bject Oriented Programming,OOP)虽惭。
簡單來說蛇尚,抽象的過程就是合并同類項(xiàng)、歸并分類和尋找共性的過程匆笤。也就是將有內(nèi)在邏輯關(guān)系的事物放在一起谱邪,然后給這個(gè)分類進(jìn)行命名,這個(gè)名字就代表了這組分類的抽象咆课。
在開發(fā)工作中,很多時(shí)候就需要通過抽象層次的提升來提高代碼的可讀性和通用性书蚪。
為什么閱讀書籍比看電視更好呢殊校?因?yàn)閳D像比文字更加具象,閱讀的過程可以鍛煉我們的抽象能力为流、想象能力,而看畫面時(shí)你的大腦會(huì)被鋪滿,較少需要抽象和想象拜英。
做總結(jié)最好的方式就是寫文章居凶,小到博文,大到一本書侠碧,都是鍛煉自己抽象思維和結(jié)構(gòu)化思維的機(jī)會(huì)弄兜。記錄也是很好的總結(jié)習(xí)慣。以讀書筆記來說替饿,最好不要原文摘錄書中的內(nèi)容,而是要用自己的話總結(jié)歸納踱卵,這樣不僅可以加深理解据过,還可以提升自己的抽象思維能力。
對于技術(shù)人員來說西饵,還有一個(gè)非常好的提升抽象能力的手段——領(lǐng)域建模鳞芙。當(dāng)我們對問題域進(jìn)行分析庸队、整理和抽象時(shí)闯割,或?qū)︻I(lǐng)域進(jìn)行劃分和建模時(shí)宙拉,實(shí)際上都是在鍛煉我們的抽象能力。
九谢澈、分治
“分”就是遞歸地將原問題分解成小問題锥忿;“治”則是在解決了各個(gè)小問題(各個(gè)擊破)之后合并小問題的解,從而得到整個(gè)問題的解敬鬓。
分治法解題的一般步驟如下。
(1)分解:將要解決的問題劃分成若干規(guī)模較小的同類問題础芍。
(2)求解:當(dāng)子問題劃分得足夠小時(shí)数尿,用較簡單的方法解決。
(3)合并:按原問題的要求诊杆,將子問題的解逐層合并何陆,構(gòu)成原問題的解。關(guān)于函數(shù)分解宰缤,在此強(qiáng)調(diào)以下兩點(diǎn)晃洒。
(1)函數(shù)長短是職責(zé)單一的充分不必要條件,也就是長函數(shù)往往意味著職責(zé)不單一氧骤,但是短函數(shù)也不一定就意味著職責(zé)單一吃引。
(2)在使用組合函數(shù)模式時(shí)刽锤,要注意抽象層次一致性原則(Single Level ofAbstration Principle,SLAP)朦佩,不同抽象層次的內(nèi)容放在一起會(huì)給人凌亂并思、邏輯不協(xié)調(diào)的感覺。優(yōu)雅的代碼很少是一次成形的语稠,大部分情況下要經(jīng)過兩次創(chuàng)造:第一遍實(shí)現(xiàn)功能宋彼,第二遍重構(gòu)優(yōu)化。
重構(gòu)優(yōu)化仙畦,即在第一遍實(shí)現(xiàn)功能的基礎(chǔ)上输涕,看一看是否可以做得更好:命名合理嗎?職責(zé)單一嗎慨畸?滿足OCP嗎?函數(shù)是否過長寸士?抽象是否合理檐什?
分層架構(gòu)的目的是通過分離關(guān)注點(diǎn)來降低系統(tǒng)的復(fù)雜度,同時(shí)滿足單一職責(zé)碉京、高內(nèi)聚厢汹、低耦合螟深、提高可復(fù)用性和降低維護(hù)成本谐宙,也是一種典型的分治思想。
所謂豎切界弧,就是按照領(lǐng)域?qū)误w數(shù)據(jù)庫拆分成多個(gè)數(shù)據(jù)庫凡蜻。比如,原來電商數(shù)據(jù)都是放在一個(gè)庫中垢箕,我們可以按照領(lǐng)域拆分成商品庫划栓、會(huì)員庫、交易庫等条获。
橫切是通過一種數(shù)據(jù)路由算法對數(shù)據(jù)進(jìn)行分片忠荞,從而減少一個(gè)數(shù)據(jù)庫中的數(shù)據(jù)量。比如帅掘,我們要將會(huì)員的交易數(shù)據(jù)切分成10個(gè)庫委煤,可以用userId對10進(jìn)行取模。
十修档、技術(shù)人的素養(yǎng)
- 不教條
- 批判性思維
- 批判性思維(Critical Thinking)是一種謹(jǐn)慎運(yùn)用推理去斷定一個(gè)斷言是否為真的能力碧绞。它要求我們保持思考的自主性和邏輯的嚴(yán)密性,不被動(dòng)地全盤接受吱窝,也不刻意地帶著偏見去駁斥一個(gè)觀點(diǎn)讥邻。
- 尼爾·布朗寫的被譽(yù)為批判性思維領(lǐng)域經(jīng)典讀物的《學(xué)會(huì)提問》迫靖,另一本是樊登讀書會(huì)推薦的《思辨與立場:生活中無處不在的批判性思維工具》
- 成長型思維
- 越挫越勇,把每一次失敗都當(dāng)成學(xué)習(xí)的機(jī)會(huì)兴使。
- 具有成長型思維的人相信自己可以通過學(xué)習(xí)來提升自我系宜,相信學(xué)習(xí)和成長的力量,相信努力可以改變智力和能力鲫惶。
- 我們需要具備成長型思維才能應(yīng)對工作和生活中的壓力蜈首,這樣在遇到問題時(shí),我們才不會(huì)輕言放棄欠母,而是會(huì)積極主動(dòng)地去學(xué)習(xí)欢策,去尋找解決方案。
- 結(jié)構(gòu)化思維
結(jié)構(gòu)化思維的定義就是“邏輯+套路”赏淌。
所謂邏輯踩寇,是指結(jié)構(gòu)之間必須是有邏輯關(guān)系的。
組織思想的邏輯只有4種六水。
(1)演繹順序:比如“大前提俺孙、小前提、結(jié)論”的演繹推理方式就是演繹順序的掷贾。
(2)時(shí)間(步驟)順序:比如“第一睛榄、第二、第三”和“首先想帅、再者场靴、然后”等,大多數(shù)的時(shí)間順序同時(shí)也是因果順序港准。
(3)空間(結(jié)構(gòu))順序:比如“前端旨剥、后端、數(shù)據(jù)”和“波士頓浅缸、紐約轨帜、華盛頓”等,化整為零(將整體分解為部分)等都是空間順序衩椒。在做空間分解時(shí)蚌父,要注意滿足“相互獨(dú)立,完全窮盡”(Mutually Exclusive Collectively Exhaustive毛萌,MECE)原則苟弛。
(4)程度(重要性)順序:比如“最重要、次重要朝聋、不重要”等嗡午。套路是指我們解決問題的方法論、路徑和經(jīng)驗(yàn)冀痕。
邏輯是一種能力荔睹,而套路是方法論狸演、經(jīng)驗(yàn);邏輯屬于道僻他,而方法論屬于術(shù)宵距。二者都很重要,只有熟練地掌握二者吨拗,我們才能有更好的結(jié)構(gòu)化思維满哪。
最清晰和實(shí)用的結(jié)構(gòu)化表達(dá)是“提出問題,定義問題劝篷,分析問題哨鸭,解決問題,最后展望未來”娇妓。
5 工具化思維
- 偷懶也有高低之分像鸡,可以分為3個(gè)境界。
(1)最差的境界是“實(shí)在懶”哈恰,拖延不喜歡的任務(wù)只估。
(2)其次是“開明懶”,迅速做完不喜歡的任務(wù)着绷,以擺脫之蛔钙。
(3)最高的境界是“智慧懶”,編寫某個(gè)工具來完成不喜歡的任務(wù)荠医,以便再也不用做這樣的事情了吁脱,從而一勞永逸。- “硬干”或“苦干”并沒有帶著光環(huán)子漩,而是一種徒勞豫喧、低效石洗、大可不必的努力幢泼,只會(huì)說明你做事情很急切,但并不是在完成工作讲衫。人們?nèi)菀谆煜袆?dòng)與進(jìn)展缕棵、混淆忙碌與多產(chǎn)的概念。
- 在有效的工作中涉兽,最重要的是思考招驴,而人在思考時(shí)通常看上去不會(huì)很忙枷畏。如果和我共事的程序員總是忙個(gè)不停别厘,我會(huì)認(rèn)為他并非優(yōu)秀的程序員,因?yàn)樗麤]用最有價(jià)值的工具——自己的大腦拥诡。
- 每當(dāng)你重復(fù)同樣的工作3次以上触趴,就應(yīng)該停下來問問自己:我是不是可以通過自動(dòng)化腳本氮发、配置化,或者小工具來幫助自己提效冗懦?
6 好奇心
- 好奇心是學(xué)習(xí)的起點(diǎn)爽冕,是創(chuàng)新的原動(dòng)力。我們每個(gè)人都應(yīng)該像小孩子一樣保持對知識(shí)的渴望披蕉,對世界的驚奇颈畸。
7 記筆記
- 首先,做筆記的人基本都是持續(xù)學(xué)習(xí)的人没讲;其次眯娱,記錄本身也有很多好處。
(1)知識(shí)內(nèi)化:記筆記的過程是一個(gè)歸納整理爬凑、再理解困乒、再吸收的過程,可以加深我們對知識(shí)的理解贰谣。
(2)形成知識(shí)體系:零散的知識(shí)很容易被遺忘娜搂,而形成知識(shí)體系之后,知識(shí)之間就能有更強(qiáng)的連接吱抚。
(3)方便回顧:筆記就像我們的硬盤百宇,當(dāng)緩存失效后,我們依然可以通過硬盤調(diào)回秘豹,保證知識(shí)不丟失携御。- (1)使用云筆記:云筆記要能在多端使用,要有目錄的層次結(jié)構(gòu)既绕、標(biāo)簽和搜索功能啄刹。如果有些場合只能用筆做記錄,也沒關(guān)系凄贩,回來之后再整理到云筆記上誓军。
(2)歸類分組:要定期回顧筆記內(nèi)容,盡量按照合理的方式對筆記進(jìn)行重組疲扎,形成一個(gè)有邏輯關(guān)系的樹形結(jié)構(gòu)昵时。這樣既方便記憶檢索,也可以逐漸形成自己的知識(shí)體系椒丧。對于歸于A組或B組都沒錯(cuò)的筆記壹甥,可以使用標(biāo)簽來輔助分類。
(3)不要復(fù)制粘貼:好的筆記最好是自己消化后的總結(jié)壶熏,而不是簡單的照抄句柠。如果有引用和參考,建議把鏈接也放在筆記下面,方便溯源溯职。
(4)結(jié)構(gòu)化表達(dá):對于簡短的內(nèi)容要重點(diǎn)突出管怠,粗體顯示重點(diǎn)部分;對于篇幅較長的內(nèi)容缸榄,最好有目錄渤弛,這樣可以更加結(jié)構(gòu)化地呈現(xiàn)筆記內(nèi)容。8 有目標(biāo)
- “你要做一個(gè)什么樣的人”并不是一個(gè)可有可無的次要問題甚带,而是首先要回答的頭等大問題她肯。
- 先想清楚目標(biāo),然后努力實(shí)現(xiàn)鹰贵。不管是人生大問題晴氨,還是階段性要完成的事情,都需要目標(biāo)清晰碉输、有的放矢籽前。
- 在這個(gè)信息爆炸的時(shí)代,如果只是碎片化地接收各個(gè)公眾號(hào)推送的文章敷钾,學(xué)習(xí)效果幾乎可以忽略不計(jì)枝哄。在學(xué)習(xí)之前,我們一定要問自己阻荒,這次學(xué)習(xí)的目標(biāo)是什么挠锥?
9 選擇的自由
- 自由是一種價(jià)值觀,是一種為自己過去侨赡、現(xiàn)在及未來的行為負(fù)責(zé)的價(jià)值觀蓖租。自由是一種責(zé)任,是一種敢于做出選擇羊壹,并愿意為自己的選擇承擔(dān)后果的責(zé)任蓖宦。
- 責(zé)任感(Responsible),從構(gòu)詞法來說是“能夠回應(yīng)(Response—able)”的意思油猫,即選擇回應(yīng)的能力稠茂。
- 積極主動(dòng)的人有選擇的自由,而消極被動(dòng)的人往往是被動(dòng)地接受影響眨攘,忘記了自己的主觀能動(dòng)性主慰,忘記了在刺激和回應(yīng)之間還有選擇的自由
- 但凡成大事者嚣州,都能夠“處亂世而不驚鲫售,臨虛空而不懼,喜迎陰晴圓缺该肴,笑傲雨雪風(fēng)霜”情竹。正因?yàn)樗麄兪亲约核季S的主人,而不是被思維所控制匀哄,他們知道不管身處什么樣的境地秦效,都有“選擇的自由”雏蛮。
10 平和的心態(tài)
- 首先,我們做事情的出發(fā)點(diǎn)必須是善的阱州。其次挑秉,“有為的事”是指要認(rèn)真做事,認(rèn)真生活苔货;“無為的心”代表一種平和的心態(tài)犀概,一種活在當(dāng)下的智慧。也就是做事要積極夜惭,但是心態(tài)要放平姻灶。
- 真正平和的人了解自己所有的主觀感受都只是一瞬間的波動(dòng)。雖然疼痛诈茧,但不再感到悲慘产喉;雖然愉悅,但不再干擾心靈的平靜敢会。于是曾沈,心靈變得一片澄明、自在鸥昏。心靈平靜的力量十分強(qiáng)大晦譬,那些窮極一生瘋狂追求愉悅心情的人完全難以想象。
11 精進(jìn)
精進(jìn)就是你每天必須進(jìn)步一點(diǎn)點(diǎn)互广!
image.png- 巴菲特說:“人生就像滾雪球敛腌,關(guān)鍵是要找到足夠濕的雪,和足夠長的坡惫皱∠穹”
- 但凡能持續(xù)學(xué)習(xí)和精進(jìn)的人,其結(jié)果都不會(huì)差旅敷。
十一生棍、技術(shù)Leader的修養(yǎng)
技術(shù)氛圍
- 代碼好壞味道
- 技術(shù)分享
- CR周報(bào)
- 讀書會(huì)
目標(biāo)管理
- 一個(gè)好的Leader,應(yīng)該是愿意花時(shí)間和下屬一起討論媳谁、制定目標(biāo)的涂滴。在過程中,給予幫助和指導(dǎo)晴音,及時(shí)對焦糾偏柔纵,確保目標(biāo)的達(dá)成。
- 目標(biāo)管理的常見手段有關(guān)鍵績效指標(biāo)(Key Performance Index锤躁,KPI)和目標(biāo)與關(guān)鍵成果(Objectives Key Results搁料,OKR)兩種方法。相比較而言,一味地追求KPI郭计,可能會(huì)導(dǎo)致短視霸琴;OKR更注重短期利益和長期戰(zhàn)略之間的平衡。
- OKR主要有如下兩個(gè)特點(diǎn)昭伸。
(1)OKR可以不和績效掛鉤梧乘,主要強(qiáng)調(diào)溝通和方向。
(2)OKR比KPI多了一個(gè)層級(jí)的概念庐杨,O(Objective)是要有野心的宋下、有一定的模糊性,但是KR(Key Results)需要是可量化的辑莫,并且KR一定要為O服務(wù)学歧,不能偏離O的方向。- SMART原則 : S代表Specific各吨,表示指標(biāo)要具體枝笨;M代表Measurable,表示指標(biāo)要可衡量揭蜒;A代表Attainable横浑,表示指標(biāo)是有可能達(dá)成的;R代表Relevant屉更,表示KR和O要有一定的相關(guān)性徙融;最后,T代表Time bound瑰谜,表示指標(biāo)必須具有明確的截止期限欺冀。
- OKR中的目標(biāo)必須是有野心的。因?yàn)橹挥懈哌h(yuǎn)的目標(biāo)萨脑,才能最大程度地激發(fā)人的潛能隐轩。
技術(shù)規(guī)劃
- 技術(shù)規(guī)劃更多的是從團(tuán)隊(duì)視角去看接下來要做的事情,而目標(biāo)管理是要把規(guī)劃要做的事情進(jìn)行拆解渤早,和個(gè)人目標(biāo)對齊职车。
- 第一層問題解決是最直接的,主要看團(tuán)隊(duì)中現(xiàn)在有什么迫切鹊杖、緊急的問題需要解決悴灵,有哪些坑要去填。
- 技術(shù)領(lǐng)域要做的是在這些常規(guī)領(lǐng)域中骂蓖,根據(jù)業(yè)務(wù)情況和團(tuán)隊(duì)情況選擇一些領(lǐng)域和命題(比如穩(wěn)定积瞒、性能、效率等)涯竟,并在這些命題和方向中根據(jù)優(yōu)先級(jí)做判斷赡鲜。
- 讓業(yè)務(wù)先贏是技術(shù)的首要使命空厌。
- 作為技術(shù)團(tuán)隊(duì)庐船,我們要對比團(tuán)隊(duì)內(nèi)外技術(shù)的異同银酬,最終圈定一個(gè)差異化區(qū)域。這塊區(qū)域是團(tuán)隊(duì)的特色技術(shù)筐钟,是團(tuán)隊(duì)借外力之外要修內(nèi)功的部分揩瞪,是不依賴別人而主要靠自己突破的部分,是團(tuán)隊(duì)相比外面的差異化競爭力篓冲。
推理階梯
- “推理階梯”的發(fā)生會(huì)經(jīng)歷以下步驟李破。:
(1)收集數(shù)據(jù)
(2)選擇性接收數(shù)據(jù)
(3)做出假設(shè),得出結(jié)論壹将,采取行動(dòng)Leader和Manager的區(qū)別
- Manager是管理事務(wù)嗤攻,是控制和權(quán)威;而Leader是領(lǐng)導(dǎo)人心诽俯,是引領(lǐng)和激發(fā)妇菱。
- 技術(shù)Leader是專業(yè)性非常強(qiáng)的工作。技術(shù)Leader區(qū)別于其他Leader之處是你不僅要“以德服人”暴区,還要“以技服人”闯团。
視人為人
- 俗話說“做事先做人”,我們唯有尊重自己仙粱,尊重他人房交,視人為人,視己為人伐割,對團(tuán)隊(duì)傾注感情候味,和團(tuán)隊(duì)成員建立信任關(guān)系,才有可能做一個(gè)好Leader隔心。
- 我們做事情的出發(fā)點(diǎn)必須要是正的负溪、善的。在這個(gè)大前提下济炎,我們可以積極地拓展自己的人脈關(guān)系和影響力川抡。
- 視人為人不僅是和他人處好關(guān)系,也是一種原則和勇氣须尚。
- 對待上級(jí)——有膽量崖堤。對待平級(jí)——有肺腑。對待下級(jí)——有心肝耐床。