如何在工作之餘自學軟體開發?

本人目前有一份比較安逸的工作,過著朝九晚五的生活,平時時間比較充裕,希望用兩年半的時間自學軟體開發,真誠請教如何自學軟體開發?


二年半也太慢了吧?容易消磨興趣,軟體開發其實有一定的興趣驅動性,集中學,會有衝動不斷學下去(學生時代我經常熬夜寫代碼)。

話說真要是兩年內半的時間學軟體開發,以web開發為例,兩年半的時間可以學好web,還可以把計算機體系性的知識學一遍了。


15天精通PHP, 20天精通JavaScript


不建議在剛入門時期,選擇慢慢學的態度去學, 時間和困難會消磨掉人的所有熱情。

別看兩年時間很長,可是如果你抱著 業餘時間的學學的態度的話,這件事已經失敗了一大半。

如果執意如此, 那還需確定自己的學習計劃,譬如 我認為學習的 頭幾個月 ,至少要保證每天6小時的學習時間,不間斷。 哪怕是佔用你睡覺的時間。


半年前,先是看製做遊戲的視頻教程

語言用的是c#,當時是迷迷糊糊的看懂意思但不懂具體步驟

後來轉學UWP應用,也是一點也不懂,一開始只是看著視頻跟著節奏,看了幾十集視頻頻繁搜索文檔後來不會c#也被硬是帶起來了

明白了基礎,就去看語言的視頻教程

