精益創(chuàng)業(yè)中推崇的是最小可行產(chǎn)品MVP(minimum viable product), 找到痛點十办,計算出最簡原型秀撇,轉(zhuǎn)為最小可行產(chǎn)品,在用戶的反饋下不斷做迭代向族。在產(chǎn)品從0到1的階段呵燕,'最小可行產(chǎn)品'MVP非常實用。
在我們學(xué)習(xí)新知識時也一樣件相,從0到1應(yīng)以'學(xué)以致用'為主再扭。將我們的最終目標(biāo)簡化到讓它能夠跑起來的配置,再用最快的速度搞定這些配置讓它跑起來夜矗,之后再折騰什么也有個依托泛范,這樣就不致于變成孤立的知識點,轉(zhuǎn)身就忘掉紊撕。
單純的語言本身學(xué)習(xí)起來不難罢荡,主要是語法,函數(shù)对扶,作用域区赵。要掌握它們,一個月足夠了浪南。
對小白來說笼才,對于新知識體系是沒有感知的,只覺得最全最詳細(xì)的最好逞泄。但真正去學(xué)的時候患整,大而全的體系會讓人找不著北孵运。一個個新知識蜂擁而上贰锁,消化不掉很容易放棄奋救。
假如我們還是按填鴨式教育那樣學(xué)習(xí)。買一本從入門到'精通'的書到千,從第一章順序往下看。很有可能學(xué)到一半就放棄赴穗。就像是在用大石頭畫一幅巨圖憔四,在下面堆石頭的人不知道現(xiàn)在畫到什么程度了,一開始推石頭還挺輕松般眉,堆多了之后就不行了了赵。
一門從入門到'精通'書籍,描述的是一個最終態(tài)甸赃。必需每一章都頂配柿汛,才能構(gòu)建出這個最終態(tài)。而'最小可行系統(tǒng)'只要求最簡配置就能跑起來埠对,得到一些正反饋后再去強化升級络断。如果跟著書一章章學(xué)習(xí)裁替,驗證和反饋機制太漫長,學(xué)習(xí)效率就慢下來了貌笨。
'最小可行體系'是為了掌握某個新知識所需要的最簡環(huán)境弱判。每款游戲都有最小配置要求,你要做的就是配好最簡環(huán)境锥惋,讓你的知識先跑起來昌腰。只要它跑起來,慣性使它短時間不會停下來膀跌,然后再慢慢添加配置剥哑,最終達(dá)到穩(wěn)定。
如何找到'最小可行體系'淹父?
- 學(xué)習(xí)這個知識體系的目標(biāo)是什么株婴?
- 最短時間內(nèi)到達(dá)目標(biāo)需要那些知識點?
- 排好優(yōu)先級
- 專注暑认,一次只學(xué)一個知識點
舉個例子:
打算學(xué)PHP困介,目標(biāo)是做一套系統(tǒng),提供API給移動端使用蘸际。
隨便找本從入門到精通的PHP書座哩,你會看到這樣的學(xué)習(xí)路線
如果按步就班的去學(xué),那學(xué)習(xí)周期會非常長粮彤,如果還是業(yè)余學(xué)習(xí)根穷,很容易就擱置了。
我們得篩選出最最簡配置导坟,PHP基礎(chǔ)語法得學(xué)屿良,最基本的數(shù)據(jù)結(jié)構(gòu)以及函數(shù)。目標(biāo)是為了提供API給移動端惫周,可以暫時不用提供web端尘惧,前端內(nèi)容都pass掉。數(shù)據(jù)庫可以暫時優(yōu)先級放低递递,先能讓移動端調(diào)用到API喷橙,靜態(tài)假數(shù)據(jù)都足夠用了。再來就是部署到服務(wù)器登舞,不用管分布式贰逾,也不用加cache,買個帶PHP環(huán)境的vps菠秒,直接ssh部署就好了疙剑。
最最簡配置(含優(yōu)先級):語法,靜態(tài)API,部署核芽,RESTful API囚戚,數(shù)據(jù)庫,權(quán)限
這是最核心內(nèi)容轧简,只要這些配置跑起來了驰坊,接下來就是不斷往里面添加配置或者豐富配置。(怎么豐富我們在后續(xù)的文章中詳細(xì)描述)
再看打算學(xué)Android哮独,目標(biāo)是以此找份工作拳芙。
看,Android知識體系皮璧,東西不少對吧舟扎。假如一個個學(xué)過來,容易懵逼悴务,整個UI component就得花一個月時間來學(xué)睹限。反饋的太慢,越學(xué)越?jīng)]有信心讯檐。
換個最簡配:環(huán)境搭建羡疗,最小可行app(列表頁,詳情頁别洪,設(shè)置頁)叨恨,網(wǎng)絡(luò),緩存挖垛,權(quán)限
事實上痒钝,如果已經(jīng)熟練掌握一門語言,其他語言的部分知識體系是重復(fù)的痢毒。例如網(wǎng)絡(luò)送矩,緩存,線程闸准,權(quán)限設(shè)計等益愈。無非是那些語言wrapper出來的API不一樣罷了。
這樣一周就能完成'最小可行體系'夷家,體驗過后才能知道自己是否喜歡這個語言,是否想要深入下去敏释。
其實我們學(xué)習(xí)時也是一個個'最小'知識節(jié)點库快,但它們是零散的,無法交織成體系钥顽。'可行體系'不是孤立知識點的堆積义屏,而是對它們結(jié)構(gòu)性的整合和組織。
從0到1的階段,別盲目的聽別人的建議闽铐,容易困惑蝶怔。比如:
"java有什么好學(xué)的,PHP才是最好的語言兄墅。"
"Android要學(xué)的東西太多了踢星。插件化,Material Design隙咸,Retrofit沐悦,Rxjava,lambda五督,gradle藏否,ndk。還是學(xué)iOS吧充包,iOS簡單"
"現(xiàn)在都不興OC了副签,學(xué)swift吧"
假如你對什么語言感興趣,設(shè)想一個'最小可行產(chǎn)品'場景基矮,把需要的內(nèi)容列出來继薛,轉(zhuǎn)換成需要的用到的知識點,碰到不會的再針對性的問google愈捅,問大神遏考。Stay通過這個方法,陸續(xù)入門了OC Swift Ruby PHP Python蓝谨。離全干工程師還有一個JS的距離灌具。
學(xué)以致用,從0到1譬巫,相信你一定可以咖楣。
但有了'最小可行體系'還遠(yuǎn)遠(yuǎn)不夠,這只是快速評估該語言是否適合你的開始芦昔。如果你還想讓這個小體系變成一張知識結(jié)構(gòu)網(wǎng)诱贿,就需要不斷地圍繞著它做優(yōu)化,直到它能夠成為你技術(shù)變現(xiàn)的一個出口咕缎。
如何優(yōu)化珠十,如何深入學(xué)習(xí),如何將語言輸出變現(xiàn)凭豪?這些大家怎么看呢焙蹭?不妨討論下吧。
本文為開篇嫂伞,Stay會陸續(xù)出一個系列來展開自己的觀點孔厉。希望和大家一起交流拯钻,尋找最佳算法。
?推薦閱讀:
還需要再學(xué)習(xí)一門語言嗎撰豺?
還在用應(yīng)試教育那一套學(xué)編程粪般?
程序員在'抽象化的OOP世界'里該如何發(fā)展?