當前位置:
首頁 > 科技 > 全棧開發永遠成不了高級程序員!

全棧開發永遠成不了高級程序員!

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

作者 | Philipp Ranzhin,.net程序員。

譯者| 彎月

責編| 郭芮

出品| CSDN(ID:CSDNnews)

以下為譯文:

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

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

曾經的我夢想著無所不能

我通過不同的應用程序域(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 翻譯,如需轉載,請註明來源出處。

熱 文推 薦


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

你我的父母,都在被互聯網「割韭菜」
13 歲編程!少年比爾·蓋茨如何成為最成功的自學成才程序員?

TAG:CSDN |