高級程式設計師是如何從初級程式設計師演變的?工作經驗不再是唯一途徑!

2020-12-05 騰訊網

區分高級和初級程式設計師的標準是工作年限嗎?程式設計師最重要的工作就是寫代碼嗎?

高級程式設計師是一名犯過其領域內所有可能犯到的錯誤的專家。

如果按照工作經驗對軟體開發人員進行分類,可能是這樣的:

● 初級:2-3 年工作經驗

● 高級:10 年以上工作經驗

● 中級:介於初級和高級之間

這種按工作年限的分類存在一個問題。那就是:它對軟體開發的質量隻字未提。在工作的那些年裡你到底獲得了多少經驗和技能?這正是面對開發人員的求職和面試如此複雜的原因。度量技能是很困難的,所以我們在面試中給開發人員進行了很多有難度的測試。但這些測試充其量也只是了解一個大概,無法度量其究竟具備多少完成該項工作所需的經驗或專業技能。

這就引出了下一個問題。

一旦你不再是初級程式設計師,什麼時候會成為高級程式設計師呢?

多年的工作經驗會自動讓你成為高級程式設計師嗎?未必。

以我自身為例。當我還是一名年輕的初級程式設計師時,我以為自己什麼都懂。我傲慢自大,獨來獨往。我認為自己是「代碼之神」。我不喜歡與他人合作,我認為編寫優秀的代碼是程式設計師最最重要的大事。

我錯了嗎?倒也沒錯。編碼的確很重要——程式設計師必須得去編寫可工作的代碼。但是編寫代碼並不是他唯一重要的事情。

我是在為第一個客戶工作的時候艱難地認識到這一點的。我與客戶交談了 15 分鐘,收集了需求要點,並假定我很明確客戶想要什麼。我開始像瘋子一樣瘋狂地寫代碼,享受編寫純粹代碼的過程。我在 3 天內交付了應用,但是客戶卻不認可。因為他說:這不是他期望的東西。

不用說,我的自尊心勢必受到了傷害,我把這歸咎於客戶沒有提供足夠的信息。那時候我說話做事還不成熟。現在看來,客戶永遠是對的。如果我投入更多的時間來分析客戶需求,情況可能會大不相同。不過我走了好大一段彎路才明白了這一點。

一名程式設計師不會因為他會寫代碼而成為一名合格的程式設計師,而是因為在開始做任何事情之前先做分析,然後再來開展工作,這才是真正的程式設計師。分析必須在多個層次上進行:

● 為更好地執行所做的自我分析

● 為更好地交付所做的客戶需求分析

● 為幫助每個人更好地完成工作所做的對整個項目的分析

如果你想從初級成為高級開發人員,你需要培養這些分析技能,以蛻變成一個真正優秀的高級開發人員。他所為人稱道的是專業知識,而不是具備多少年經驗。

一個好的高級開發人員就像一個成年人一樣,可以自己照顧自己。他的生活不再是飄忽不定的、無意識的和實驗性的。他從自己的錯誤中吸取教訓,為自己的人生打下堅實的專業基礎,他可以回首過去並為之自豪。他可能仍然「年輕」,但他所擁有的,是大量可實際高效做事的技能,這遠比他的工作年限更有價值。

克服鄧寧 - 克魯格效應

鄧寧 - 克魯格效應是一種認知偏見,人們總會高估自己,他們眼中的自己比現實中的自己更聰明、更能幹。從本質上說,能力低的人不會認識到自己真的無能,相反他們都會高估自己。

作為一名初級程式設計師,這絕對是一場災難。你可能認為你是一個超級明星程式設計師,無所不知。但事實是,你知道的很少,距離優秀還有很長的路要走。你應小心提防,不要掉進這樣的陷阱。

初級程式設計師和高級程式設計師的區別在於初級程式設計師認為自己什麼都懂,而高級程式設計師則知道自己還有很多東西要學。初級程式設計師往往高估自己的知識和能力,無法認識到其他人的技能和能力水平,這就是為什麼他們總是認為自己比別人更有能力,知道得更多。

正如 David Dunning 所明確指出的:在許多情況下,無能並沒有使人們失去方向、困惑或謹慎。相反,不稱職的人通常會盲目自信。

Dunning 和 Kruger 認為,隨著工作經驗的增加,過度的自信通常降低,變得更為現實。當程式設計師開始深入鑽研他們的領域時,他們開始認識到自己缺乏相應的知識和能力。當他們獲得這些知識後,他們的專業能力就會增加,他們的信心水平也會再次提高。

他們提出了以下方法來克服過度自信。

