請問關於軟體工程專業本科學生大學四年的過程?

大學的第二個學期要開始了,經過一個學期的學習,對演算法,編程語言也有了一定程度的了解,但是看到學長們能夠很厲害的寫一些項目或者是小的應用程序,接下來是按照學校的課程來嗎?還是各位前輩有能推薦的學習方式和內容?(進去大學之前編程零基礎):-)


再重新補充幾個具體的專業方面學習:

數據結構、演算法、數學建模、計算機網路、資料庫原理、操作系統原理、計算機硬體原理、嵌入式系統、計算機圖形學,設計模式,編譯原理,unixlinux系統,彙編語言,逆向工程,軟體工程,分散式計算存儲,神經網路,機器學習,人工智慧,網格計算,3D等等等

======================在下是萌萌噠分隔線======================

被邀回答,深感榮幸。。

作為一個畢業半年入坑某電商公司的猿類。回想起自己大二的時候根本就沒想過未來。。那時候只知道寫代碼和上課。所以樓豬將來必是棟樑之才。咳咳扯遠了啊。

先回答樓主:

目前來看猿類畢了業有以下幾條出路: 1、找工作(研究所)

2、讀研讀博

3、回家務農(做別的行業)

1:找工作也分成了很多種。。。。

1):本科生

2):研究生

3):那些知名國內互聯網浪蕩公司

4):國外公司

本科畢業的最大優點就是出生牛犢不怕虎,只要在校裡面成績還行,沒掛科。自己研究過一點東西。基本都能找一份工作。

