如何從初級(jí)程序員順利晉升到高級(jí)程序員?
按經(jīng)驗(yàn)級(jí)別劃分的軟件開發(fā)人員可能如下:
- 初級(jí):擁有兩到三年的經(jīng)驗(yàn)
- 高級(jí):擁有十年以上的經(jīng)驗(yàn)
- 中等或 “中級(jí)水平”: 介于初級(jí)和高級(jí)之間
以年為單位衡量工作經(jīng)驗(yàn)存在一個(gè)問題,即沒有說明程序員開發(fā)軟件的質(zhì)量。工作的那幾年獲得了多少經(jīng)驗(yàn)和技能?這也就導(dǎo)致開發(fā)人員的求職面試十分復(fù)雜。這項(xiàng)技能難以衡量,因此我們最終在面試中對(duì)開發(fā)人員進(jìn)行了高難度測(cè)試。但是這些測(cè)試充其量只是進(jìn)行大致地估量,無法準(zhǔn)確衡量工作或完成工作所需的專業(yè)知識(shí)。
這就引出了下一個(gè)問題。
一旦你不再是初級(jí)程序員,那什么時(shí)候會(huì)成為高級(jí)程序員呢?
多年的工作經(jīng)驗(yàn)會(huì)使你自然而然地成為高級(jí)程序員嗎?
不一定。
以我自己為例,當(dāng)我還是個(gè)初級(jí)程序員時(shí),年少無知卻自以為是,傲慢輕狂。認(rèn)為自己是“代碼之神”,不愿與他人合作,認(rèn)為編寫出色的代碼是唯一重要的事情。
但我錯(cuò)了。的確,代碼很重要。說到底程序員必須要編寫工作代碼,但寫代碼并不是唯一重要的事情。
在為第一位客戶服務(wù)的過程中,我經(jīng)歷了很多困難才明白了這一點(diǎn)。我與客戶只交談了15分鐘,收集了需求“要點(diǎn)”,自認(rèn)為已完全了解客戶需求。于是,我開始瘋狂地編寫代碼,享受編寫純代碼的過程。只用了3天就提交了應(yīng)用程序,可是客戶拒絕了,因?yàn)槟遣⒉皇撬胍摹?/p>
當(dāng)然了,我很受傷。自尊心受挫,我便責(zé)怪客戶沒有提供足夠的信息。當(dāng)時(shí)的我還很不成熟,所以才說出這樣的話。客戶永遠(yuǎn)沒有錯(cuò)。如果花更多時(shí)間分析客戶需求,情況可能會(huì)大不相同。通過這次慘痛的教訓(xùn),我明白了這一點(diǎn)。
也就是說,程序員之所以被稱為程序員,不是因?yàn)榭梢跃幊?,而是因?yàn)樗墓ぷ魇窃谌魏问虑殚_始之前就分析好一切。分析必須在多個(gè)級(jí)別上進(jìn)行。
- 自我分析以求更佳表現(xiàn)
- 分析客戶需求以提供更好的服務(wù)
- 分析整個(gè)項(xiàng)目,以幫助每個(gè)人呈現(xiàn)更優(yōu)秀的表現(xiàn)。
如果想從初級(jí)升級(jí)至高級(jí)開發(fā)人員,則需要培養(yǎng)這些分析技能,憑借專業(yè)知識(shí)而非多年的工作經(jīng)驗(yàn)變成一個(gè)真正優(yōu)秀的高級(jí)開發(fā)人員。
一名優(yōu)秀的高級(jí)開發(fā)人員就像是一個(gè)長大了的孩子,變成了可以照顧自己的成人。他的生活不再是飄忽不定、隨性而為,充滿不確定性。會(huì)從錯(cuò)誤中吸取教訓(xùn),為生活打下堅(jiān)實(shí)的基礎(chǔ),回憶過往時(shí),他會(huì)為此感到自豪。他仍然“年輕”,但所擁有的是一種務(wù)實(shí)精神和高效的能力,這將比他實(shí)際的工作經(jīng)驗(yàn)更有價(jià)值。
下面是從初級(jí)升級(jí)至高級(jí)程序員的一些方法。
1、克服鄧寧-克魯格效應(yīng)
鄧寧-克魯格效應(yīng)是一種認(rèn)知偏見,人們認(rèn)為自己更聰明能干。本質(zhì)上,能力低下者不能認(rèn)識(shí)到自己的無能,這導(dǎo)致他們高估了自己的能力。
作為初級(jí)程序員,這勢(shì)必帶來麻煩。你或許認(rèn)為自己是著名的程序員,無所不知,但現(xiàn)實(shí)卻是所知甚少,而且遠(yuǎn)未達(dá)到優(yōu)秀的水平。這是需要避免掉入的陷阱。
初級(jí)程序員和高級(jí)程序員的區(qū)別在于,初級(jí)程序員自認(rèn)為無所不知,而高級(jí)程序員知道要學(xué)的還有很多。初級(jí)程序員往往高估了自己的知識(shí)和能力,無法識(shí)別他人的技能和水平,因此始終認(rèn)為與他人相比,自己能力更強(qiáng)、知識(shí)更加淵博。
正如David Dunning所說。
“在許多情況下,無能并不會(huì)使人們迷失方向、感到困惑或如履薄冰。相反,無能的人常常懷有盲目的自信,受到他們所認(rèn)為的類似知識(shí)的事物鼓舞著,高高在上。”
Dunning和Kruger建議,隨著工作經(jīng)驗(yàn)的增加,自信程度通常會(huì)從過度下降到更為真實(shí)的水平。程序員開始深入自己的領(lǐng)域,逐漸意識(shí)到自己缺乏知識(shí)和能力。并且隨著知識(shí)積累,專業(yè)知識(shí)不斷增強(qiáng),他們的自信程度也會(huì)再次提升。
他們提出了以下克服過度自信的方法。
- 堅(jiān)持學(xué)習(xí)和練習(xí)。對(duì)某個(gè)主題一旦了解地越多,就越可能認(rèn)識(shí)到仍有很多東西需要學(xué)習(xí)。這可以克服這一傾向,堅(jiān)定自己是專家,即使事實(shí)并非如此。
- 請(qǐng)求他人評(píng)價(jià)。請(qǐng)求他人提出建設(shè)性批評(píng)建議可以為你提供寶貴的見解,了解他人對(duì)你能力的看法。
- 質(zhì)疑原有認(rèn)知。不斷挑戰(zhàn)信念和期待。尋找質(zhì)疑你原有觀點(diǎn)的信息。質(zhì)疑得越多,學(xué)到的更多。
記住,感到博學(xué)會(huì)令人心情愉悅。但是始終需要提高自己的標(biāo)準(zhǔn)。為此,需要更深入地研究以便更準(zhǔn)確地理解特定主題。這會(huì)讓你認(rèn)識(shí)到還有很多東西需要學(xué)習(xí)。
2、知道何事不該做
馬克·曼森(Mark Manson)在《毫不在乎的微妙藝術(shù)》(The Subtle Art of Not Giving a Fuck)這本書中指出了盡量保持模糊身份的重要性。因?yàn)樯婕白约荷矸莸臅r(shí)候就是我們認(rèn)為某些行為或事件代表著我們作為人類的價(jià)值的時(shí)候。
簡單來說,我們通常會(huì)因?yàn)闈M足自我或幼稚地迷戀驚險(xiǎn)刺激而決定做某事,而不是因?yàn)檎嬲男枨?。曼森告訴我們,當(dāng)我們將“自我”拒之門外時(shí),會(huì)做出最佳決定,因?yàn)檫@很有可能與“你無關(guān)”。只需問問自己:“這是一件好事嗎?”如果答案是肯定的,那么就去做。
這也適用于程序員。實(shí)際上,大多數(shù)程序員天生有收集癖好,總是收集閃亮的東西,存放起來并尋找關(guān)聯(lián)。你可能沒注意到這種現(xiàn)象,一般而言,閃亮玩具綜合癥的特征如下:不顧實(shí)際或功能需求而想要擁有比較新的玩具,或者總是沉迷于強(qiáng)烈但短暫的擁有后才將注意力轉(zhuǎn)向其他事物。
如果致力成為一名高級(jí)程序員,則需要不惜一切代價(jià)避免這種問題。最出色的高級(jí)程序員能夠明確地知道何事不該做。他們知道,從頭開始重寫庫只是為了使其更具可讀性,或者從老舊的框架切換到比較新的框架并非總是明智之舉。代碼的目的應(yīng)該清晰明了以便在幾分鐘甚至幾秒鐘內(nèi)掌握。即使沒有高超的魔力,瀏覽代碼的過程也應(yīng)該十分輕松。
關(guān)鍵不是要規(guī)避風(fēng)險(xiǎn),而是謹(jǐn)慎選擇適合的戰(zhàn)斗。
3、具有強(qiáng)烈的好奇心
想知道“應(yīng)用程序”一詞是什么意思嗎?
為什么我們?cè)谥悄苁謾C(jī)應(yīng)用程序中運(yùn)用這些小圖標(biāo)?這是因?yàn)樗鼈儗⒔o定的工作流程或算法應(yīng)用于我們遇到的問題,有助于滿足需求。
也就是說,如果要構(gòu)建某些東西,那么肯定會(huì)犯錯(cuò)誤。反思自己的工作并不斷改進(jìn)會(huì)促進(jìn)創(chuàng)新,而創(chuàng)新的根本在于想要發(fā)現(xiàn)事物運(yùn)行原理的好奇心。記住,這是整個(gè)自我完善過程中的重要阻礙。
錯(cuò)誤->見解->好奇心->創(chuàng)新->錯(cuò)誤……
這一過程不斷重復(fù)……
如果想提升自我并成為一名優(yōu)秀的高級(jí)程序員,則需要對(duì)一切事物充滿好奇心。好奇心是一種工具,用的越多越好,這正是人們對(duì)出色的高級(jí)程序員的期望。優(yōu)秀的高級(jí)開發(fā)人員以結(jié)構(gòu)化的方式引導(dǎo)他們的好奇心,從而可以在緊急情況下使用已積累的信息。
下面是激發(fā)好奇心并創(chuàng)建品牌的方法。
- 學(xué)無止境。選擇一門課程、一本書、一個(gè)在線學(xué)位,通過它們,豐富已有的想法并獲得新想法。
- 夯實(shí)基本原理。確保了解它們的使用方式,以便將其作為基礎(chǔ)應(yīng)用在工作中。
- 拒絕空想,行動(dòng)才是真理。想法總是被高估。當(dāng)你的想法被使用和傳播時(shí),便可以創(chuàng)建自己的品牌。
- 平衡新思想和既定思想。不要盲目接受“應(yīng)該”知道的想法。挑戰(zhàn)現(xiàn)狀。
- 不只是能運(yùn)行而已。使它具有可擴(kuò)展性、可重復(fù)使用性和可插拔性。這是培養(yǎng)專業(yè)知識(shí)的方式。
一切都始于好奇心。沒有好奇心,不妨退出。正如愛因斯坦所說:
“我沒有什么特殊的天賦,只是擁有極強(qiáng)的好奇心。”