聊聊我的選擇
大家好,我是魚皮,前幾天看到一位大一計科同學的問題:我想學做 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
最后,無論選擇哪個方向,都要努力呀,畢竟越來越卷了。
相信自己有能力,那么你就真的會有!
覺得本文還不錯的話,希望朋友們能 點贊 + 在看 支持下,給俺點創作的動力 ❤️