聊聊我的選擇
大家好,我是魚皮,前幾天看到一位大一計科同學的問題:我想學做 Web 專案,又想學演算法搞 ACM,如何取捨呢 ?
ACM 是國際大學生程式設計競賽,旨在展示大學生創新能力、團隊精神、編寫程式、分析和解決問題的能力,認可度極高。
這個問題我相信不少同學都糾結過,四年前的我也一樣,下面給大家聊聊我的選擇。
我的選擇
剛上大學的時候,我面對各種程式語言和新奇知識無從下手,也不知道自己適合學習什麼。於是大一期間,我胡吃海喝,學了 C 語言、C++、Java、web 開發、Python 等,持續為學校做網站的同時,也在學校的課堂教育和薰陶下做了不少 ACM 演算法題目。
吃多了容易拉肚子,這個比喻雖然土但卻非常貼切。當時的我就是這種狀態,每天要學的東西都很多,再加上演算法題目做不出,簡直壓力山大。時間長了,我竟然都已經麻木了,開始機械性地學習、機械性地刷演算法題目,甚至有些做不出的題直接複製貼上應付了事。
這種高壓狀態持續一段時間後,我意識到,大學的時間有限,我的精力也有限,一定要 懂得取捨 !
捨得捨得,小舍小得,大舍大得,不捨不得。
在一番考慮下,我決定放棄 ACM 了,專心去學習軟體開發,從此在做專案的路上無法自拔。
原因
為什麼放棄 ACM 選擇學習 web 和其他開發呢? 對我而言,主要是以下幾個原因:
難度
ACM 競賽專業性強,題目大多數是英文描述,考察數學思維和邏輯,難度較大,不好上手。我在做 ACM 初級題目時就已經感覺非常枯燥了,做的腦闊疼。
而 Web 開發入門相對簡單很多,可以即學即練,比較輕鬆有趣,還能發揮創意做出自己的作品,收穫成就感。
對我來說,做 ACM 就犯困,還不如學 Web 開發,起碼能有動力學下去。
價效比
學任何知識都需要時間,都要多投入才有收穫,所以這裡我們只考慮 價效比 。
ACM 本就是比賽,競爭非常激烈,各種叫得上名號的名校學子、數學天才、演算法大牛,想要獲得一個能拿出手的獎,要麼你很聰明有天賦,要麼就投入比別人更多的時間去日常訓練,否則你憑什麼超過別人呢?
而 Web 開發的學習時間相對自由靈活,也幾乎感受不到競爭。當然,不是完全沒有競爭,畢竟就業找工作時還是要看你的能力。而且競爭小也未必是好事,容易讓人懈怠。
未來發展
在選擇時,要先問問自己,對什麼感興趣呢?今後打算朝哪個方向發展呢?是做演算法工程師,還是開發工程師呢?
對於任何方向的程式設計師來說,演算法思維都非常重要。雖然多做 ACM 題目能訓練演算法思維,但是如果你不是想從事演算法工程師工作的話,絕大多數的演算法在今後工作中是用不到的,甚至求職面試時問的演算法題也不會達到 ACM 題目的難度。
的確,如果你能在競賽中拿獎,成為演算法大牛,那麼求職面試時錄取機會加倍放大;但如果你沒有很好的獎項,在平時又沒有精力去學習開發知識,只是沉迷於刷 ACM 演算法題目,那麼在找工作時,你完全處於不利狀態。
我從小就想開發自己的軟體,夢想搞一番大事業,可謂是年少有為不自卑。在入學時就定下了目標,想從事軟體開發方向,因此選擇學 web 對我來說幫助會更大。
風險
我高中時數學其實是不錯的,但在 ACM 題目和演算法大佬面前,仍是一介草民。做學校 OJ 題的時候還好,但是後來看《挑戰程式設計競賽》等 ACM 書籍時,就有些吃力了。看完之後,再做 ACM 題目時,經常還是一道題折騰幾個小時仍然做不出,寫出了程式碼也不能完全理解,還老是忘,就很懷疑自己的智力。即使去參加競賽了,我也是充當背景板或者只是 “到此一遊”。
總之,在做 ACM 題目時,我看不到自己的未來,很擔心做了半天題目,還是做不出,浪費了時間,搞崩了心態。而學習 Web 開發時,網上資源多,解決方案多,我的進步更平穩。
雖然我在學習上有衝進,但不會為了自己的未來而冒險。
頭髮
還有就是,我發現自己刷 ACM 題的時候,頭髮掉的明顯比寫 Web 時要快,看似合理又很不合理!
雖然我選擇了 Web 開發,但不是說建議大家放棄 ACM。其實大一到大二的上學期,多做一些 ACM 演算法題目對自己也是很有幫助的,接受過一些訓練,以後找工作刷演算法會更輕鬆。此外,不少同學就是對演算法、對數學感興趣或者有天賦,那麼參與 ACM 是一個很好的選擇。但也千萬 不要把一切堵在 ACM 上,還是要抽出時間學習基礎開發技能的,多一條路會更穩一些。
關於程式設計師如何高效學習演算法,歡迎看下這篇文章:刷了 1000 多道演算法題,一點心得
地址:https://mp.weixin.qq.com/s/LCPMhE1-Bh-XKDU9Re0wkw
最後,無論選擇哪個方向,都要努力呀,畢竟越來越捲了。
相信自己有能力,那麼你就真的會有!
覺得本文還不錯的話,希望朋友們能 點贊 + 在看 支援下,給俺點創作的動力 ❤️