全棧開發永遠成不了高級程式設計師?!

2021-01-15 CSDN

【CSDN編者按】對於程式設計師來說,選擇深耕單一技術還是各領域涉獵一番是二選一的必考題。如果你是後者,那恭喜你成為很多開發者豔羨的全棧工程師了!你會很受歡迎,很多技術問題上都需要你的參與。但是,一個殘酷的事實是,儘管你付出了巨大的努力,但是一旦遇上大神你仍然不配稱作高級開發。本文的作者曾經幻想自己會成為無所不能的技術大拿,但是「囫圇吞棗」的學習卻讓他和同事的實力越拉越大。

作者 | Philipp Ranzhin,.net程式設計師。

譯者 | 彎月

責編 | 郭芮

以下為譯文:

回顧我剛開始學習編程的時候,我深信那句老話「程式語言並不重要」。我一直夢想著有朝一日能夠成為一名無所不能的開發人員,成為那個能夠將經驗從一種技術無縫應用到另一種技術而不受細節約束的人。

——但後來我發現,這個想法大錯特錯。

曾經的我夢想著無所不能

我通過不同的應用程式域(ASP.NET、WPF、Xamarin),JS/TS(React / Redux、Node)學習了C#和.NET,基本上我也相信自己無所不能。

我的想法是對各種技術進行抽象,同時有效地掌握多個編程範例,而且我在專業軟體工程的各個方面都具有實踐技巧。也因此,我經常嘲笑那些40多歲只知道沉迷於單一技術的老人,自認為他們花了半生的時間所理解的東西我能在一周內就全部掌握......我甚至認為,深入某個知識領域只適合於那些甘願在相同的崗位上工作一輩子的蠢貨。

我以為一切技術都是已有技術的重複,而且我已經找到了規律。

所以,當我的工作涉及到一些荒唐的Python代碼時,我會說:「給我點時間讓我快速閱讀一下規範,我就可以用更高級的技術解決這些問題了。這個世界上怎麼可能出現我從未見過的複雜情況?」所以我完全忽視了細節。讓新人去糾纏細節吧,他們還沒有抽象的能力。

技術細節上的差距總是在不經意間拉大的

我曾在TypeScript中使用基於抽象類的設計,結果卻遭到了嘲笑,因為很明顯沒有人這麼用TypeScript。我當然是假裝我的同事都是無可救藥的白痴,雖然以前這種做法可以替我解圍,但是那段時間給我留下了不好的回憶。

對開發人員來說,好聲譽可以掩蓋你的同事與你的知識差距。因此,你會忽略大量的細節問題,但是當然你看不見這些細節完全是因為你不懂——這就導致了我屢屢碰壁。

我不知道SQL中的索引類型;我忘了什麼時候應該在C#中調用靜態構造函數;如果不上Google搜索,我就無法正確實現IDisposable;我還曾試圖改動React組件的狀態......

然後,我開始懷疑我的抽象根本不管用。畢竟我所處理的技術類型不同,而且細節很重要,每個技術生態系統都有自己獨特的最佳實踐。你的.NET開發經驗不會阻礙你使用JVM,但它無法取代JVM的經驗。我自我評估的「學會如何學習」的技巧都成了泡影,我的學習速度並不比其他人快。

而且我意識到這個事實的時候已經太晚了。

我的技術只是一堆矛盾的想法——東一塊西一塊的知識讓我頭昏腦脹。我沒能成為無所不能的全能手,相反,我成了一名了解多項技術的中級開發人員,淪為了只掌握一項技術的40多歲老人的笑柄。因此,我感覺選擇全棧開發的職業生涯是一個錯誤。

自我批評是全棧開發的通病

問題是,企業需要全棧開發人員。不是我這樣的開發,而是那種多才多藝的老人,他們擁有五年以上的全棧技術經驗。

然而,這樣的稀有人才並不存在,所以企業會自欺欺人。他們聘請了一些平庸的中級工程師,專門研究三種大型技術,並稱其為高級全棧開發人員。這個職位上的工程師都屬於冒名頂替,而且還會給這些人帶來無窮無盡的自卑感,任何專注於一種技術的普通開發人員都比他們強。

現在我承認,我沒有準備好與那些某些方面比我優秀的人平等地合作。否則,用不了一周我就會把自己打死。

