普通程序員與高級程序員的差別在哪?

同樣都是敲代碼,爲什麼別人一個月工資五萬,你一個月卻只拿五千?是單純在找工作的時候運氣不佳?還是因爲技術水平有差別?那些被大衆膜拜信仰的技術大神到底牛在哪裡,現狀已定,普通程序員是否還有機會逆襲?看完這篇文章,或許你能從中找到答案。

從思維和習慣角度看,普通程序員和高級程序員的差別主要體現在以下四個方面:

缺乏編程思維

編程思維又叫Computational Thinking,指的是從理解問題到解決問題的思考方式,具體到程序員的實際開發工作中來看,當擁有編程思維的程序員接到一個新的需求,他們總是能迅速在大腦中分解複雜問題,將注意力聚焦到重點問題上並提前預設解決路徑,比如這個需求對現有邏輯有什麼影響?怎樣操作纔是最優解?一旦變更數據會存在哪些風險?團隊最少需要多久的開發週期才能交付?擁有編程思維的高級程序員能從產品經理的需求中思考爲什麼要這麼做。而普通程序員在收到新需求的第一反應大多不是思考,而是吐槽“爲什麼又要改需求,他/她到底懂不懂產品”,然後在憤懣中悶頭敲代碼、改Bug、繼續敲代碼、繼續改Bug,陷入無止境的循環當中。到最後,沒有編程思維的人,敲再多的代碼,也只能做一名普通程序員。

不知道怎麼解決Bug

普通程序員發現Bug後,直接複製粘貼靠百度,“一杯茶,一根菸,一個Bug想一天”,能不能解決全靠運氣。高級程序員在發現程序報錯後,首先會查看瀏覽器控制檯是否發送了對應的請求,如果是的話再看請求碼是什麼,然後根據不同的錯誤碼做出不同的調試方案,要麼通過報錯日誌找到對應的地點進行修改,要麼通過開發工具斷點調試,順藤摸瓜找到最終問題。

當問題解決後,有經驗的高手往往會覆盤總結處理好善後問題,下次再出現類似情況就能第一時間做出反應,普通人與高手的差距往往體現在解決問題的能力上。

沒有養成良好的學習習慣

我們大部分人都習慣了接受填鴨式教育,上學期間大家還尚有學習的動力,但有多少人在工作後依然能夠保持良好的學習習慣?技術的世界日新月異,當很多人還停留在JDK8的時候JDK16已經悄然問世,從SpringMVC到SpringBoot再到SpringCloud全家桶,不同版本的框架正在以迅雷不及掩耳之勢快速更新。很多程序員在畢業後便不再主動學習,他們的技術水平也就停留在了剛進公司的那幾個月。時光流逝,每年有大量更年輕、更有熱情的應屆生走出校門,他們隨時都有可能替代掉高薪低性價比的普通程序員,如果沒有主動學習、終生學習的意識,這批人註定將會被技術大潮所淘汰。

視野狹窄,缺乏長期的目標規劃

程序員長期處在996、007繁忙的工作節奏中,鮮少有時間停下來去思考自己的目標到底是什麼,現在的你和剛畢業時的你相比有什麼變化?五年之後你希望自己活成什麼樣子?很多人每天只是馬不停蹄地處理各種領導派下來的任務和產品經理提出的新需求,卻從來沒有駐足思考過自己的目標規劃和後續進步的方向。每天在舒適圈中悶頭敲代碼只會讓自己的視野越來越狹窄,當一個程序員做到了一定程度,除了技術本身之外,視野、圈子和人脈變得越來越重要,這也直接關乎程序員個人的晉升空間。

問題擺在面前,普通程序員要想實現技術水平的躍遷,必須有針對性地做出改變。

首先,要敢於自我革新,與過去的思維習慣劃清界限重新開始。在日常工作中,多去看看“大神”做的項目,看他在一開始的時候是如何設計項目的,在編程的過程中對數據庫進行了哪些操作,以及爲什麼這麼做。久而久之,當你自己的項目遇到複雜的需求時,你也能夠在這個思路的基礎上進行難點拆分,不斷改進優化項目,這將會是你進步的開始。

其次,拓寬視野,培養終生學習的習慣。將目光從個人所在崗位轉移到行業中去,多去了解國內外的技術圈發生了什麼,多去看看行業內外正在進行哪些變革,每天抽出一個小時的閱讀時間,從被動學習轉變爲主動學習。“人生在勤,不索何獲”,只有站在巨人的肩膀上不斷學習,才能獲得長遠發展機會。

最後,制定長期發展目標。想清楚自己到底想要從事什麼崗位,未來在這一崗位上想要達到什麼結果,將大的目標切分成階段性目標,以此爲導向不斷努力。就算階段性目標失敗了也沒有關係,回過頭覆盤總結,看在哪些地方還有進步空間。