卓越人生的兩大(dà)利器——任務分解與保持節奏
日期:2018/06/23 點擊:734 次
錯,上(shàng)面所列舉的技術都是一些(xiē)硬實力,這(zhè)些(xiē)硬實力是确保你(nǐ)職場競争力的根本所在,特别是對(duì)于技術人員來(lái)說,掌握的技術越深入、越紮實、再有一些(xiē)廣度,那麽你(nǐ)就是一個在職場非常具有競争力的人,也(yě)是公司所需要的人,同時(shí)不可替代性也(yě)會(huì)越強。因此,很(hěn)多開(kāi)發人員就容易陷入這(zhè)樣一個誤區(qū):隻關注于眼前,隻關注于技術本身,但(dàn)對(duì)于一些(xiē)具有指導意義的方法論視(shì)而不見或是漠不關心。其實,我想說的是,若想在人生這(zhè)場馬拉松賽事(shì)中永葆活力,關注當下(xià)縱然不可或缺,但(dàn)掌握了(le)正确的方法論則會(huì)令你(nǐ)越走越遠,同時(shí)越走越好(hǎo)。
那到(dào)底什(shén)麽是方法論呢(ne)?這(zhè)個詞語我們每個人都知(zhī)道(dào),但(dàn)它到(dào)底有什(shén)麽作(zuò)用(yòng)呢(ne)?其實,按照我的理(lǐ)解,方法論就是指導我們行事(shì)的一套理(lǐ)論體系,每個人每一天都在使用(yòng)它,隻不過很(hěn)多人并未感知(zhī)到(dào)它的存在而已。究其原因,每個人的方法論都已經成爲這(zhè)個人根深蒂固的習慣了(le),在不經意間其實就已經在運用(yòng)了(le)。隻不過,有的方法論是好(hǎo)的,是優秀的,是有價值的;而有些(xiē)方法論則是不好(hǎo)的,應該被摒棄的。但(dàn)正所謂,當局者迷,旁觀者清。當事(shì)人往往對(duì)于自(zì)己所運用(yòng)的方法論渾然不知(zhī)。因此,即便自(zì)己所運用(yòng)的方法論需要改進,他(tā)也(yě)完全不知(zhī)曉。下(xià)面我舉一個例子,相信大(dà)家都會(huì)感同身受。
當我們接到(dào)一個新的功能(néng)需求時(shí),不同人的做法是截然不同的。有的人會(huì)選擇立刻開(kāi)始編碼,寫着寫着開(kāi)始發現(xiàn)問題,然後又修改代碼;改完之後寫了(le)一陣,又發現(xiàn)有問題,然後接着改。上(shàng)來(lái)就編碼的做法看(kàn)似快(kuài),但(dàn)實則卻會(huì)浪費不少時(shí)間,因爲他(tā)會(huì)用(yòng)所謂編碼的忙碌來(lái)掩飾自(zì)己不願意,或是不擅長思考的本性。而有的人則不會(huì)采取這(zhè)種做法,他(tā)會(huì)根據功能(néng)需求首先進行設計(jì),仔細思考這(zhè)個新的功能(néng)需求會(huì)給既有系統帶來(lái)哪些(xiē)改變,對(duì)既有系統會(huì)産生何種影響,應該采取什(shén)麽方式來(lái)更好(hǎo)地實現(xiàn)這(zhè)個功能(néng)需求,最後一切都想清楚了(le),并且在紙(zhǐ)上(shàng)畫(huà)明(míng)白(bái)了(le),最後才開(kāi)始編碼。這(zhè)看(kàn)似很(hěn)慢的做法往往會(huì)帶來(lái)更好(hǎo)的結果,而且總體時(shí)間會(huì)減少很(hěn)多。這(zhè)其實就是一種方法論的體現(xiàn)。
又,在學習一項新技術時(shí),有些(xiē)人采取的做法是在百度上(shàng)到(dào)處搜,搜索完一篇文(wén)章後,走馬觀花(huā)地看(kàn)一下(xià),然後再繼續搜,不得不說,這(zhè)其實是很(hěn)多人學習方式的真實寫照,這(zhè)麽做看(kàn)起來(lái)是挺快(kuài),不過結果可想而知(zhī)。但(dàn),總有那麽一群人,同樣學習一項新技術,他(tā)會(huì)仔細閱讀官方文(wén)檔,閱讀API說明(míng),采取系統化的學習方式,先從(cóng)宏觀上(shàng)對(duì)所要學習的技術有一個總體的把控,然後再由淺入深地學習技術的各個組成部分,正所謂從(cóng)總體到(dào)局部。花(huā)費了(le)足夠的時(shí)間與精力對(duì)各個局部都有了(le)較好(hǎo)的理(lǐ)解後,最後再從(cóng)總體上(shàng)審視(shì)這(zhè)項技術,如果是一項重要技術,那麽他(tā)還會(huì)花(huā)費足夠的時(shí)間研究技術底層的源碼與設計(jì)。看(kàn),這(zhè)又是一種學習技術的方式。顯然,這(zhè)又是方法論的不同所導緻的學習方式的不同,而且這(zhè)種不同的差别還是非常大(dà)的。孰優孰劣,大(dà)家可以自(zì)行評判。
回到(dào)正題,本文(wén)我想談及的兩個要點分别是任務分解與保持節奏,下(xià)面逐個解釋。
任務分解,顧名思義,就是将一個大(dà)任務劃分爲若幹小(xiǎo)任務,接下(xià)來(lái)再對(duì)分解之後的小(xiǎo)任務繼續劃分,直到(dào)粒度足夠細爲止,沒錯,這(zhè)其實就是Java 7所引入的Fork-Join框架的做法。編程語言中的很(hěn)多問題解決方式都是來(lái)源于現(xiàn)實生活的。我們在現(xiàn)實生活中就會(huì)常常面臨任務分解的場景。比如說,我們制訂了(le)爲期一個月的開(kāi)發任務。顯然,我們需要對(duì)這(zhè)一個月的時(shí)間進行細粒度的劃分,明(míng)确每一天,每一周要完成哪些(xiē)工(gōng)作(zuò),要達成什(shén)麽樣的目标,每一周的裏程碑是什(shén)麽。确保每一天的工(gōng)作(zuò)都能(néng)完成是确保當周工(gōng)作(zuò)能(néng)夠順利完成的前提;而每一周工(gōng)作(zuò)的順利完成則是确保整月工(gōng)作(zuò)順利完成的重要前提。隻有這(zhè)樣,我們的開(kāi)發工(gōng)作(zuò)才能(néng)有條不紊,沿着既定的路線前行,不至于工(gōng)作(zuò)了(le)一段時(shí)間後發現(xiàn)“跑偏了(le)”。正确地做事(shì)與做正确的事(shì)哪一個更爲重要呢(ne)?
那到(dào)底什(shén)麽是方法論呢(ne)?這(zhè)個詞語我們每個人都知(zhī)道(dào),但(dàn)它到(dào)底有什(shén)麽作(zuò)用(yòng)呢(ne)?其實,按照我的理(lǐ)解,方法論就是指導我們行事(shì)的一套理(lǐ)論體系,每個人每一天都在使用(yòng)它,隻不過很(hěn)多人并未感知(zhī)到(dào)它的存在而已。究其原因,每個人的方法論都已經成爲這(zhè)個人根深蒂固的習慣了(le),在不經意間其實就已經在運用(yòng)了(le)。隻不過,有的方法論是好(hǎo)的,是優秀的,是有價值的;而有些(xiē)方法論則是不好(hǎo)的,應該被摒棄的。但(dàn)正所謂,當局者迷,旁觀者清。當事(shì)人往往對(duì)于自(zì)己所運用(yòng)的方法論渾然不知(zhī)。因此,即便自(zì)己所運用(yòng)的方法論需要改進,他(tā)也(yě)完全不知(zhī)曉。下(xià)面我舉一個例子,相信大(dà)家都會(huì)感同身受。
當我們接到(dào)一個新的功能(néng)需求時(shí),不同人的做法是截然不同的。有的人會(huì)選擇立刻開(kāi)始編碼,寫着寫着開(kāi)始發現(xiàn)問題,然後又修改代碼;改完之後寫了(le)一陣,又發現(xiàn)有問題,然後接着改。上(shàng)來(lái)就編碼的做法看(kàn)似快(kuài),但(dàn)實則卻會(huì)浪費不少時(shí)間,因爲他(tā)會(huì)用(yòng)所謂編碼的忙碌來(lái)掩飾自(zì)己不願意,或是不擅長思考的本性。而有的人則不會(huì)采取這(zhè)種做法,他(tā)會(huì)根據功能(néng)需求首先進行設計(jì),仔細思考這(zhè)個新的功能(néng)需求會(huì)給既有系統帶來(lái)哪些(xiē)改變,對(duì)既有系統會(huì)産生何種影響,應該采取什(shén)麽方式來(lái)更好(hǎo)地實現(xiàn)這(zhè)個功能(néng)需求,最後一切都想清楚了(le),并且在紙(zhǐ)上(shàng)畫(huà)明(míng)白(bái)了(le),最後才開(kāi)始編碼。這(zhè)看(kàn)似很(hěn)慢的做法往往會(huì)帶來(lái)更好(hǎo)的結果,而且總體時(shí)間會(huì)減少很(hěn)多。這(zhè)其實就是一種方法論的體現(xiàn)。
又,在學習一項新技術時(shí),有些(xiē)人采取的做法是在百度上(shàng)到(dào)處搜,搜索完一篇文(wén)章後,走馬觀花(huā)地看(kàn)一下(xià),然後再繼續搜,不得不說,這(zhè)其實是很(hěn)多人學習方式的真實寫照,這(zhè)麽做看(kàn)起來(lái)是挺快(kuài),不過結果可想而知(zhī)。但(dàn),總有那麽一群人,同樣學習一項新技術,他(tā)會(huì)仔細閱讀官方文(wén)檔,閱讀API說明(míng),采取系統化的學習方式,先從(cóng)宏觀上(shàng)對(duì)所要學習的技術有一個總體的把控,然後再由淺入深地學習技術的各個組成部分,正所謂從(cóng)總體到(dào)局部。花(huā)費了(le)足夠的時(shí)間與精力對(duì)各個局部都有了(le)較好(hǎo)的理(lǐ)解後,最後再從(cóng)總體上(shàng)審視(shì)這(zhè)項技術,如果是一項重要技術,那麽他(tā)還會(huì)花(huā)費足夠的時(shí)間研究技術底層的源碼與設計(jì)。看(kàn),這(zhè)又是一種學習技術的方式。顯然,這(zhè)又是方法論的不同所導緻的學習方式的不同,而且這(zhè)種不同的差别還是非常大(dà)的。孰優孰劣,大(dà)家可以自(zì)行評判。
回到(dào)正題,本文(wén)我想談及的兩個要點分别是任務分解與保持節奏,下(xià)面逐個解釋。
任務分解,顧名思義,就是将一個大(dà)任務劃分爲若幹小(xiǎo)任務,接下(xià)來(lái)再對(duì)分解之後的小(xiǎo)任務繼續劃分,直到(dào)粒度足夠細爲止,沒錯,這(zhè)其實就是Java 7所引入的Fork-Join框架的做法。編程語言中的很(hěn)多問題解決方式都是來(lái)源于現(xiàn)實生活的。我們在現(xiàn)實生活中就會(huì)常常面臨任務分解的場景。比如說,我們制訂了(le)爲期一個月的開(kāi)發任務。顯然,我們需要對(duì)這(zhè)一個月的時(shí)間進行細粒度的劃分,明(míng)确每一天,每一周要完成哪些(xiē)工(gōng)作(zuò),要達成什(shén)麽樣的目标,每一周的裏程碑是什(shén)麽。确保每一天的工(gōng)作(zuò)都能(néng)完成是确保當周工(gōng)作(zuò)能(néng)夠順利完成的前提;而每一周工(gōng)作(zuò)的順利完成則是确保整月工(gōng)作(zuò)順利完成的重要前提。隻有這(zhè)樣,我們的開(kāi)發工(gōng)作(zuò)才能(néng)有條不紊,沿着既定的路線前行,不至于工(gōng)作(zuò)了(le)一段時(shí)間後發現(xiàn)“跑偏了(le)”。正确地做事(shì)與做正确的事(shì)哪一個更爲重要呢(ne)?