經歷了大一一個學年,我摸索出了這樣的經驗

前言

不知不覺上了大學已經快一年了,這一年我的改變非常之大。我和大部分學生一樣,上大學後,我也迷茫過。但我很慶幸,我在編程之路上開啓得很早。在這裏分享我的編程探索之路並且在後面分享一些編程方面的個人建議。來這裏的堵着門看看我是怎麼過來的,取長補短,避免在編程中走更多的彎路。

一、入學篇

1.填志願

我在福建晉江的一所一級達標高中上學,從高一就非常努力,但是很不幸,高考分數並不是自己理想的。填志願時,想選計算機專業,但是迫於無奈,只能選了計算機相關的偏硬件專業,電子信息工程。我對計算機的好奇,就是從填志願開始的。但是暑假並沒有花任何功夫在編程上,那時我對編程並不瞭解,也不知從何學起,對計算機的好奇馬上又消失了。三個月的暑假是漫長的,9月16日,終於迎來了入學。

2.初入大學

對於每一個新生而言,大學是充滿未知的地方,有很多事物等着我們去探索,當然帶來的也有迷茫。

初入大學的軍訓期間,那時對硬件和軟件沒有一個明確的概念。學校裏的各種部門和協會都迎來了新招,那時對加入部門和協會產生了濃厚的興趣。

很多部門和協會的負責人都來過宿舍宣傳,也不乏許多的兼職、推銷和詐騙。他們每批人的宣傳單我都留下了,每一份都有意識的去了解。但是,從那時候開始,我瞭解到了學校有程序設計協會和網絡安全協會。

各部門協會的面試是集中在軍訓快結束的幾天晚上,我去面了3個部門,最終進入了校電臺辦公室。但是後來發現,雖然自己也很愛與人交往、談天,但那裏並不適合自己,也許我更適合技術。然後我就通過宣傳單混進了學校各大技術協會的羣。

我通過羣進入了實驗室,在那裏,我認識了一批學長們,包括那些在ACM競賽中獲得國家獎項的學長。

當時我很單純,特別崇拜編程,也希望能行那些學長一樣厲害。由於學校C語言課程還沒開,我就先跟協會裏的學長們一起學了皮毛點的C語言語法。

學校的C語言開課之後,我發現我們宿舍也有一個在暑假就學習C語言的夥伴,後來跟他一起做算法題,當時的第一感覺就是他好厲害,他好懂。

但是很多東西並沒有這麼容易堅持下來,因爲我對“ 算法能幹嘛?”這個問題特別糾結,雖然C語言基本語法已經懂了,但是學編程不是爲了學軟件嗎?天天做那麼多算法題幹嘛?所以我就開始有意識的開始向軟件編程方向開始瞭解。

二、自學篇

1.第一次自學

我一邊學習學校的C語言程序課,一邊用自己的筆記本電腦瘋狂的百度和編程、C語言有關的東西,大一上學期在自己基礎不紮實的情況下,嘗試着用C語言寫了第一個我覺得比較高大上的遊戲,貪吃蛇。但是很遺憾,對於我這個小白而言,貪吃蛇的很多實現算法還不是特別清晰,看着B站上的視頻學習,最後只能幾百行代碼,複製粘貼,開始運行,草草了事。這是我上大學以來走的第一次彎路。

2.瞭解黑客

我對新鮮事物非常的好奇,尤其是技術。有一天我在網上看到一篇文章,講的是一個清華大學的神童爲了不寫作業,黑了清華的系統。那時我對黑客這個名詞留下了深刻的印象。沒過多久,我又在網上看到了一篇文章,某名牌高校的計算機專業大二女學生參加網絡安全大賽中獲獎,瞬間因她的高超黑客技術而出名。從次以後,我就幻想着能成爲一名黑客大師,並且對軟件編程產生了濃厚的興趣,開始對硬件失去興趣。

3.開始熱愛編程

