-
1 # 夏海成南
-
2 # 世界第一噴子S686
我不見得是適合回答這個問題的,畢竟我在行業混的算是比較差的那種的。說一些個人看法,僅供參考:
首先還是先至少啃掉一本語言書,把這本語言書的大習題至少都給做了。語言是軟體開發的基礎工具,也許整個一路走來會需要學習數門語言,但是至少先把一門啃下來,知道大概齊是個怎麼回事。對於現在來說,學完後同時最好花點時間做做回撥、多執行緒這些概念的示例,因為現在這些基本已經是偏基礎的了。初學的語言怎麼都合適,反正語言本身語法除非那幾個掉書袋的,否則差距並不是特別大。
然後就是,在學語言的同時找個大目標,個人感覺目前的軟體業已經是分工非常明確的體系了,一個搞遊戲開發的程式,去做網站後臺並不是不能做,但卻要重新學習很多東西。一個行業需要學習的一堆SDK,和另一個行業需要去學習的SDK可能會毫無交集,重新學習的代價比較大,特別是在你已經工作,有生活壓力之後。軟體根本上還是驅動硬體借之以完成國民生產生活中的目標。所以建議找一個自己感興趣的,可以持之以恆做下去的目標,當然這個目標行業未來如果還處在上升期那就更好啦。有興趣驅動,就不至於喪失動力,然後不斷給自己出題,不斷解題,一點點產品去迭代,爭取在這個領域做到前列。
還有就是去網上找找這個領域開發的初級入門資料和論壇,比如你要寫作業系統,網上多少會有這方面的討論組,最好裡面有一堆從業者的,進去看看,問問他們,或者看看他們已經發的文章和資料。先找些例子做,從小到大,慢慢到工程。軟體工程提升沒有別的法門,只有學別人的程式碼和做自己的程式碼,做的過程中發現問題解決問題,解決的越多越有手感。然後做過一段時間再去看軟工的那些書,什麼設計模式的才會有感覺。
然後就是學別人的開原始碼,如果你開始做了應該能意識到這會是個繞不開的事情。如果發現自己單看別人的開原始碼沒感覺,或者記不深的話,建議手抄一次。對於較大的開源庫,手抄自己目前關注部分就可以。抄的過程中往往能觸類旁通,提升會比較快。
最後就是同時最好兼顧基礎和其它各領域吧,我上學的時候學校教的各種體系結構啊、硬體基礎啊、網路基礎、資料庫基礎什麼的,其實都沒好好聽,都在混日子。好在為了考試,著實是把這些書本理論都好好通讀了一遍。後來工作了才發現,這些東西關鍵時刻還是蠻重要的。現實中的問題往往是跨領域跨學科的,遇到問題至少知道大概是在哪個體系中去尋找資料才能解決問題。就算教材再垃圾,好歹也是一種總結,當總論看,後續需要的時候再買這個領域的高精尖的書集中推就好啦。
無論如何,你到任何一個行業,最終都會面臨的是激烈的競爭,不斷在討論組和群中學習別人、審視自己的成長、並且客觀看待自己行業本身的前景以避免被與行業整體一同淘汰,這些都是逐步可能要去考慮的問題。當然根本還是做了,軟體工程所有東西都是不實踐理解不深的。
回覆列表
個人覺得你得先明確你真的要學習軟體開發嗎?是作為興趣還是長期職業方向?想要做什麼東西?如果你描述清楚點,想要幫助你的人也回答高效準確點。因為軟體開發這個算是一個大方向,但是一個人其實只會深耕其中的幾個小方向的。有前端後端,安卓,ios小程式。還有不同的程式語言c,c++,java,python,js...就像你說教練我想打球!得讓我知道你想打籃球還是踢足球,還是排球羽毛球