
這是我看的第一本關(guān)于程序員的職業(yè)規(guī)劃方面的書。書中談技術(shù)轉(zhuǎn)型和如何持續(xù)在做到技術(shù)精進(jìn)方面比較少。反倒是說(shuō)管理的事情比較多。到什么山上唱什么歌。對(duì)于小白的我來(lái)說(shuō),在管理方面有一些不小的收獲,但是目前不少東西還暫時(shí)用不到。
在技術(shù)上持續(xù)精進(jìn)的話,養(yǎng)成好習(xí)慣十分重要,我從今天開始嘗試他在文中說(shuō)的4個(gè)習(xí)慣(特別是三個(gè)問(wèn)題),看看效果如何。
第2章 如何在技術(shù)上持續(xù)精進(jìn)
一門編程語(yǔ)言、一個(gè)技術(shù)框架,從本身的知識(shí)層面也會(huì)有深淺,在學(xué)習(xí)時(shí),也存在先后順序的一般性規(guī)律。從這個(gè)角度講,技術(shù)本身的深淺層次也可以用于個(gè)人對(duì)標(biāo)管理。
一般來(lái)講,學(xué)習(xí)一門技術(shù)時(shí),有三個(gè)階段:
第1階段,基礎(chǔ)開發(fā),了解API,基于API開發(fā)
第2階段,熟悉內(nèi)核及原理,主要是了解框架的設(shè)計(jì)原理,閱讀源碼,洞悉內(nèi)在機(jī)理。
第3階段,優(yōu)化框架,主要是針對(duì)框架已有功能的不足進(jìn)行完善、優(yōu)化,或者使用框架提供的機(jī)制擴(kuò)展框架功能,或者對(duì)框架進(jìn)行定制,讓它適合特定情形。
在技術(shù)領(lǐng)域內(nèi)的成長(zhǎng),基本都會(huì)經(jīng)歷三個(gè)階段:
● 第一階段,專項(xiàng)能力的提升,這是初級(jí)階段,你為了做事情,必須先具備某些基礎(chǔ)能力,比如你要學(xué)會(huì)Python、Tensorflow等等
● 第二階段,技能體系的構(gòu)建,這是中級(jí)階段,你擁有了一組技能,圍繞某個(gè)方向構(gòu)建了自己的知識(shí)圖譜,能夠用自己的方式來(lái)解決問(wèn)題。比如在C++這個(gè)方向,你用C++、Qt、OpenGL等組成了自己的知識(shí)圖譜,可以勝任流媒體方面的產(chǎn)品開發(fā)。
● 第三階段,融合創(chuàng)新,這是高手階段,你具備了豐富的實(shí)踐經(jīng)驗(yàn),具備了T型知識(shí)結(jié)構(gòu),形成了自己的思維框架和解決問(wèn)題的框架,能夠融合不同領(lǐng)域的知識(shí),組合各種資源,創(chuàng)造性的解決各種問(wèn)題。此時(shí)你跳出了具體的技術(shù)束縛,站在了更高的層面。
對(duì)于開發(fā)者來(lái)講,若擁有一年左右經(jīng)驗(yàn),多數(shù)人處于第一階段——專項(xiàng)能力提升階段,熟悉某種編程語(yǔ)言,可以完成別人安排的一個(gè)小模塊的開發(fā)。
若擁有三年以上的經(jīng)驗(yàn),就應(yīng)該進(jìn)入到第二階段了。當(dāng)你在某個(gè)技術(shù)方向上構(gòu)建了技能體系后,就可以完成相對(duì)復(fù)雜的工作了,可以獨(dú)立做一些事情,甚至可以輔導(dǎo)初級(jí)開發(fā)者來(lái)完成一些工作了。這時(shí)候,你往往是團(tuán)隊(duì)里富有生產(chǎn)力的成員了。
若有五年以上的經(jīng)驗(yàn),應(yīng)該進(jìn)入融合創(chuàng)新階段,能夠獨(dú)當(dāng)一面,可以獨(dú)立完成特定項(xiàng)目的評(píng)估、設(shè)計(jì)、技術(shù)方案選擇等事情。此時(shí)你往往是團(tuán)隊(duì)里的技術(shù)管理者,具有比較大的影響力。
加入一個(gè)開發(fā)者干上八年十年,還到不了第3階段,可能就需要考慮通過(guò)其他方式提升自己的競(jìng)爭(zhēng)力,保住自己在團(tuán)隊(duì)中的位置。
精進(jìn)的4個(gè)習(xí)慣
● 對(duì)標(biāo)管理
● 三個(gè)問(wèn)題(紙質(zhì)的筆記本更好,比電子的更有成就感)
1. 我昨天完成了什么
2. 我遇到了哪些問(wèn)題
3. 我今天做什么(最好不要超過(guò)3件事)
4. 專門用一個(gè)筆記本記錄自己每天完成的事情(稱之為“成功日記”)
● 刻意練習(xí)
超越技術(shù)層面的核心競(jìng)爭(zhēng)力
在融合創(chuàng)新階段,你建立起了可遷移的核心競(jìng)爭(zhēng)力,使得自己擁有了超越技術(shù)層面的,快速解決問(wèn)題的能力,即便到了一個(gè)陌生的領(lǐng)域、原來(lái)的技術(shù)積累不能直接應(yīng)用,也可以應(yīng)用自己的思維、想象力、構(gòu)架設(shè)計(jì)、分析、解決問(wèn)題的框架等,快速的厘清問(wèn)題,找到解決問(wèn)題的關(guān)鍵。此時(shí)你已經(jīng)能夠從容應(yīng)對(duì)日新月異的技術(shù)變遷和各行各業(yè)加速融合的現(xiàn)狀,因?yàn)槟阌辛笋{馭技術(shù)的“內(nèi)功”。
放在開發(fā)者身上,自身學(xué)習(xí)、邏輯思維、數(shù)據(jù)分析、價(jià)值判斷、優(yōu)先級(jí)排序、框架設(shè)計(jì)、想象力等能力,就是應(yīng)用流程方面的能力。應(yīng)用流程這類能力,是可遷移的能力,是核心競(jìng)爭(zhēng)力。有了這些,你才能快速的學(xué)習(xí)新知識(shí)新技能,才能更好地整合自己的知識(shí)、技能來(lái)解決實(shí)際問(wèn)題。
軟件開發(fā)有兩個(gè)層次:體力化的代碼打字(編碼)與思考層面的創(chuàng)造。抱著“軟件開發(fā)是吃青春飯”這一觀念的人,只看到軟件開發(fā)這一工作中的“體力化代碼打字(編碼)”這一初級(jí)層面,誤以為程序員只能靠拼時(shí)間和體力來(lái)建立競(jìng)爭(zhēng)優(yōu)勢(shì),但實(shí)際上,體力化的優(yōu)勢(shì),在偏重信息處理的工作中,永遠(yuǎn)都不是解決問(wèn)題的關(guān)鍵,都不能帶來(lái)競(jìng)爭(zhēng)優(yōu)勢(shì)。
決定程序員是否具有優(yōu)勢(shì)的,是應(yīng)用流程方面的能力,即邏輯思維能力、思考能力、想象力、構(gòu)架設(shè)計(jì)、解決問(wèn)題的框架、快速學(xué)習(xí)、自我管理、創(chuàng)新與創(chuàng)造等。而這些能力,都需要時(shí)間的沉淀和項(xiàng)目的歷練。
第三章:成為技術(shù)管理者
作為開發(fā)者,想要轉(zhuǎn)管理崗位,如果你的技術(shù)能力卓越,遠(yuǎn)超他人,那么你有極大可能通過(guò)“技而優(yōu)則管”這種方式自然而然地走到管理崗位;如果你的技術(shù)能力一般,就必須努力通過(guò)別的方式讓別人(尤其是領(lǐng)導(dǎo))意識(shí)到你是有管理能力的,這種方式就是跳出職責(zé)范圍去打雜、去為領(lǐng)導(dǎo)分擔(dān)他不愿做又必須完成的工作。
在這里要特別提醒一點(diǎn):營(yíng)銷展示。因?yàn)楹芏嗳诉€秉持著這樣一種觀點(diǎn):只要我努力、認(rèn)真工作,總有一天領(lǐng)導(dǎo)會(huì)發(fā)現(xiàn)我,給我想要的機(jī)會(huì)。但實(shí)際上,除非你的優(yōu)秀超出別人10倍,否則別人很難主動(dòng)跑過(guò)來(lái)發(fā)現(xiàn)你的特別之處并把機(jī)會(huì)送給你。
所以我們不但要有效工作,做出成績(jī),還要展示成績(jī)給別人看。營(yíng)銷展示的方式有很多,比如周報(bào)、月報(bào),可以讓上司知道你都做了什么、取得了什么成績(jī);比如產(chǎn)品功能演示,在相關(guān)干系人了解產(chǎn)品的同時(shí),也可以展示你的演說(shuō)、表達(dá)等能力;比如技術(shù)分享,可以讓別你知道你在某個(gè)方向上有豐富的積累。
要在工作中發(fā)現(xiàn)管理相關(guān)的機(jī)會(huì),關(guān)鍵在于你要跳出工作內(nèi)容和崗位職責(zé)的范圍,放眼全局來(lái)思考。分三個(gè)方面,第一方面是產(chǎn)品或項(xiàng)目本身,多想想自己要做的軟件到底要解決什么問(wèn)題,給用戶帶來(lái)什么價(jià)值,為什么要做成這個(gè)樣子,它是怎么被用戶使用的;另一方面是工作實(shí)踐,思考整個(gè)項(xiàng)目,從立項(xiàng)、需求、開發(fā)、測(cè)試、交付、運(yùn)維、項(xiàng)目生產(chǎn)工具,分析哪個(gè)環(huán)節(jié)做的不好,哪個(gè)環(huán)節(jié)改善之后效果可以被看見(jiàn),主動(dòng)去做這些事情,主動(dòng)成為銜接不同環(huán)節(jié)、不同部門的橋梁;第三方面,發(fā)現(xiàn)領(lǐng)導(dǎo)的目標(biāo)是什么,他看重什么,他在為什么困惑,自己能不能幫到他,因?yàn)閺哪撤N意義上講,你的工作,就是為了讓領(lǐng)導(dǎo)的工作更順利,你的工作目標(biāo),就是實(shí)現(xiàn)領(lǐng)導(dǎo)的目標(biāo)。
第四章:技術(shù)管理新人面臨的挑戰(zhàn)
分配工作有三個(gè)目標(biāo):
1)每個(gè)人都有能力完成他所分配的工作任務(wù)。
2)每個(gè)人的任務(wù)都有足夠的挑戰(zhàn)性。
3)每個(gè)人都盡可能的投入到工作中。
要達(dá)到這些目標(biāo),必須每個(gè)人都參與到工作任務(wù)的分配過(guò)程中。
每個(gè)人最了解自己所擁有的能力,最了解哪種工作最能激發(fā)自己的工作積極性。如果管理者在分配任務(wù)時(shí)能征求每個(gè)人的意見(jiàn),那么任務(wù)就有可能到達(dá)最適合的那個(gè)人那里。
為確保需要完成的工作都能得到完成,管理者可以先把所有的任務(wù)列出來(lái),然后進(jìn)行分配,確保每個(gè)任務(wù)都有人負(fù)責(zé)。
上面的兩點(diǎn)結(jié)合,就會(huì)形成“每個(gè)人從任務(wù)池中挑選適合自己的、自己想做的任務(wù)”的氛圍,而團(tuán)隊(duì)的成員之間也會(huì)考慮其他人,考慮每個(gè)任務(wù)都有人負(fù)責(zé)的原則,不會(huì)只挑自己想做的,還會(huì)妥協(xié),接受一些自己不那么想做的。
管理者的職責(zé)有兩塊:完成工作,培養(yǎng)下屬。假如一個(gè)管理者只愿意驅(qū)動(dòng)下屬完成工作,而不愿意給下屬成長(zhǎng)的機(jī)會(huì),那么他就不是一個(gè)合理的管理者,最終也會(huì)承受這樣做的惡果:團(tuán)隊(duì)成員整體業(yè)務(wù)能力停滯不前、人心渙散、沒(méi)有協(xié)力。
所以,為了改善工作分配模式,管理者必須要有責(zé)任感并能承受壓力,而這樣做絕對(duì)是值得的:一旦實(shí)踐了這樣的任務(wù)分配過(guò)程,每個(gè)員工的意見(jiàn)都得到了尊重,每個(gè)員工都有了選擇的機(jī)會(huì),每個(gè)員工都有可能從事有挑戰(zhàn)性的工作,每個(gè)員工都有可能做自己想要的方向上獲得成長(zhǎng),那么整個(gè)團(tuán)隊(duì)的凝聚力和戰(zhàn)斗力就會(huì)越來(lái)越強(qiáng)。