如何从初级程序员变成高级程序员?
區(qū)分高級和初級程序員的標(biāo)準(zhǔn)是工作年限嗎?程序員最重要的工作就是寫代碼嗎?
高級程序員是一名犯過其領(lǐng)域內(nèi)所有可能犯到的錯誤的專家。
如果按照工作經(jīng)驗對軟件開發(fā)人員進(jìn)行分類,可能是這樣的:
初級:2-3 年工作經(jīng)驗
高級:10 年以上工作經(jīng)驗
中級:介于初級和高級之間
這種按工作年限的分類存在一個問題。那就是:它對軟件開發(fā)的質(zhì)量只字未提。在工作的那些年里你到底獲得了多少經(jīng)驗和技能?這正是面對開發(fā)人員的求職和面試如此復(fù)雜的原因。度量技能是很困難的,所以我們在面試中給開發(fā)人員進(jìn)行了很多有難度的測試。但這些測試充其量也只是了解一個大概,無法度量其究竟具備多少完成該項工作所需的經(jīng)驗或?qū)I(yè)技能。
這就引出了下一個問題。
一旦你不再是初級程序員,什么時候會成為高級程序員呢?
多年的工作經(jīng)驗會自動讓你成為高級程序員嗎?未必。
以我自身為例。當(dāng)我還是一名年輕的初級程序員時,我以為自己什么都懂。我傲慢自大,獨來獨往。我認(rèn)為自己是“代碼之神”。我不喜歡與他人合作,我認(rèn)為編寫優(yōu)秀的代碼是程序員最最重要的大事。
我錯了嗎?倒也沒錯。編碼的確很重要——程序員必須得去編寫可工作的代碼。但是編寫代碼并不是他唯一重要的事情。
我是在為第一個客戶工作的時候艱難地認(rèn)識到這一點的。我與客戶交談了 15 分鐘,收集了需求要點,并假定我很明確客戶想要什么。我開始像瘋子一樣瘋狂地寫代碼,享受編寫純粹代碼的過程。我在 3 天內(nèi)交付了應(yīng)用,但是客戶卻不認(rèn)可。因為他說:這不是他期望的東西。
不用說,我的自尊心勢必受到了傷害,我把這歸咎于客戶沒有提供足夠的信息。那時候我說話做事還不成熟。現(xiàn)在看來,客戶永遠(yuǎn)是對的。如果我投入更多的時間來分析客戶需求,情況可能會大不相同。不過我走了好大一段彎路才明白了這一點。
一名程序員不會因為他會寫代碼而成為一名合格的程序員,而是因為在開始做任何事情之前先做分析,然后再來開展工作,這才是真正的程序員。分析必須在多個層次上進(jìn)行:
為更好地執(zhí)行所做的自我分析
為更好地交付所做的客戶需求分析
為幫助每個人更好地完成工作所做的對整個項目的分析
如果你想從初級成為高級開發(fā)人員,你需要培養(yǎng)這些分析技能,以蛻變成一個真正優(yōu)秀的高級開發(fā)人員。他所為人稱道的是專業(yè)知識,而不是具備多少年經(jīng)驗。
一個好的高級開發(fā)人員就像一個成年人一樣,可以自己照顧自己。他的生活不再是飄忽不定的、無意識的和實驗性的。他從自己的錯誤中吸取教訓(xùn),為自己的人生打下堅實的專業(yè)基礎(chǔ),他可以回首過去并為之自豪。他可能仍然“年輕”,但他所擁有的,是大量可實際高效做事的技能,這遠(yuǎn)比他的工作年限更有價值。
以下,將給出一些從初級程序員到高級程序員的方法。
克服鄧寧 - 克魯格效應(yīng)
鄧寧 - 克魯格效應(yīng)是一種認(rèn)知偏見,人們總會高估自己,他們眼中的自己比現(xiàn)實中的自己更聰明、更能干。從本質(zhì)上說,能力低的人不會認(rèn)識到自己真的無能,相反他們都會高估自己。
作為一名初級程序員,這絕對是一場災(zāi)難。你可能認(rèn)為你是一個超級明星程序員,無所不知。但事實是,你知道的很少,距離優(yōu)秀還有很長的路要走。你應(yīng)小心提防,不要掉進(jìn)這樣的陷阱。
初級程序員和高級程序員的區(qū)別在于初級程序員認(rèn)為自己什么都懂,而高級程序員則知道自己還有很多東西要學(xué)。初級程序員往往高估自己的知識和能力,無法認(rèn)識到其他人的技能和能力水平,這就是為什么他們總是認(rèn)為自己比別人更有能力,知道得更多。
正如 David Dunning 所明確指出的:在許多情況下,無能并沒有使人們失去方向、困惑或謹(jǐn)慎。相反,不稱職的人通常會盲目自信。
Dunning 和 Kruger 認(rèn)為,隨著工作經(jīng)驗的增加,過度的自信通常降低,變得更為現(xiàn)實。當(dāng)程序員開始深入鉆研他們的領(lǐng)域時,他們開始認(rèn)識到自己缺乏相應(yīng)的知識和能力。當(dāng)他們獲得這些知識后,他們的專業(yè)能力就會增加,他們的信心水平也會再次提高。
他們提出了以下方法來克服過度自信。
堅持學(xué)習(xí)和實踐。一旦你對一個主題有了更多的了解,你就更有可能認(rèn)識到還有多少東西需要學(xué)習(xí)。這可能避免想當(dāng)然地把自己假想成專家。
問問別人你做得怎么樣。向別人尋求建設(shè)性的意見可以讓你了解到別人是如何看待你的能力的。
質(zhì)疑你已知的東西。不斷挑戰(zhàn)你的信念和期望。尋找挑戰(zhàn)你想法的信息。你提的問題越多,你學(xué)到的東西就越多。
記住,博學(xué)是一種美妙的感覺。但是你需要注意提高你的標(biāo)準(zhǔn)。為此,你需要更深耕,以便更好地理解某個特定的主題。這,會讓你意識到還有多少東西需要學(xué)習(xí)。
知道什么時候不做什么
Mark Manson 在《不在乎的精妙藝術(shù)》一書中談到了保持一種身份的重要性,這種身份的定義越少越好。這是因為當(dāng)我們涉及到我們的身份時,當(dāng)我們決定某些行為或事件時,代表的是我們作為一個人的價值。
簡單地說,我們在決定做某件事時,經(jīng)常是基于它如何滿足我們的自我或者孩子般地迷戀與刺激,而不是真正需要做這件事。Manson 告訴我們,當(dāng)我們把“自我”置身于決定之外時,做出的決定才是最好的決定,因為這很可能不是關(guān)于“你”的。直接問問自己:“這樣做好嗎?”好?那就去做吧。
這一點也適用于程序員。實際上,大多數(shù)程序員天生就是喜鵲,他們總是收集亮晶晶的東西,把它們存儲起來,然后試圖把它們粘起來粉飾巢穴。如果你沒有意識到這一現(xiàn)象,“亮晶晶玩具綜合癥”的典型特征就是想要擁有最新的玩具,通常不考慮實用性或功能性的需要。或者,在注意力尚未轉(zhuǎn)移到其他東西之前,總是十分渴望地想要擁有它。
如果你的目標(biāo)是成長為一名高級程序員,你需要不惜一切代價避免患上這種病。最優(yōu)秀的高級程序員清楚地知道什么時候不應(yīng)該做什么。他們知道,為了提高可讀性而從頭重寫一個類庫,或者從舊的框架切換到最新的框架并不總是好的決定。這些代碼的目的應(yīng)該足夠清楚,讓人可以在幾分鐘甚至幾秒鐘內(nèi)了解到。應(yīng)該讓大家很容易就可以瀏覽這些代碼,即使不具備復(fù)雜的技巧。
關(guān)鍵不在于規(guī)避風(fēng)險,而在于謹(jǐn)慎選擇正確的戰(zhàn)場。
抱有瘋狂的好奇心
你有沒有想過“應(yīng)用程序”這個詞是什么意思?
為什么我們把這些小圖標(biāo)叫做智能手機(jī)應(yīng)用程序?這是因為他們將給定的工作流程或算法應(yīng)用于我們的問題,并幫助我們解決我們的需求。
也就是說,如果你正在做些什么的時候,一定會犯錯誤。反思你的工作并不斷改進(jìn)它會帶來創(chuàng)新,而創(chuàng)新的根源在于對事物運(yùn)作方式的好奇心。記住,這是自我提升過程中的一個重要障礙。
錯誤 - > 見解 - > …好奇心 - > 創(chuàng)新 - > 錯誤重復(fù)……
如果你想繼續(xù)前進(jìn),成為一名優(yōu)秀的高級程序員,你需要對你所做的每一件事都保持瘋狂的好奇心。好奇心是一種你越用就會變得越好的工具,這正是人們對優(yōu)秀高級程序員的期望。優(yōu)秀的高級開發(fā)人員以結(jié)構(gòu)化的方式引導(dǎo)他們的好奇心,使他們可以使用那些在緊急情況下積累起來的信心。
有一些方法可以滿足你的好奇心,塑造你的品牌。
永遠(yuǎn)不要停止學(xué)習(xí)。選擇一門課程、一本書、一個在線教育學(xué)位,用它來豐富你已有的想法,并獲得新的想法。
注重基本原則。確保你了解它們是如何工作的,這樣你就可以把它作為你工作的基礎(chǔ)。
不要說出你的想法。展示你的項目,無論如何,想法都是被高估的。如果你的想法得到了應(yīng)用和傳播,你就可以塑造起你自己的品牌。
在新想法和已有想法之間細(xì)細(xì)考量。不要盲目接受你“應(yīng)該”知道的東西。挑戰(zhàn)現(xiàn)狀。
不要只是讓它可以工作。使其可擴(kuò)展、可重用并且可插拔。這就是你建立你的專業(yè)知識的方式。
一切都始于好奇心。如果你不好奇,還不如放棄。正如阿爾伯特·愛因斯坦所說的:
“我沒有什么特殊才能。我只是非常好奇。”
其實做為一個學(xué)習(xí)者,有一個學(xué)習(xí)的氛圍跟一個交流圈子特別重要這里我推薦一個C/C++基礎(chǔ)交流583650410,不管你是小白還是轉(zhuǎn)行人士歡迎入駐,大家一起交流成長。
總結(jié)
以上是生活随笔為你收集整理的如何从初级程序员变成高级程序员?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决Jenkins不能在线安装maven
- 下一篇: 冰桶挑战:一个吊炸天的病毒式营销案例剖析