很多人問我如果原來不是學(xué)計算機(jī)專業(yè)叹括,想轉(zhuǎn)行做計算機(jī)軟件工程師,是否可以通過自學(xué)完成宵荒?這件事其實(shí)是可以做到的汁雷,不過大約需要一年左右的時間學(xué)習(xí)和一年左右的時間練習(xí)净嘀。具體的做法是這樣的。
首先我們要倒著理解成為一個合格的計算機(jī)工程師需要什么樣的知識體系侠讯。
既然是計算機(jī)工程師挖藏,一定要會寫程序,這點(diǎn)大家恐怕都同意厢漩。但是大部分人即使能寫一些程序膜眠,比如給你的單位算算賬,處理一些業(yè)務(wù)的日志袁翁,或者設(shè)計一個控制家庭IoT的程序柴底,卻寫不了幾萬行的大程序,比如在給你算法后寫一個能夠工作的人臉識別程序粱胜,因?yàn)檫@涉及的方方面面太多柄驻,光會寫程序的人hold不住。
要想做到這一點(diǎn)焙压,就需要理解搭建計算機(jī)軟件的那些模塊——數(shù)據(jù)結(jié)構(gòu)和算法了鸿脓。你可以把數(shù)據(jù)結(jié)構(gòu)理解為蓋房子的鋼筋、門窗和大梁涯曲,把算法理解成蓋房子的結(jié)構(gòu)原理野哭。沒有這些,你從沙石出發(fā)幻件,很難蓋成一個大廈拨黔。
但是如果你善于利用已有的組建,懂得蓋房子的原理绰沥,就可以很快設(shè)計出蓋房子的流程篱蝇,并且用半成品蓋一個房子。于是徽曲,會寫程序后零截,就需要了解數(shù)據(jù)結(jié)構(gòu)和算法了。這就有些系統(tǒng)性了秃臣。
不過涧衙,即便人在設(shè)計軟件時可以不受資源的限制,但是世界上任何一臺真實(shí)的計算機(jī)的資源都是有限的奥此。
因此再接下來弧哎,如果你想寫一個效率較高的程序,問題又來了得院,你需要了解計算機(jī)能給你提供多少資源傻铣,你的程序在計算機(jī)系統(tǒng)結(jié)構(gòu)這個框架內(nèi),應(yīng)該怎么優(yōu)化祥绞。
于是你就需要學(xué)習(xí)兩門課——計算機(jī)的原理非洲,以及計算機(jī)的系統(tǒng)結(jié)構(gòu)鸭限。這樣才能寫出一個有效的程序。如果一個人不懂得這些知識两踏,也能寫程序败京,但是寫出來的程序不夠優(yōu)化,在市場上沒有競爭力梦染。這就如同蓋房子的人不懂得做預(yù)算赡麦,蓋出的房子肯定是收不回成本。
好了帕识,現(xiàn)在你學(xué)了一肚子的知識泛粹,其實(shí)離實(shí)用還有差距,接下來怎么用好它們呢肮疗?最簡單的辦法就是看一個例子晶姊,比如理解如何用計算機(jī)識別人臉,看看別人是怎么做的伪货。于是你又需要學(xué)一門應(yīng)用類的計算機(jī)課程们衙,比如計算機(jī)視覺,學(xué)完它碱呼,你就知道計算機(jī)科學(xué)家和軟件工程師是如何將一個生活中的問題蒙挑,變成一個計算機(jī)可以解決的問題。當(dāng)然愚臀,你學(xué)習(xí)自然語言處理忆蚀、數(shù)據(jù)庫,或者計算機(jī)控制等等都沒有問題姑裂◎涯保總之要通過學(xué)習(xí)一門課,有切身的感受炭分。
這些內(nèi)容都學(xué)完了,恐怕至少要一年時間剑肯。在這中間捧毛,你需要不斷地練習(xí),這就如同教練告訴你打網(wǎng)球的技巧后让网,你不練習(xí)還是不會打一樣呀忧。至于要練習(xí)多長時間,就看個人的天賦和悟性溃睹。
如果你要想成為頂級的工程師而账,10000小時的練習(xí)恐怕是必要的。但是因篇,即使練了1萬小時泞辐,也不敢保證就能成為頂級人才笔横,這中間有很多其他的因素影響最后的結(jié)果。比如你是否能遇到一個好師父帶你咐吼,是否遇到一個合適的項(xiàng)目讓你練習(xí)吹缔,是否具有計算機(jī)思維,等等锯茄。當(dāng)然厢塘,如果成為一個合格的工程師,可能1/4的時間也就夠了肌幽,也就是2500小時晚碾,大約一年。
如果你想成為好的會計喂急、律師格嘁,方法和上面描述的也差不多。
關(guān)于系統(tǒng)性學(xué)習(xí)有四個現(xiàn)象和原則要提醒你注意:
1. 要了解知識的背景和相關(guān)性煮岁。任何一個知識點(diǎn)都需要放到更大的環(huán)境中去理解讥蔽。今天很多創(chuàng)業(yè)者和企業(yè)家非常如饑似渴地學(xué)習(xí)很多新概念,他們收看馬云画机、雷軍等人的每一次講話冶伞,或者拿著德魯克、哈耶克的書死磕步氏。但是他們忽略了這些人講話的場合响禽,時間點(diǎn)和對象。不了解背景和環(huán)境荚醒,那些知識點(diǎn)就難以應(yīng)用芋类。這也是我們強(qiáng)調(diào)系統(tǒng)性學(xué)習(xí)的原因。
2. 今天的信息很多界阁,大部分人要做的事情侯繁,不是更多地接受信息,而是選擇和過濾信息泡躯,把所學(xué)的知識使用好贮竟。此外,學(xué)會使用Google查找信息以及講述知識的視頻较剃,也非常重要咕别,要能夠在需要使用時手到擒來。千萬不要把有限的腦容量用來記憶不常用的信息写穴。
3. 學(xué)習(xí)的目的不能是為了“解除焦慮”惰拱,而是為了解決你真正遇到的問題。很多人莫名其妙地焦慮啊送,然后學(xué)了一些熱門的新知偿短,一瞬間獲得那種“哇欣孤,我懂了,我了解了新技術(shù)”的廉價快感翔冀,但是导街,這種快感來得快也去得快,焦慮并沒有消除纤子,甚至因?yàn)橹赖臇|西多了更焦慮了搬瑰。學(xué)習(xí)的目的應(yīng)該集中在解決問題,并且為了解決問題進(jìn)行深度思考控硼,直到問題解決泽论。
4. 系統(tǒng)的學(xué)習(xí)離不開討論,這點(diǎn)大家學(xué)習(xí)時都有體會卡乾,就不多說了翼悴。