大學期間,技術和算法的抉擇

上大學已經兩年多了,這兩年來學到了不少的東西,在互聯網的時代,每個程序員都不得不學習新的知識,以充實自己,避免被不斷更新迭代的時代所淘汰。在大學裏,每一個學習計算機的同學都在面臨兩個抉擇——技術和算法,我們應該優先選擇哪一個更合適?

此處所談到的“技術”是指一些在職場上常用到的專業技能,比如學習一些Java的開發,從JSP和Servlet到Spring全家桶;Golang的web開發到高併發的解決;服務器的一些部署,Docker和K8S(kubernetes的k和s之間有8個字母,因而叫K8S),shell腳本等;而算法是指一些算法和數據結構等用來競賽和研究底層邏輯的知識點,比如鏈表、隊列、棧、樹和圖等。

這兩年來,我一直在學習前者,對後者是有所懈怠的,雖然在大學階段也有開設算法程序設計和數據結構課程,但我在這方面的欠缺是顯而易見的。當前階段主要在從事Java Web和Golang的後端開發,能夠做一些Web端和APP端的開發,實現基本的功能和操作,現在已經參與過幾個網站和APP的開發,在開發過程中,經常是在實現功能的路上學習和成長,鍛鍊自己的開發理念和開發思路,比如實現用戶登錄註冊時,學會第三方發送郵件,短信驗證碼,數據庫的增刪改查等;實現搜索時,學習elasticsearch搜索服務器等,所學會的技能都是在開發過程中所能夠運用在實戰的。

下面再說一下算法和數據結構,這兩門課程在我們學校也是有開設的,但由於自己在這兩門課程上花費的時間嚴重不足,理解也不是很透徹,最近也在狂補知識,還有一個主要的原因是在這兩門課程在當下我所從事的開發過程中很少用到(只有在實現評論功能的時候使用過樹的知識點),這類的知識點在開發過程中是不會直接用到的,這些知識點已經被各種底層類庫封裝,直接使用即可,不需要了解到數據結構和算法思想,開發過程中一般是以業務邏輯(實現的功能)爲主,涉及到的數據結構和算法的知識點其實並不多。

那麼重點來了,技術和算法哪一個更重要呢?那麼就請你好好分析以下的兩個問題,仔細想清楚對自己的定位:

我經常把互聯網中的人類比成建築工地的兩種人,一種是在辛苦勞作,把一塊塊的磚頭壘在一起,造就萬丈高樓;另一種是在造磚頭的路上越走越遠,思考着如何去創造高質量且持久性更強的磚頭;

就像武俠小說中的外功和內功兩種,外功就像金鐘罩鐵布衫和厲害的劍法等,內功就像是九陰真經、易筋經這樣的心法等,在武俠小說之中,大多數強者都是以內功心法爲強(個人理解)。

不知道你想成爲哪一種類型,這其中,具有創造磚頭能力的人屬於對於底層理解很透徹的人,能夠發明創造,而不是簡單的使用,代表算法這一類;內功心法屬於屬於練功基礎好,也屬於算法這一類。總體來說,外功在沒有強大的內功支撐下是很難有所成就的,沒有磚頭也是不能萬丈高樓平地起的,在小的公司和簡單的一些網站和APP的開發過程中是不需要數據結構和算法的知識的,也就是普通的碼農所做的活兒,而如果你想要進軍大佬級別,從事架構或者是一種更加底層的應用開發以供開發人員使用,或者想要到大公司工作,就不得不掌握算法和數據結構了(大公司的業務級別很大,是需要優化的)。

以我這兩年的學習經驗來說,想要學習到這些職業技能,是很容易的,很多的知識和實例在網上都可以找到,但算法和數據結構就不一樣了,它需要你理解很透徹,能夠靈活使用,在後面的開發過程中,看到Java的底層源代碼也是需要一定的算法和數據結構的知識的。對於考研和未來找工作想去大廠(BAT、字節跳動、華爲等)的人來說,建議前者學習算法和數據結構更深一點,因爲考研複試的上機考試和大廠面試第一關幾乎都是數據結構和算法,技術的學習依情況而定;若想要去小公司一同成長的,建議學習一些實用的技能,能夠解決開發過程中的問題即可。

以上均爲個人看法,如有不適,請勿較真。

來源於:微信公衆號【李歘歘】

作者:李歘歘

掃碼關注,領取衆多粉絲福利,觀看更多原創文章,聯繫作者

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章