(@清華大學劉鐵猛的30級c#教程)

剛離開了舒適區,一開始還是迷迷糊糊的

30集一邊百度一邊看

後來在語言方面真的開竅了,深深為編程語言縝密的邏輯性和開放的擴展性所啟發,才有膽量去找書看,才有資格不至於因為難度過高而放棄,不至於難度太低離不開舒適區

看書無法就是,學到末了,查漏補缺而已。

要是一開始就看書估計就難度太高半途而廢了。


我就是工作之餘自學開發,並靠技術賺到了人生第一桶金。

大學畢業那年,我立了一個在30歲前賺到第一個100萬的理想。畢竟對年輕人來說,未來的可能性是無限的,雖然完全不知道這100萬究竟該從何而來。

我的第一份工作是銷售,做得不好,沒有業績合同到期公司不再續約。第二份工作是網站編輯,那時候玩命兒的幹活,老闆很器重我,不過工資從3000漲到5000之後也就沒再動過了。

這年我27,畢業時的理想早就忘了,當時的目標是公司賺錢後能給我分紅。

當時因為一個活動,要做個專題頁。我跟老闆說讓我試試,然後抱著《HeadFirst HTML CSS ed 2》看了一周,做了一個靜態頁面,結果還不錯。

做完這個專題頁後我就打算繼續學習網路編程,當時考慮是繼續學 JavaScript 還是 PHP。後來選了 PHP。但是可惜,到我離職時那本《HeadFirst PHP》也沒看完,到現在都沒撿起來。

我下一份工作就是朝九晚五的,最大的優勢就是充足的業餘時間。因為工作需要我負責建設公司官網,選了 WordPress,然後找外包做定製。

外包主要做插件實現後台功能。頁面溝通過幾次結果都不理想,我就準備自己來了。網上看了幾篇 WordPress 主題的教程,熬了兩個通宵做出來了。

因為我會 HTML,一個簡單的主題里 PHP 的部分就是文章循環,我照著官方主題的代碼,對照著文檔一句句看,搞明白每個函數和參數的作用,就這麼寫完整個主題。

在這個過程中我學會了查看文檔。會看文檔就具備了自學的第一個要求。後來我試著去給 WordPress 寫插件,就是通過看文檔學會的(不過僅限官方提供的函數,PHP 還是沒掌握)。

在寫主題時為了追求效果,我開始學 JavaScript。還是從《HeadFirst JavaScript》開始。開始寫幻燈,導航,標籤頁切換等功能。

其實在這個過程中,沒有人給我定任務和提要求,公司也沒人懂技術。一開始只要有個網站能看就可以交差了。看著自己做的東西一點點成熟,那種滿足感是非常強的

因為我的本職工作不是程序員,所以這些事都是在業餘時間完成的。幾乎每個工作日的下班後,和每個休息日,包括春節(跟家裡說要去旅遊過年不回家),我都在家寫碼(反正沒有女朋友)。這是我想到的自學的第二個條件,自我驅動

後來我知道了 Node.js,React,Webpack…原來 JavaScript 的世界這麼大。我就設計了一些可以幫助公司業務的產品,然後開始邊學邊做。做出來的產品就用在公司業務上,很有成就感。

這可能是自學的第三個條件:做有實際用途的東西。我所有的自學過程都是直接邊學邊做實際產品的,很少有單純為學習而做一個 DEMO。做 DEMO 沒有那種成就感。而且照著教程做 DEMO 往往就是把代碼照抄一遍,自己上手還是抓瞎。

這個過程中我學會了自學必要的幾個工具:Google、StackOverflow、GitHub

在寫代碼的過程中我一直有一個困惑,不知道自己寫的方式到底對不對。然後就開始研究各種「最佳實踐」,知道了設計模式、編碼規範,知道了軟體工程化,知道了單元測試,知道了持續交付等等。

每知道一個概念,我都身體力行地應用在自己的工作中。雖然只有一個人,沒人檢查,也沒有公開項目,我也會按照規範的 Git 工作流寫碼和提交,做好各種測試,加了各種自動檢查工具(GitHub 的私人項目也加了各種 Badge)。一旦發現有更好的代碼模式就進行重構。

最後我去了解了一下計算機專業的課程設置,開始學習數據結構和演算法。最近對機器學習和智能硬體很有興趣。

我認為這是好的自學者應有的習慣:做一個對自己有要求的人,永遠追求更好的代碼和工作方式

以上就是我利用業餘時間學習開發的過程。現在我認為自己還不是一個好的程序員。我經常為如何抽象函數而苦惱,經常寫到一半發現設計失誤不得不推倒重來,至今也沒熟練掌握設計模式…而且年紀不小了,估計一輩子也無法以編程為職業。不過我會一直寫下去,因為編程使我快樂。

而且編程讓我實現了自己遺忘已久的年輕時的理想。


編程已經是一個滲透到日常的技能了。不需要業餘,從朝九晚五的工作里找一些可以用程序提高效率的內容,帶著目標去學習,不僅有趣而且高效。


如何在工作之餘自學軟體開發?本人目前有一份比較安逸的工作,過著朝九晚五的生活,平時時間比較充裕,希望用兩年半的時間自學軟體開發,真誠請教如何自學軟體開發?

時間比較充裕,如果你自己自控能力不錯,可以看一些創客學院在線視頻,系統性的學習,不過自己要確立好方向,自己給自己的時間是兩年半,我覺得你可以縮短一些時間,可以看看自己適合哪些方向 是走web全棧(不需要那麼久,市場行情越來越差,有能力者不怕,入門簡單),安卓開發(市場行情比較好,入門難,首學Java),如果自己給自己一個周期比較長的話,那就選定一個方向,踏實努力學習下去, 這樣相對也是有了一個方向,373繼續465連上602,這樣多跟學習的人一起交流下,也有學習的氛圍,可以在學習的過程中遇到什麼困難,能夠及時解決,不至於打消積極性。


搞幾本好書。。書的質量比博客高太多了,而且也比較容易形成體系。。


這學起來說不上難,但是很難受,感覺到蛋疼,最主要數學不好沒什麼發展,抽象思維不好根本沒得玩,絕對是門哲學,蛋疼……


一定要做立竿見影的學習。

比方說,學前端,你就得htmlcss邊學邊做,敲幾句跑起來,咦畫了個方塊,哦出現了幾個字,不錯不錯,今天能畫幾個五顏六色的方塊了,這禮拜就能仿出個像模像樣的百度首頁來,這個月估計個人博客就在路上了。

如果你要是一上來就nodevue啥的,相信你堅持不過3天。

總而言之,要能迅速看到自己的成果,這才能保持你繼續學習的熱情。


你知不知道很多做軟體開發的都在工作之餘自學其他的


然而並不建議把戰線拉這麼長,就像樓上所說,不管你多有熱情,時間都能消磨掉你的意志。

長期只練習而沒有實際項目做對個人提升幾乎為0,逐漸你會發現,自己會的永遠是那麼點東西,甚至可能一本書永遠只翻到過前幾章,這時候無力感會把你打趴下。

兩條路:

1、辭掉工作,搞半年的填鴨式自習,類似於培訓機構的套路,足夠努力半年也能找到工作了;

2、考個軟體工程、計科之類的研,跟著導師混三年,平時做項目積極主動點,也就自然而然水到渠成。

推薦後者,畢竟前者底子太薄弱,一旦工作了忙起來,根本沒時間提升自我;而讀研的話可以說如果導師不當牲口似的使喚你,那你就有大把的時間提升自我,而且搞軟體開發最最最鮮明的一個特點就是:一旦入坑,你會發現自己攫取、吸收知識的能力每天都在以肉眼可見的速度增長,一個工作了三年但是底子薄弱的coder,和一個三年研究僧時光除了做項目就是在不斷吸收知識的coder,不可同日而語。

總而言之,一個空間換時間,一個時間換空間。


建議以項目為導向學習,否則怕是難以堅持

剛開始的時候直接買一本評價還算不錯的入門書照著擼一遍,擼完你肯定還是一臉懵逼,不過不要緊,照葫蘆畫瓢做自己想要的,不懂就去查(翻書/Google),看見好實現的就去抄;

做過幾個demo之後再開始看書,這時候看書效率和接受率要高很多;

英語非常重要。


先把 head first java 看了,我女朋友說這個書對新手很友好,然後再把 leetcode 的 easy 到 medium 的 題目刷了,http://leetcode.com 這些都是可以利用你的碎片化時間或者你有整片的時間更好來學習的....然後你發現學習一般的技術都很快...哦....其實要學的還蠻多的....這樣的話至少編程本身能入個門


我來強答一發,我不知道題主的朝九晚五的生活為何感覺時間還很充裕。。至少我覺得時間太不夠了,早上起床就上班,五點半回家後六點,吃了飯也許七點八點,也就是說給我的空閑時間就只有最多三四個小時。晚上最晚12點睡覺,不然第二天真的起不來。

有點偏題,但是給有工作的人學習的時間是真的不多。每天最多兩個小時學習時間足夠了。

其次我建議的學習方式是買書或者看網上的文字版教程,跟著多敲。不要看視頻。原因就是視頻教程普遍拖沓,同樣的時間你看書和看教程學習效率完全不是一個檔次,當然還有一個每個人的對知識的吸收效率的問題,有的人就是看文字看不進去,這樣也沒辦法。看書或者看文字版還有個好處就是可以在公司看,完全無壓力有沒有。

我目前在一邊上班一邊自學安卓開發,和各位苦逼的上班族共勉。


軟體開發的範圍很廣的,有Web開發,客戶端開發,嵌入式,大數據,人工智慧等等。

你現在首先要做的是找到自己感興趣的方向,然後就確認這個方向需要什麼技能和語言。我覺得比較好的學習方法是:買兩本書,一本是學習這個語言的入門書,另一本是介紹你感興趣的方向的書。之後就是邊學習邊擼代碼了。當書上的介紹你不是特別理解的時候,可以上網查找一些優秀的博客作為補充資料。雖然我也寫博客,但是博客(視頻)只能算是一個很小的補充,書才能幫助你建立起知識體系。這個學習過程最多只會花費你3個月的時間。學習完後你就算是入門了,這個時候可以找一些工資不高的初級/實習職位來嘗試寫項目。不找也沒關係,但是你現在必須找到能讓自己一直擼代碼的項目。

入門後就看你怎麼精通了,剩下的2年時間足夠讓你把你喜歡的方向和語言技能提高到熟練的程度(很多高級/資深工程師都不敢說自己精通某一門語言和方向)。到你覺得提升變得緩慢的時候就需要學習數據結構和演算法、學習計算機組成原理和操作系統等知識了。

這樣通過前期寫簡單的代碼,能夠給你一個正向的反饋(學習初期看到自己的代碼能夠運行起來你會感到很興奮的),從而培養自己的興趣。這樣你才能堅持下去,如果一上來就學習基礎知識的話,那麼很快你就會放棄的。

最後:學習一項技能只需要3個月的時間,掌握一項技能只需要一年時間,熟練一項技能只需要3年時間,5年時間足夠你精通一項技能。

堅持下去,3年後再來看看你的這個問題,再來看看我這個答案。


1.看視頻

2.看博客

3.敲代碼

雖然說這麼多,你可能也感覺無從下手,首先你要確定方向,學習什麼語言,然後制定計劃。

比如,我要學習安卓(要有java基礎),1.學基礎控制項,學四大組建,學存儲方式,網路編程,消息機制。動畫,多媒體,第三方框架,自定義控制項,屏幕適配,事件分發機制,設計模式,軟體架構,性能優化………

這些理解的百分之八十應該可以找到個工作。


推薦閱讀:

iOS 的應用審核有多嚴格?
在蘋果 Cocoa/iOS 編程下,有沒有類似《Debuggin Applications》或《Windows 高級調試》的書呢?
iOS 7 的「向右滑動返回」,是否代表著蘋果在準備大屏手機?
如何用Mac為Android手機刷機?
PC 遊戲開發轉手機遊戲需要做哪些工作?

TAG:Web開發 | 軟體 | 軟體開發 | iOS開發 | Android開發 |