研究生的難度要比本科生大,畢竟你這比本科生多三年的項目經驗。本科生可真沒啥可以寫的項目。(所以說本科打算找工作的小夥伴一定一定要有項目經驗

國內的這些互聯網公司其實對學生的要求真的沒那麼高。 只要踏實肯干。還有點聰明,會寫代碼。懂資料庫、網路、數據結構、演算法的一些基本原理,再多去面試。基本都能拿到offer。

國外的那些就別提了啊 那就基本都是稱霸一方的大神們 : 熱愛寫代碼的,演算法底子一流的,沒事寫寫git, 開源項目commitor 之類的。 這種東西基本都是看書,學原理,外加智商堆起來的。少年任重而道遠。

2:讀研:

這個基本上就是很一般的選擇吧, 在學校好好學習,然後讀個三年研究生。再去決定以後到底是讀博還是怎麼樣。 可以有三年玩的時間。學習的內容也更加專業,多發幾篇論文,上手學習的內容。準備找工作或者其他的選項(本人保研放棄了,所以對研究生乾的事不甚了解)

3:回家務農:

你懂得, 很多人一開始就不喜歡這個專業。 畢業更加蛋疼。 大學四年基本沒寫過超過100行代碼的。實驗課基本靠抱大腿。考試背背就行(別問我怎麼知道的。。當年就是 老衲一個人養活一個班的實驗課內容= =)。

找一份自己喜歡的工作,回回家附近找個喜歡行業乾乾。(等我干夠了,回家賣煎餅果子O2O,還望各位投資捧場)

學東西都是要興趣驅動的, 樓豬看你天資聰慧,擼起來。

1:掌握一門精通的語言:

C/C++ 、Java、 Scala(Scala大法好!)、node.js、python 等等等 最起碼精通一門,包括語言的實現,API的實現,內置一些演算法的原理、語言的特性、語言的暗坑 。

2:能夠精通以下一門內容的原理,並能實踐,熟悉其他內容:

數據結構、演算法、數學建模、計算機網路、資料庫原理、操作系統原理、計算機硬體原理、嵌入式系統、計算機圖形學,設計模式,編譯原理,unixlinux系統,分散式原理(老衲專攻這方向)。研究生內容就太多了:神經網路,人工智慧,網格計算,3D等等等

3:研讀過至少一到兩種開源軟體的代碼和原理:

這個要看你自己的興趣來的 Github 上面開源軟體多得很。 例如JAVA的 那些開源的中間件 簡單的:mybatis ,hibernate,HTTPclient 稍微複雜點的:MQ,定時調度,memcache. 複雜的:搜索引擎,HDFS, Netty,akka, spark,strom ,hotspot

4:熟悉整體軟體工程的流程:

什麼產品經理,數據開發,運營,前台開發,運維,hr,Branding。先看看他們都是幹啥的

5:做一個開源項目的commitor:

找一個喜歡玩的開源項目,沒事提交點代碼

6:看看互聯網公司都在搞什麼:

什麼docker,雲服務,分散式,架構改造的。。自己慢慢看就懂了

7:好好學習,別掛科:

這個是真的。

8:多看書:

9: 要有碼農范:

HHKB 不能少, 最起碼也是filco 聖手 minila

Mac book pro 13 必需品,不是為了裝逼, 是為了unix系統 和terminal 最起碼 不藍屏。。

翻牆設備必須要有

隨身攜帶U盤 內置100+PDF書籍

紅牛在手,天下我有

10: 找個女朋友

為了你的右手著想。現在不找以後就只剩右手了

11:


我本科是是軟體工程,現在讀研,我就說說自己本科關於學習的遺憾吧。第一,沒有學好數據結構,沒有多在leetcode上刷題。要知道,演算法對一個程序員是非常重要的,平時多在leetcode或是九度oj上刷題,基礎差就從最簡單的題開始。第二,沒有多敲代碼。每天敲代碼不能斷,要培養手感,沒事的時候不要上網玩遊戲,可以自己給自己出題,比如用C語言實現一個優先順序隊列,或實現十進位到任意進位的轉換等等,記得把這些代碼都保存下來,將來回憶也算是青春啊(?乛?乛?)。第三,關於學Java。入門Java就把課本例子自己都實現出來,如果想在Java上進階的話,可以用eclipse的查看JDK源碼功能,具體方法自己Google。看看Java自帶的ArrayList,LinkedList,HashMap這些數據結構都是怎麼實現的,更重要的是學習人家的代碼風格。說起閱讀源碼,可以看看netty,spring源碼,當然前提是有一定Java基礎。第四,大一大二學習一下html,JavaScript這些前端語言,一是簡單易學(JavaScript水很深,但是入門很簡單),二是我現在感覺程序員總要懂點前端才行。說到第幾了,忘了,最後一點吧,無論寫什麼語言,一定要給自己配一個最好用的IDE,IDE真的影響寫代碼的心情!我個人是很不理解用vim寫代碼的,可能大神的世界我不懂吧,我現在寫Java用eclipse,寫C用dev c++,寫Python用pycharm,寫前端用webstorm。還有最後一點,就是,後悔自己本科沒有用Linux系統,你可以裝個Ubuntu用一下,學習一下Linux命令行。我感覺作為程序員早晚都要接觸Linux。


作為一個剛畢業的計算機系學生,強答一下。

主要還是看你以後的選擇,就是說你畢業後想走的路。

1.如果想保研的話,前提條件是學習成績要好,在成績能保證的情況下,多參加一些競賽。什麼英語競賽、數學建模、ACM、以及各種計算機相關類型的比賽,這些比賽拿到獎都是保研的加分項。還有專利、核心期刊的論文,保研都能加分。最好去問問導員和保研的研究生師兄們,看看你們學校能參加哪些競賽,哪些獎項可以加分。以及有多少保外校名額,畢竟讀個研究生都想去個比本科好的學校。如果妥妥的能保研的話,想好自己以後想研究什麼方向,最好提前就開始準備,這樣找外校研究這個方向的導師的時候有很大優勢。如果你是清北的話...當我沒說。

2.如果想出國,英語是必須學好的。其實作為一個程序員,不論出國與否,英語是必須要好的,以後免不了要去讀英文文檔。看你想去哪個大學,去學校主頁查查,看看如何才夠資格申請。這個沒實際操作過,沒什麼經驗,歡迎各位留學國外的大神們指正。

3.如果想畢業就直接工作,就需要鍛煉編程能力了。其實說實話也有也有兩條路可走:第一是練內功,計算機專業課要學好,數據結構,操作系統,計算機網路,演算法,這些都是以後的基礎。ACM搞起來,多刷刷演算法題,沒事做兩個小程序練手。這種是畢業後想應聘大公司(比如BAT)的發展方向,也是多數知乎大神的經歷。第二就是練外功,速成。看看你們學校有沒有什麼工作室,或者是老師帶隊的的科研小組什麼的,想辦法加進去,做項目!不要覺得很難,直接去找負責的老師問如何能加進去。如果你很想在這方面好好努力的話,老師會願意指導你的,因為如果你能進去他的小組,也是為他幹活的。有用的專業課好好聽聽,沒什麼用的課能過就行。每天跟著老師做項目,做的項目也一定要是能實際應用的企業級項目,不要做那種玩具式的小東西。這樣你畢業時就會有兩到三年的項目經驗,這在本科生中有巨大的優勢。畢業了去中小公司,憑藉你的技術和項目經驗很快就能提升到項目經理級別,然後在幾年時間內速度向上層發展,脫離碼農隊伍。我的很多師兄走的這條路,發展最好的畢業了就是項目經理,兩年就升了技術副總了。不過這條路回報高,風險也高。萬一你在中小公司混了N年也沒上去,那你一沒學歷,二沒理論基礎,三沒大公司工作經驗,基本就game over了。

其實還有一條路,就是進體制。各種央企,銀行,公務員,對於計算機專業的同學們需求還是不少的。不過看你這麼熱愛編程,估計不會走這條路了*^_^*

PS:不管你選擇走哪條路,一定不要掛科重修,重修真是會噁心死你,別問我怎麼知道的


寫個項目和小應用程序並不是很牛,你自己啃兩天網站文章都能做出來,你學的演算法在他們這些應用里也用得不多。但這絕對是個好的基礎,儘管現在還沒有用到。

如果你不是一頂一的牛人(就是BAT來搶你,讓你去當大牛;各個名校和研究所來搶你保研那種),最實際的是,學好一個自己感興趣的方向,多了解這方面的信息,多做做這方面的開發實現,起碼對一些方面了解之後,有點見解,這樣起碼可以給面試官一個小亮點。然後用這個亮點先找一份工作。基不然找工作被動,以後的發展都只能看人品了。畢業生第一份工作真的很重要。


任何時候,好好學習,不要驕傲自滿,也不要妄自菲薄。

學校的課,必須跟著好好學。所謂「好好學」,不是說跟著老師走就OK。對於基礎課,如高數線代概率論等,即便不考研,也不能一問三不知,起碼要知道什麼類型的問題可以用什麼方法解決,學好數學受益終身。對於專業課,如數據結構、操作系統、組成原理等,一定要做到反覆研讀。像數據結構,每一個數據結構都可以自己動手實現一下,不必急於求成,但求理解到位;對於操作系統,也要好好讀書,(面試官特別愛問「進程和線程的區別」,而且專指類Unix系統);至於組成原理,原反補移加減乘除是個坑,別的看看就好,好像這方面面試不太會涉及。

對於項目,我想說與你意欲發展方向無關的不要接。項目的確能鍛煉動手能力,但是比如你喜歡做計算機底層,卻接了一大堆前端微信安卓什麼的項目,只會浪費你的時間。我不是說涉獵廣不好,涉獵廣當然好,但是做項目是很耗精力的,花費大量精力在與你發展方向無關的事情上,是浪費生命。既然是涉獵,也就沒必要深入了解(你看Linux kernel和Apache官網頁面多簡單粗暴啊哈哈哈),略知一二即可。

如果你想向前端、後台(我指應用層,如PHP、Java EE等)、移動開發等方面發展,可以多做項目,對於以後簡歷、面試都有幫助。這些方向有個共同的特點,即見效快,容易讓你產生「很簡單」、「好low」的錯覺。但是事實並非如此。不停地學習,才會發現HTML 5和CSS 3原來如此強大,JavaScript原來還能這樣寫,網站根目錄下一堆PHP文件的都是垃圾(小網站也就罷了,但凡有點兒規模的維護起來保准吐血)……

如果你想向系統底層、機器學習、圖像識別等領域發展,一般接項目就行不通了,因為幾乎沒有人把這些東西交給什麼也不會的本科生做。你只能好好讀書、讀好書(機械工業/人民郵電出版的厚得一比的那種),然後找機會混進學校某個實驗室抱學長大腿,說不定還能發篇IEEE哈哈哈哈。

再說說我覺得大一下開始該做的事吧。

如果想讀研,成績又在保研範圍內,請繼續保持,然後勻出一定時間讀你研究生想研究的方向的書、動手實踐一些基礎程序,可以的話去相關實驗室抱一抱腿。大三下,就可以開始聯繫導師了,一定要提前打聽清楚,包括導師的研究方向、成果、是不是真的在研究(而非天天接項目賺錢)以及為人。精通一門語言,推薦C/C++,在意性能的領域這兩個尤其是前者應該是必會的。

如果是考研黨,請務必安排好自己的時間。數學英語複習宜早不宜遲(當然大一還是早了點,大三下開始也不遲),還有就是堅強的意志和強大的自控力,找個研友最好。相比工作黨和保研黨,你將會在大三迎來巨大的心理壓力,承受住,然後好好複習。

如果是工作黨,鑽研你想從事的工作方向就好了。企業更看重你的能力,這能力不單單在於你能完成任務,更在於你基礎紮實,熟悉業務相關的方方面面。

暫時只想到這些,相關經驗來自一個比你高兩級的軟工狗的血淚史。


瀉藥。如果大一下開始準備,並不能說早,但是也並不遲。首先明確自己興趣點在哪裡,到底是前端,後台,客戶端還是基礎研究,演算法方面,確定自己未來努力的方向。其次,書籍推薦英文原版,國內很多書翻譯質量太差,根本讀不下去,而且讀的久了,英文閱讀水平肯定會有相應提高。然後可以關注一些業內的相關新聞,了解行內動態,看你對最新動態的掌握程度就能看出你對這一領域關注度。嘗試使用最新的方法解決問題,不要被時代淘汰。自己學習過程中注意積累,可以整理成博客的形式,這在未來也是你的一份寶貴財富。另外,多瀏覽一些開源社區,star一些高星項目,去看看別人的代碼,提高自己代碼質量,避免閉門造車,重複造輪子。對設計模式和重構有一定了解,優化自己的代碼結構。手機碼字,基本想說的就這麼多吧,如果想起來再補充。如果你做到了這麼多,你已經超過了BAT中大部分人。你才大一,加油努力


計算機科學與技術,,,學校教的都是計算機科學,,技術自學


哎, 非985,身邊很多都是專業課都是混的,說一件不好意思的事情,自從給室友介紹了github,我們寢室課後實驗,課程設計,分數都比別寢室高很多。

還有個加點,某寶有幾家盜版的書屋很便宜我經常買;

另一個還是某寶十幾塊的傳智視頻不知道算不算(感覺受這個影響很大)入門了,大二時候經常買。

反正就是純自學,可能腦容量太少了,組成原理,編譯原理,這類的學的迷迷糊糊的,周圍的人也是這樣。我是不想考研。


我是大三學生…說一下自己的經歷吧。專業是計算機科學與技術,上大學之前未接觸過編程。上了三年,學校大一下講了一門C艹,大二講可視化介紹了C#,大三講了點Java,大四沒課實習。

如果可以重來,我一定選擇在學會任何語言常用部分的80%後,上手做項目或者實戰。

另外一點教訓就是沒事多開闊眼界,接觸下新東西。當時聽別人說寫網頁的那麼低端,不能搞,然而現在可能要靠著網頁吃飯…技術無高低,說不定你就適合web開發,總之多接觸新技術是沒錯的。


技術全自學正解。。


同軟體工程。。已畢業。

具體要看題主未來的規劃是什麼了。建議學好一些基礎課,列如數據結構,線性代數,操作系統。以後不管是做程序員還是考研都用得到。

語言類的專業課有興趣就深入一下,沒興趣就聽聽課就行了。


推薦閱讀:

南陽理工學院軟體工程學院怎麼樣?
知乎能不能做一個開源項目來提高我國計算機科學水平?
計算機專業學生在大學四年內可以做些什麼來豐富簡歷?
去中大華工直接讀計科,還是去北航降級轉專業再讀計科or軟工?
軟體工程很難學么?

TAG:程序員 | 編程 | 大學 | 軟體工程 | 軟體工程專業 |