大一上學期的課程十分簡單,除了電工學,差點沒過線,其它的都輕鬆過線了。我們迎來了寒假,我本來要在寒假好好計劃學習與考研相關的內容,沒想到,學了十幾天後,我拷問了自己的真實內心,自己還是對編程更加感興趣,就開始打開電腦,自學了起來。寒假時,我只會c語言和對黑客概念一點點的瞭解,至於這編程技能到底能幹什麼,不得而知,我花了很大的經歷從網上搜索了有關計算機專業學生的就業和具備的技能。每次自學編程迷茫的時期,我都會花費大把的時間在搜索引擎上搜索,尋求學習資料,獲取自己未來的答案。
我記得又一次在大一上的時候遇到過一個同年級的大佬,他早就在高一自學C語言,向我推薦了一個所有程序員都鍾愛的網站——github。後來,我通過搜索引擎,瞭解了CSDN這個平臺。
寒假期間,我C語言書籍翻得不想翻了,因爲我想編一些高大上的軟件,又正值python火熱,我就去學了python語法。這是我的又一次彎路。我暫時拋棄了C語言,在python上十分執着,它是一個擁有簡潔的語法和高效開發效率的腳本語言,我十分喜歡。大致瞭解了Python語法並且能支撐我進行簡單編程後,我又瞭解了爬蟲。這時候,我開始熱愛編程了。

4.第一次體驗從入門到放棄

在瞭解了爬蟲之後,我就在github上不斷尋找爬蟲源碼,在mooc網上尋找爬蟲教程,收效甚微。因爲,爬蟲好像要一點Web方面的知識,我發現了自己廣度太窄,就拋棄了爬蟲,去學了Web知識。

5.又一次從入門到放棄

我從瞭解各種協議開始,開始學習HTML的簡單語法,跟着B站上的老師製作了最簡單的網頁,慢慢的成就感,後來發現,製作一個好的網頁還需要學習CSS、JavaScript等語言。但是實在沒有耐心學下去,簡單的瀏覽了CSS和JavaScript的知識大綱後,我又經歷了從入門到放棄,把重心投入到了Web滲透上。當時的理解就是:Web滲透好像不需要太深入的Web知識,每個知識點都只要瞭解個大概。後來,我發現黑客、滲透、網絡攻擊這些名詞跟ctf關係不淺,而我又曾經混進過學校的網絡安全協會的羣,不如以後就打ctf吧?

6.初入ctf

決定打ctf後,我瞭解到ctf有五個比較基本的題型:Pwn、Reverse、Web、Crypto、Misc,它們分別是漏洞挖掘、逆向工程、網絡、密碼學、雜項。我很喜歡這種比賽,因爲我認爲它注重攻防實戰,實操性很強,比枯燥的算法題有趣得多。
我開始和羣裏面得過CTF獎項的學長們交流,他們把我拉進了他們的小隊,我好像就成了ctf預備隊員。一邊跟着自己的腳步,一邊領略他們的強大,再一邊聽從羣內老師的鼓勵,我開始了ctf學習。作爲初學者,我開始做了一些雜項、Web、Crypto的一些題目,同時也得到了很多的新知識,時而不懂就問學長。我覺得我學到了很多,我開始夢想成爲一名主攻Pwn和Reverse的ctf選手。

7.學習二進制

Pwn題和Reverse題在ctf比賽中佔據了重要的地位,並常常作爲壓軸題,難度可想而知。它們需要龐大的知識量和精湛的知識深度,誰知我年少輕狂,一下子鑽進了彙編語言和內存的學習中。在學習內存和彙編的過程中,要對內存有很深的理解,而C語言、彙編語言和內存息息相關,我又意識到C語言的重要性,特別是我對指針還一知半解,更沒法支撐我繼續學習二進制。所以,我一邊二進制,一邊又複習基礎沒打好的C語言。

8.學習Java

要想學好網絡安全,特別是攻防方向,必須得要會幾門編程語言,至少精通一門。黑客不就是技術的集大成者嗎?我在學ctf的過程中,隨着對IT行業理解的不斷深入,我發現Java在這個時代也是主流開發語言,甚至不遜色於python。我夢想成爲一名黑客,不希望成爲腳本小子,所以不會點編程能力怎麼行,Java語言沒有C語言那麼繁雜的指針,Java程序在各大平臺系統上都可以運行,兼容性強。所以這個時代,程序員怎麼可以不會Java?我從此開啓了Java學習之路,但是ctf仍是我的夢想,這是我第一次出現了從入門到堅持。