自我批評是我們這個行業的通病,但我們卻用錯誤的方式來補救。我們普遍認為自己是超級英雄,而周圍的人都是混蛋。我們不認為貶低了高級人員,我們一直覺得我們低估了自己,我們只需要拋開謙卑,並相信內心的軟體開發大神。我們認為我們需要用傲慢的態度指責那些對我們沒信心的人。

其實,我們只需要承認開發不僅對外人很難,而且對我們也很難。有些時候不懂得某些知識也是情有可原的。即便你有差距,也不意味著你的價值低,應該被驅逐出社區。

但在深入自我反省的時候,我們仍然會責備自己。全棧開發人員會因為缺乏對技術的深入了解而埋怨自己,擅長單一學科的專家會感嘆他們沒有更廣泛的技術力。

廣度學習與深度學習如何抉擇?

我們都面臨同樣的困境:廣度學習還是深度學習,兩者不能同時兼顧。我注意到一個有趣的現象:當你開始學習一項新技術時,舊的技術似乎就不再那麼有趣了。但是在IT世界中,如果你在一年之內沒有學習到新的技術知識,那麼就意味著你過時了。

如果你想繼續成為一個全棧開發人員,那就必須閱讀一些TypeScript的發布說明,一邊讀一邊嘗試這些功能,即使你不喜歡。即便這樣做了,與那些每天都用TypeScript寫代碼的專業人士相比,你還相差很遠。

這種矛盾的主要問題是我們不知道哪種學習方式才是最好的。我們(特別是企業)兩種方式都想兼顧,想讓每個人都擁有正確的、深入的技術力。

我不知道哪種學習方式才是最好的,但我知道從全棧開發者的角度來看,與單語言開發人員相比,你需要花費更多的時間學習。只要你繼續做全棧開發者,這種情況就會持續下去,而且你的熟練程度依然不夠。

你會很受歡迎,卻也沒有什麼地方非你莫屬。儘管你付出了巨大的努力,但是一旦遇上大神你仍然不配稱作高級開發。

你將永遠是一個中等水平的開發。

我個人決定堅持自己的道路。我可以嘗試深入學習一些東西,我也可以轉行做管理(管理的表面知識都是工業標準),但是我寧願繼續我的全棧開發這條路,並忍受痛苦,直到我真正做到無所不能。

原文:https://habr.com/en/post/436596/本文為 CSDN 翻譯,如需轉載,請註明來源出處。