● 堅持學習和實踐。一旦你對一個主題有了更多的了解,你就更有可能認識到還有多少東西需要學習。這可能避免想當然地把自己假想成專家。

● 問問別人你做得怎麼樣。向別人尋求建設性的意見可以讓你了解到別人是如何看待你的能力的。

● 質疑你已知的東西。不斷挑戰你的信念和期望。尋找挑戰你想法的信息。你提的問題越多,你學到的東西就越多。

記住,博學是一種美妙的感覺。但是你需要注意提高你的標準。為此,你需要更深耕,以便更好地理解某個特定的主題。這,會讓你意識到還有多少東西需要學習。

知道什麼時候不做什麼

Mark Manson 在《不在乎的精妙藝術》一書中談到了保持一種身份的重要性,這種身份的定義越少越好。這是因為當我們涉及到我們的身份時,當我們決定某些行為或事件時,代表的是我們作為一個人的價值。

簡單地說,我們在決定做某件事時,經常是基於它如何滿足我們的自我或者孩子般地迷戀與刺激,而不是真正需要做這件事。Manson 告訴我們,當我們把「自我」置身於決定之外時,做出的決定才是最好的決定,因為這很可能不是關於「你」的。直接問問自己:「這樣做好嗎?」好?那就去做吧。

這一點也適用於程式設計師。實際上,大多數程式設計師天生就是喜鵲,他們總是收集亮晶晶的東西,把它們存儲起來,然後試圖把它們粘起來粉飾巢穴。如果你沒有意識到這一現象,「亮晶晶玩具綜合症」的典型特徵就是想要擁有最新的玩具,通常不考慮實用性或功能性的需要。或者,在注意力尚未轉移到其他東西之前,總是十分渴望地想要擁有它。

如果你的目標是成長為一名高級程式設計師,你需要不惜一切代價避免患上這種病。

最優秀的高級程式設計師清楚地知道什麼時候不應該做什麼。

他們知道,為了提高可讀性而從頭重寫一個類庫,或者從舊的框架切換到最新的框架並不總是好的決定。

這些代碼的目的應該足夠清楚,讓人可以在幾分鐘甚至幾秒鐘內了解到。

應該讓大家很容易就可以瀏覽這些代碼,即使不具備複雜的技巧。

關鍵不在於規避風險,而在于謹慎選擇正確的戰場。

抱有瘋狂的好奇心

你有沒有想過「應用程式」這個詞是什麼意思?

為什麼我們把這些小圖標叫做智慧型手機應用程式?這是因為他們將給定的工作流程或算法應用於我們的問題,並幫助我們解決我們的需求。

也就是說,如果你正在做些什麼的時候,一定會犯錯誤。反思你的工作並不斷改進它會帶來創新,而創新的根源在於對事物運作方式的好奇心。記住,這是自我提升過程中的一個重要障礙。

錯誤 - > 見解 - > …好奇心 - > 創新 - > 錯誤重複……

如果你想繼續前進,成為一名優秀的高級程式設計師,你需要對你所做的每一件事都保持瘋狂的好奇心。好奇心是一種你越用就會變得越好的工具,這正是人們對優秀高級程式設計師的期望。優秀的高級開發人員以結構化的方式引導他們的好奇心,使他們可以使用那些在緊急情況下積累起來的信心。

有一些方法可以滿足你的好奇心,塑造你的品牌。

● 永遠不要停止學習。選擇一門課程、一本書、一個在線教育學位,用它來豐富你已有的想法,並獲得新的想法。

● 注重基本原則。確保你了解它們是如何工作的,這樣你就可以把它作為你工作的基礎。

● 不要說出你的想法。展示你的項目,無論如何,想法都是被高估的。如果你的想法得到了應用和傳播,你就可以塑造起你自己的品牌。

● 在新想法和已有想法之間細細考量。不要盲目接受你「應該」知道的東西。挑戰現狀。

● 不要只是讓它可以工作。使其可擴展、可重用並且可插拔。這就是你建立你的專業知識的方式。

一切都始於好奇心。如果你不好奇,還不如放棄。正如阿爾伯特·愛因斯坦所說的:

「我沒有什麼特殊才能。我只是非常好奇。」