三、計劃篇

今天是2020年5月28日,我的大一還有一個月就要結束了,經歷疫情的這幾個月長時間宅在家,我的技術突飛猛進。雖然取得了長足的進步,但是夢還要追。
雖然我不知道我的這個計劃會不會讓我走偏,但是我還是要計劃。
一年來,我涉獵了很多門語言,瞭解Web,入門Java,第一次打了ctf。
①未來,我希望我能在C語言、Java、python這三大語言上變得熟練應用
②我會繼續打ctf,甚至是畢業後。
③我會一直寫博客,只要我還在IT圈子裏,我要建立起自己的IT圈,分享我的技術。
④雖然我是一名IT愛好者,但我熱愛自由,我也想成爲一名分享技術的自由職業者。

我不知道我會不會堅持下去,也許未來有一天我會發現我現在這個決定是錯了,走了彎路,但是這是我成長道路上寶貴的經歷,任何的經歷都不是白費的,它都是能夠帶給自己很大的成長的。

四、建議篇

結合我這一年以來的經歷,我給CSDN的一些編程初學者們一些建議。(千萬不要走過我走過的彎路)
學習路線:
①C語言——>Java——>python
C語言學習所有編程語言的基礎,萬萬不可忽視,學習了C語言熟練掌握之後,你學習其他語言就會十分容易。其他語言都是從C語言簡化過來的,如果第一門語言先學Python,它可沒有那麼多與內存相關的知識,到時候你發現你的編程能力受限了,開始學Java和C語言,你會發現你還要入門重新學。而C語言和Java與內存息息相關,在編程中,要想精確的理解內存層面,十分推薦C語言和C++。如果想要寫一些簡單簡短的腳本程序供自己用,python比較適合,這種腳本程序不需要強大的運行效率,我們通過python就可以開發得特別快速。如果傾向於就業,建議Java,這種語言應用範圍特別廣,解決廣大程序員的就業問題,現在基於安卓系統上的開發都是以Java爲主。

②千萬不能只會一門編程語言
工作上的很多事務需要很多編程語言的結合,一個大型軟件的開發往往也涉及到很多編程語言。最優建議是精通一門,熟練多門,並且會利用相關編程語言應用一些技術。

③千萬不能忽視數據結構與算法
初入工作,你可能覺得算法沒什麼大用處,但是隨着你接觸代碼的增多,你會發現數據結構與算法在軟件開發當中起着無可替代的作用。你可能會寫一些機械性的業務,但在軟件開發最核心處,還是要交給那些算法工程師。沒有算法工程師,軟件也就無法完成。所有的程序員,都需要認真學習數據結構與算法來提高自己的競爭力,那是實力的體現。但是,數據結構與算法十分抽象,應用困難,學習過程中,不可囫圇吞棗,好的算法工程師,往往是經過了好幾年的沉澱。

④在大學中適當參加一些與編程相關的競賽
哪怕沒有獎項,如果每年都有參加競賽,也能大大增加我們的閱歷和能力,如果在大學期間沒有機會接觸到項目實戰,就更要參加,沒有競賽的支撐,想要在大學四年中成長爲一個厲害程序員,還是有點難的。

⑤不能只參加競賽,還要有一定的項目經驗
競賽是智力和能力的體現,但是在就業方面,需要我們一定的項目經驗,項目開發有助於提升我們的知識應用能力,有了競賽的沉澱,在項目開發中就更加有利。

⑥適當學一些相關的技術,利用相應的編程語言去實現
作爲程序員,我們很需要不斷地更新自己的知識,特別是在工作中,在就業前具備一定的技術能力,有助於我們職場競爭力的提高。

⑦不能碼一輩子的代碼,工作強度太高,再健壯的人也承受不住,工作之餘,多多發展自己的副業。大多數程序員職場生活都熬不過35歲,請讓你的副業在35歲之前發揚光大,讓它能接替你的主業!

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