相關焦點

  • 嵌入式程式設計師如何發展成全棧工程師
    嵌入式開發是物聯網開發體系結構中的重要一環,未來隨著物聯網的發展,嵌入式開發的發展空間還是非常值得期待的,尤其在產業網際網路發展的推動下,嵌入式開發的應用領域將得到進一步的拓展。對於嵌入式程式設計師來說,如果想成長為全棧工程師,應該做好以下幾件事:第一:設計全棧開發方向。對於嵌入式程式設計師來說,應該以物聯網體系為依託設計全棧開發方向。物聯網體系包括六個大的技術組成部分,分別是設備、網絡、平臺、分析、應用和安全,其中嵌入式程式設計師處於設備層,下一步可以繼續往上發展來設計全棧路線。簡單的說,接下來應該學習雲計算、大數據相關知識。
  • 高級程式設計師是如何從初級程式設計師演變的?工作經驗不再是唯一途徑!
    我在 3 天內交付了應用,但是客戶卻不認可。因為他說:這不是他期望的東西。 不用說,我的自尊心勢必受到了傷害,我把這歸咎於客戶沒有提供足夠的信息。那時候我說話做事還不成熟。現在看來,客戶永遠是對的。如果我投入更多的時間來分析客戶需求,情況可能會大不相同。不過我走了好大一段彎路才明白了這一點。
  • 眼界限制想像,阿里「程式設計師全棧修煉筆記」開源,全棧其實很簡單
    這麼多的概念,我們甚至都不知道怎麼去選擇,如何去學習!全棧在剛入行的程式設計師眼裡可能覺得是遙不可及的一個層次,給人的感覺好像樣樣通、樣樣松。但其實但是任何一個領域學到一定程度時,就會發現在其他平臺或程式語言上有類似的理念和思想,這些是相通的,眼界高了也就慢慢往全棧靠近了。
  • 是什麼成就了一名「高級」程式設計師?
    下面列舉的事情是大多數高級程式設計師都會做的。 1.至少掌握一門程式語言 我相信有些優秀的程式設計師只懂(並精通)一門程式語言,但在某種程度上而言,這其實會限制一個人的思維。就像當你手拿一把錘子時,任何東西看起來都像釘子。我認為,知道並成功使用至少一門程式語言,這是程式設計師從新手走向老手的重要一步。
  • 武漢Python Web全棧開發工程師修煉價格_web前端開發培訓哪家好...
    【課程介紹】課程以python語言為主導,進行web服務相關的全棧開發,包含後端伺服器開發,部署,監控;web前端開發,前後端不分離模板模式開發,前後端分離,單獨前端部署方案。,但html頁面使用)前後端分離vue使用方法(使用vue-cli腳手架)nginx 部署 vue項目【項目練習】日記網站開發,基於前後端分離的開發模式(flask +vue),該項目主要根據學習的知識點加以鞏固,並講解一些基礎課程中未提及的知識點,如 vue公共組建定義,路由的一些高級用法等。
  • 「不講武德的年輕人」:堅持全棧開發,「最接近特斯拉」的小鵬汽車
    但作為國內三大造車新勢力之一,小鵬的核心競爭力實際上來源於全棧開發。公司堅持全棧開發,以簡單實用的科技作為差異化賣點,在目前競爭激烈的國內新能源汽車市場中找到了自己的位置。 開發模式最接近特斯拉的車企 全棧開發,指車企自己完成大部分研發任務,而不是將核心系統、零部件的研發工作全部分派給供應商。
  • 你知道高級程式設計師必備的Java開發工具嗎?
    Java程式語言的流行趨勢,帶動了一批Java程式設計師,而每一位Java程式設計師都會有套工具來應對工作上的挑戰。多年來,Java程式設計師使用軟體來完成他們的工作。有很多工具對他們是有用的,而今天小編將列出六款Java程式設計師必備的工具。1.
  • 資深程式設計師認為的成功十大黃金定律
    人才對成功來說至關重要,而且人才和天才還是不一樣的,天才大部分是要有天賦的,而人才即使你沒有天賦,遵照規律發展,通過後天努力也可以達到。  如何才能成為一個頂尖的程式設計師呢?Java頂尖程式設計師Lukas Eder和我們分享了偉大程式設計師應該具備的十大特質,他表示這十大特質並不是偉大程式設計師所特有的,任何領域的領導者可以說都有這些特質。
  • 專科VS本科:別給專科程式設計師套上學歷的枷鎖!
    2.相對來講專科的基礎稍微差點,但個人感覺這點幾乎可以忽略不計,而且在平時開發工程中,有些專科反而比一些本科生表現的更加積極努力,畢竟覺得自己起點稍微低點,平時開發過程中真是沒覺得有多大的差異,起碼在面試的時候無論專科還是本科都會平等對待,表現出來的技術差異起碼差別不大。
  • 西安Python測試開發全棧核心課程
    從初級的手工測試到.頂端的測試開發,大家都希望能不斷的進行技術的提升,而就目前的現狀而言,在企業內部不願意花費成本去進行高級人才的培養,企業更願意花高薪招聘高級技術人才,而我們希望能夠在工作中不斷提升自己的技能,其實也是非常困難的,主要有以下幾個方面的壁壘:1.公司都是按崗定位,也就是說我們是什麼樣的級別,就會做相應的事情。
  • 程式設計師都做些什麼工作?
    所以,在程式設計師身邊的朋友問他們,程式設計師這個職業到底是做什麼的時候,程式設計師們為了解釋方便就會拿開發APP來舉例。於是在很多人心中,就給程式設計師扣上了APP開發的帽子。 其實,程式設計師是編程行業職業的統稱,程式設計師能做的不止是APP。
  • 資深程式設計師大佬告訴你,如何成為一個C++高級程式設計師
    GUI想要學習交流C/C++,可以私信小編 發C++ 獲取資源和一個程式設計師交流圈。3. 數據結構和算法很多人都忽視了數據結構和算法方面的知識,尤其是一些程式語言的庫做得非常好,幾乎不需要自己去實現一些數據結構和算法,導致現在很多程式設計師不 重視甚至忽略這方面的知識。但是,當我們想讓我們的程序跑的更快、內存佔用更少的時候,這些知識就非常非常重要了。
  • 初、中、高級程式設計師的進化之路(前端)
    本文轉載自【微信公眾號:前端人,ID:FrontendPeople】經微信公眾號授權轉載,如需轉載與原文作者聯繫初級程式設計師僅能完成簡單模塊和項目的開發工作,難以勝任複雜模塊的開發。通常是入行不久, 1 年及以下工作經驗的同學。能力要求熟悉前端基礎知識如 HTML、JS、CSS 。能夠使用一門 MVVM 框架進行簡單的業務開發。
  • 程式設計師術語:什麼是高級語言/低級語言?解釋語言/編譯語言?
    作為一名合格的程式設計師,你必須知道一些計算機軟體編程方面的術語。這次給大家解釋一下下面兩對常見的術語:高級語言/低級語言、解釋語言/編譯語言。其次,高級語言是可移植的,也就是說,僅需稍作修改甚至不用修改,就可將一段代碼運行在不同類型的計算機上。其缺點也很明顯,使用高級語言編寫的程序運行時,需要先將其翻譯成低紙語言計算機才能運行它,在翻譯過程中可能程會產生一些多餘的部分,運行效率低些。另外,對硬體的可控性相對於低級語言弱些,目標代碼量較大。
  • 對於程式設計師來說,技術深度與廣度哪個更重要一點?
    對於大多數程式設計師來說,都有自己的主要技術領域,主要在某固定的領域內做事,全棧的工程師相對來說比較少一點,畢竟每個人的精力是有限的,不可能同時掌握多個領域,如果掌握的廣度上大一點,可能深度上就相對會弱一點,當然,也不一定這麼的絕對,這還是要看個人的學習精力了,那麼對於程式設計師來說,技術深度與廣度哪個更重要的
  • 據說不知道這些大神的程式設計師不是真正的程式設計師
    簡評:據說不知道這些大神的程式設計師不是真正的程式設計師,這些大神有的可以憑藉一本未完成的書獲得ACM圖靈獎,有的微軟開出百萬年薪蓋茨親自來挖人,更甚者用自己發明的語言重新開發一套作業系統。這些大神不僅極大地促進了計算機行業的發展和軟體技術的革新,而且也讓我們這些後生的程式設計師能夠在他們的技術鋪墊上,利用他們開發的平臺工具或是語言更好地開發軟體。所以作為程式設計師的我們在學習技術的同時也應該多去了解這些大神背後的故事,在敬仰之餘也去學習下他們不斷進取,富有開創性的精神。   D.E Knuth(高納德.
  • 一款讓程式設計師編程更智能的開發工具Kite
    對於程式設計師而言有一項剛需,就是花費時間搜索網際網路的相關開發文檔和代碼示例。  Kite正是為了解決這樣需求而誕生的,對於許多從事Python的程式設計師而言,Kite極受青睞。所以Kite的工程師正在尋求添加對C#,Java和Javascript等語言的支持來擴大用戶群。  那麼,Kite如何幫助程式設計師變得更有高效?
  • 程式設計師:高級與低級程式語言,您應該學習哪些內容?
    當你試圖找出要學習的程式語言時,你可能會遇到高級和低級的術語。人們一直在談論高級和低級程式語言。高級和低級程式語言在整篇文章中,我將討論「高級」和「低級」語言。但兩者都沒有具體的資格標準。這就是為什麼我還要談論「更高」和「更低」的水平。
  • 拓維信息的這支「程式設計師」團隊有點強!
    他們頭頂「格子衫」「雙肩背」「理工男」的標籤,他們是「007」「996」那些熱門話題中的主人公,他們留在人們心中的是不善言辭,一絲不苟的刻板印象,在中國,這群用程序和代碼構築「理想王國」的人超過200萬,他們就是「程式設計師」。
  • 成都學習Python開發哪家好
    當團隊合作開發時,閱讀別人的代碼將是非常迅速和高效的。通俗說來就是「寫起來快、看起來明白!」所以近年來,python開發非常流行。那麼成都python培訓機構有哪些好呢?成都市不同規模的python培訓機構有什麼不同?沒有任何一家機構所有的課程都是牛逼的,它和人一樣有優點和缺點,除非它只專注於教1-2門課程。大多數培訓機構都不願意這樣做。