相關焦點

  • 經驗分享!資深程式設計師大佬告訴你,如何成為一個C++高級程式設計師
    很多程式設計師都是剛開始的時候不重視這 些,但是工作幾年後又來補習這些知識。最開始可能不需要學習的太深入,但是基本的數據結構和算法一定要知道。推薦《數據結構(C語言版)》,在數據結構和算法的學習中,最好不要去關心面向對象方面的技巧,就用C語言來實現,這樣能更關注於算法本身的內容。4.
  • 是什麼成就了一名「高級」程式設計師?
    除多年編程經驗之外,還有什麼能區分一個程式設計師是「老手」還是「新手」?編程技巧當然是一部分,但它絕非是全部。聰明的程式設計師可能比他們的同行擁有更出眾的編程技巧,但那不足以說明他們就是「老手」。同樣,僅僅因為擁有10年編程經驗也並不意味著他們就是高手。在工作崗位上,擁有多年編程經驗也不能說明問題。即便沒被炒魷魚,那也不能提升你的價值。
  • 初、中、高級程式設計師的進化之路(前端)
    本文轉載自【微信公眾號:前端人,ID:FrontendPeople】經微信公眾號授權轉載,如需轉載與原文作者聯繫初級程式設計師僅能完成簡單模塊和項目的開發工作,難以勝任複雜模塊的開發。通常是入行不久, 1 年及以下工作經驗的同學。能力要求熟悉前端基礎知識如 HTML、JS、CSS 。能夠使用一門 MVVM 框架進行簡單的業務開發。
  • 普通程式設計師與高級程式設計師有什麼差別?你知道嗎?
    程式設計師的基本能力是:Tasking和學習能力。當好程式設計師的能力是:用更好的方法來實現功能。0.文檔能力「文檔是第一生產力」,這一點在程式設計師的世界是毫無異議的。俗話說:「不會寫文檔的程式設計師不是一個好程式設計師」。
  • 中國程式設計師 VS 美國程式設計師,差距就在這五點
    但在國內,真正因為熱愛編程而從事這份工作的人其實並不多,很多人學習程序想得都是這個行業火,賺錢快,入行門檻低。什麼技術火就學什麼,然後進入一個大公司,做幾個成功的項目,積累工作經驗,幾年以後自己當個小管理,拿著十幾萬,或幾十萬的工資,再無追求的過著小日子就好。甚至到了30歲,如果沒能進入管理層,大多數人都會考慮轉行,或僅靠自身的知識累積開始創業。
  • 全棧開發永遠成不了高級程式設計師?!
    【CSDN編者按】對於程式設計師來說,選擇深耕單一技術還是各領域涉獵一番是二選一的必考題。如果你是後者,那恭喜你成為很多開發者豔羨的全棧工程師了!你會很受歡迎,很多技術問題上都需要你的參與。但是,一個殘酷的事實是,儘管你付出了巨大的努力,但是一旦遇上大神你仍然不配稱作高級開發。本文的作者曾經幻想自己會成為無所不能的技術大拿,但是「囫圇吞棗」的學習卻讓他和同事的實力越拉越大。
  • 程式設計師「不惑」的 30 歲到了,就該給年輕人讓位嗎?
    別擔心,小探今天就請了一位前谷歌資深工程師 Yan 來跟大家討論討論,工作了1年、5年、10年的程式設計師們,該如何規劃職場和提升自己。Yan 曾在谷歌連續三年獲得「Top performer」的稱號,也曾擔任技術面試官。最好的提升在工作中IBM 想靜靜裁掉 40 歲以上的員工,顯然沒法靜靜。。
  • 初中學歷可以轉行做程式設計師?
    雖然題主你目前只有初中學歷,但是想成為程式設計師其實也不難,以我的經驗,只要26個英文字母認得全,有一點英語基礎,去培訓機構培訓三個月,基本就能寫程序,成為一名初級程式設計師。但是我並不建議你這麼做,我說一下自己的看法:1.程式設計師是腦力勞動,需要具備一定的知識儲備和較強的邏輯思維如果只是學會寫程序,去IT培訓機構培訓幾個月就可以實現,成為一名初級程式設計師真的不難。
  • 程式設計師:高級與低級程式語言,您應該學習哪些內容?
    如果你是一名C程式設計師,Java可能看起來很高級。如果您習慣使用Ruby,Java可能看起來像是一種低級語言。機器代碼和低級語言語言是高級還是低級(或中間某處)都是關於抽象的。機器代碼沒有抽象 - 它包含傳遞給計算機的各個指令。因為機器只處理數字,所以它們用二進位表示(儘管它們有時用十進位或十六進位表示)。進入更流行的程式語言,你會得到像C這樣的東西。
  • 程式設計師是做什麼的?未來計算機變得智能,就不需要程式設計師了嗎?
    很多人認為計算機變得如此智能,所以在不久的未來將不再需要程式設計師。另外一些人認為程式設計師是天才,他們在電腦前能不斷地解決複雜的數學難題。但是,程式設計師沒法選擇與更理性的物種工作,他們不得不與人類共事並且把人類的想法翻譯成計算機語言。
  • 一線城市工作3年的程式設計師薪資多少?
    我如何能漲薪?在北上廣工作三年的可以拿到多少?」 這幾乎是程式設計師們最關心的問題了,今天就來一起聊聊這個問題吧~ 1、程式設計師薪資是如何確定的 首先,對於普通開發,薪資是根據能力確定的。
  • 專科VS本科:別給專科程式設計師套上學歷的枷鎖!
    雖然相對於其他職業來說,程式設計師的實際能力和工作經驗顯得更為重要,但是在具體情況下,學歷依然是影響程式設計師未來職業發展的不可忽視的因素。尤其是對於學歷出身一般的程式設計師來說,在職業發展過程中需要克服的客觀阻力可能更大。 在程式設計師這個職業上,專科與本科有什麼區別嗎?區別在哪?
  • 國外程式設計師推薦:每個程式設計師都應讀的書
    無論您的經驗水平如何,也不管您在怎樣的開發環境中工作,也無論項目是大是小, 本書都將激發您的思維並幫助您構建高品質的代碼。《代碼大全(第2版))》做了全面的更新,增加了很多與時俱進的內容,包括對新語言、新的開發過程與方法論的討論等等。推薦數:1504對於那些已經學習過編程機制的程式設計師來說,這是一本卓越的書。
  • 高效程式設計師的特徵:聰明,懶惰
    我說的這幾個詞的意思是:正確的軟體開發應該是懶惰式開發,也被稱作忍耐式開發;這種開發方式的表現是,在真正動手寫代碼前,程式設計師要花大量的時間通盤考慮所有可能的解決方案和途徑。這可以看作是延緩寫代碼,在沒有完全理解問題前絕不動手寫代碼。先把問題理解清楚,確保將要寫的代碼能真正的解決問題,這將會避免之後寫出大量無用的代碼。
  • 被嫌棄的35歲程式設計師
    某軟體公司招高級程式設計師的任職要求之一是「3 年以上經驗,40 歲以下」。某教育公司的招聘 JD 上要求道「 18 年畢業的 -35 歲以內都有的聊」,HR 備註卡年齡的原因是因為「年齡大職級可能 hold 不住」 。截圖來自 Boss 直聘到了 35+ 的年齡再去找工作,市場的期待值也會變高。
  • 好與壞的程式設計師:如何客觀評價程式設計師的水平?
    1有感於知乎上的一篇關於程式設計師的討論這發生在幾千年前的對話是不是靠譜我們不知道,但是拿這話來套程式設計師的生態圈,真就是一套一個準。2微軟某個大牛軟體下面兩個不同的組裡各有一個大牛程式設計師,為了不失一般性,我們叫張三和李四吧。張三的特點頗有點大哥的風範,偶爾也充當一下二哥。寫的程序嚴謹,測試也很嚴謹,幾乎不犯錯。組裡其他同事有錯的,也在出大事之前默默的修掉了。
  • 嵌入式程式設計師如何發展成全棧工程師
    對於嵌入式程式設計師來說,如果想成長為全棧工程師,應該做好以下幾件事:第一:設計全棧開發方向。對於嵌入式程式設計師來說,應該以物聯網體系為依託設計全棧開發方向。物聯網體系包括六個大的技術組成部分,分別是設備、網絡、平臺、分析、應用和安全,其中嵌入式程式設計師處於設備層,下一步可以繼續往上發展來設計全棧路線。簡單的說,接下來應該學習雲計算、大數據相關知識。
  • 看看國外程式設計師怎麼說
    對編程感興趣的可以私信我獲取資料,本可以提供連結直接下載,但無奈容易被和諧,所以需要的朋友請私信我問:如何長期從事程式設計師相關的工作gydorah:我是一個29歲的程式設計師。隨著時間的推移,我注意到的一點是,我不再像剛開始工作時那樣朝氣蓬勃、意氣風發和精力充沛。
  • 你知道高級程式設計師必備的Java開發工具嗎?
    Java程式語言的流行趨勢,帶動了一批Java程式設計師,而每一位Java程式設計師都會有套工具來應對工作上的挑戰。多年來,Java程式設計師使用軟體來完成他們的工作。有很多工具對他們是有用的,而今天小編將列出六款Java程式設計師必備的工具。1.
  • 程式設計師不好找對象?有緣網助力破解難題
    其中,推動我國網際網路飛速發展,網民規模持續增長離不開一大批程式設計師在背後的辛勞付出。  據相關統計得知,程式設計師的年齡分布偏年輕化,22-24 歲的程式設計師佔比高達 23.4%,25-29 歲的程式設計師佔比高達 39.9%,30-34 歲的程式設計師佔比達 22.7%,這三個年齡段成為了程式設計師群體的中堅力量。