日期:2021-11-23 17:32:32
過去二三十年,互聯(lián)網(wǎng)改變了世界,巨大變化的背后站著一個職業(yè),那就是軟件工程師。
軟件工程師這一行有很多“英雄出少年”的例子,比如比爾蓋茨、扎克伯格,年紀輕輕就做出了開創(chuàng)性的研發(fā)與設(shè)計。看起來,這一行頗有些“出名要趁早”的特性
但其實,一出手就站在金字塔塔尖的年輕人只是極少數(shù),可以說是鳳毛麟角。大多數(shù)的軟件工程師,都是需要在這金字塔里,一個臺階一個臺階往上走得。
如果我們把軟件工程師的金字塔分為四大臺階,那它分別是:新手階段、進階階段、高手階段和行業(yè)大神階段。這四個階段分別對應(yīng)這樣幾種能力:執(zhí)行力、設(shè)計能力、會貫通的能力、沉淀方法論和開創(chuàng)新領(lǐng)域的能力。
不同階段,所需要具備的能力是不同的。比如,在高手這個階段,更需要前瞻能力和取舍能力;進階階段,需要獨立完成需求的能力;新手階段,需要保質(zhì)保量完成分配到手上的任務(wù)。
執(zhí)行力字面理解為:執(zhí)行并完成任務(wù)的能力,在西點軍校中有一句經(jīng)典語言“沒有任何借口”,也是對執(zhí)行力進行完整的詮釋。
新手階段強調(diào)執(zhí)行力。就好比你剛進入公司,還是新人的時候,被分配一些任務(wù)。指派任務(wù)的上級,會非常明確地告訴你任務(wù)是什么,用什么樣的方法,去達成什么樣的目標。
然后,干就完了!你按照方法一步步操作,保質(zhì)保量去完成,這就是執(zhí)行力。
小姜是個同事眼中的“老法師”。上班遲到了,會說“路上堵車”、“鬧鈴沒響”等等;工作協(xié)作不好,會說“這項工作太復(fù)雜……”、“這個我不會,沒學(xué)過”;工作沒業(yè)績,會說“政策不好”或“我已經(jīng)盡力了”等等,事情做砸了有借口,任務(wù)沒完成有借口。
最后,公司業(yè)績下滑需要裁員,“老法師”小姜首當其沖被開掉。究其原因,就是工作沒有執(zhí)行力,對公司的經(jīng)營發(fā)展毫無意義。
同事小莫則不然。初進公司,就有一位前輩曾告誡過他:不管接到什么工作安排,你都要想辦法干。只有強有力的執(zhí)行上級的命令和要求,才能不斷地提高自己的執(zhí)行力和工作效率。
虛心聽從建議的小莫,三年工作中始終堅持高度的執(zhí)行力,正因為這一點,他被部門經(jīng)理賞識,推薦給高層,很快就做到了總經(jīng)理助理的崗位,前途不可限量。
在現(xiàn)實生活中,需要的正是那種想盡辦法去完成任務(wù),而不是去尋找借口的執(zhí)行力。
與新手階段不同的是,進階階段強調(diào)設(shè)計能力。這個時候,上級布置給你任務(wù),就是你要獨立完成一個工作模塊、獨立設(shè)計程序,上級不會告訴你步驟,你需要自己方法解決問題。
這個階段的關(guān)鍵能力叫做設(shè)計能力一一你要學(xué)會分析需求,弄清楚模糊不清的問題:你要學(xué)會做技術(shù)調(diào)研,找到最佳解決方案;你要學(xué)會對問題進行抽象和拆解;你要學(xué)會搭建原型、設(shè)計架構(gòu)。
一旦進入進階通道,你在工作上不再止于做執(zhí)行,而是要更多地發(fā)揮創(chuàng)造性,獨立設(shè)計和優(yōu)化;在團隊里不再止于埋頭完成自己的事情,而是要做好一個項目從頭至尾的把控,協(xié)調(diào)內(nèi)外部的合作關(guān)系;在學(xué)習(xí)上不再止于跟別人學(xué)、片式地學(xué),而是向內(nèi)精進,搭建起自己的知識體系。
這就好比寫作文時,老師給你一個命題,你來構(gòu)思作文結(jié)構(gòu)怎么搭幾個段落、每個段落表達什么主題,它們之間如何承接。
設(shè)計程序也一樣,客戶一個需求來了,你要考慮怎么把它用程序現(xiàn)出來,一個程序分成幾個不同的模塊,每個模塊干什么它們之間怎樣協(xié)同配合。
客戶只是提出一個需求,而你要給出合理的、科學(xué)的解決方案。
很多軟件工程師在高手階段會認為,只要做到全面細致,把代碼寫得足夠好就沒問題了。但其實,作為高階工程師,這遠遠不夠。
高手階段最重要的能力有兩個:一是前瞻能力,二是取舍能力。核心是具有前瞻能力。
也就是說,你得知道為什么系統(tǒng)今天是這個樣子,以及未來它會朝著什么樣的方向去演進,對未來有預(yù)判,根據(jù)預(yù)判對技術(shù)選型做一些決策。
比如一個系統(tǒng)大概要解決未來兩年的問題,那么在未來的兩年內(nèi),外界和底層技術(shù)會發(fā)生什么樣的變化,你要采用什么樣的技術(shù)去完成,這都需要心里有數(shù)。
想要擁有前瞻能力,第一要有知識的廣度,需要去讀論文,讀業(yè)內(nèi)各大公司的資料,還要去各個公司做廣泛的交流,保證有足夠多的不同的信息進入你的視野。
第二多做跨行業(yè)的交流,跳出自己的圈子,跟其他行業(yè)的人,特別是投資人、創(chuàng)業(yè)者等見多識廣的人群多交流。
除了前瞻能力,高手階段的軟件工程師還需要具備取舍能力。所謂取舍,就是確定自己要干什么,以及不干什么的能力。
要想做好取含,關(guān)鍵在于兩點:明確目標、學(xué)會預(yù)測。第一是明確目標。一個問題可能有很多種解決方案,但是每種解決方案都不可能完美。這時候你就要分析,哪個對最終目標可能產(chǎn)生的負面影響更大,然后選擇影響更小的那個。
第二是學(xué)會預(yù)測。有時候即使你的目標很明確,不好取含,難點在于很多數(shù)據(jù)你并不能提前知曉。這時就得預(yù)測一下,到底哪個方案帶來的結(jié)果是更優(yōu)的。
這里的預(yù)測和前面說的前瞻性不太一樣,它不是指大的時間軸上預(yù)測未來,而是說基于現(xiàn)有信息做出一個測,然后完成取舍。最終取舍得好不好,就看你預(yù)測得不準。
比如,出租車公司想要把起步價提高1元,總收入會增加還是少?如果有個人覺得打車上班花15元比較合理,你漲了這1元就超出了他的心理價位,他不能接受了一個用戶。
如果有個人覺得漲1元無所謂,他一點兒也不在意,那就相當于出租車公司增加了1元錢的收入。
至于要不要漲這1元錢,需要你具備類似于“人腦大數(shù)據(jù)”的功能,在對用戶和系統(tǒng)的理解的基礎(chǔ)上做出預(yù)測。
而一旦進入大神階段,大家都公認你是這方面的權(quán)威,你對這個方向的判斷是非常準確的。同時你還能夠總結(jié)出一個方法,這個方法不只適用于當前的領(lǐng)域,別人把你這套東西拿過來,還可以解決另外的問題。
大神階段最重要的是創(chuàng)新能力,能夠開創(chuàng)新領(lǐng)域。可以說,幾乎計算機、互聯(lián)網(wǎng)領(lǐng)域出現(xiàn)的每個重大里程碑,都是軟件工程師開創(chuàng)新領(lǐng)域的結(jié)果。
比如業(yè)界公認的行業(yè)大神,美國科學(xué)家肯湯普森( Ken Thompson)在20世紀70年代作為主創(chuàng)者之一開發(fā)出了全新的操作系統(tǒng)UNIX(這一系統(tǒng)不僅可以用于網(wǎng)絡(luò)操作,還可以作為單機操作系統(tǒng)使用,后來被廣泛使用于工程應(yīng)用和科學(xué)計算等領(lǐng)域),就是開創(chuàng)新領(lǐng)域的代表。
進階軟件工程師,就要具備以上所說這幾種能力。而且,從這幾個臺階來講,越往上走,要求越高,能達到的人越少。
從執(zhí)行到設(shè)計,可能60%以上的軟件工程師都可以跨越但從設(shè)計跨越到融會貫通,就大概只有30%;再從融會貫通到形成方法論、到開創(chuàng)新領(lǐng)域,1%都不到。越到金字塔的頂層,人越少。想進階軟件工程師,就去努力學(xué)習(xí),好好培養(yǎng)自己的能力吧。
本文主要參考資料:《這就是軟件工程師》,來源于網(wǎng)絡(luò)、。