最近在討論 2015 年的團(tuán)隊(duì)培訓(xùn)計(jì)劃問(wèn)題,Quora 上的一篇文章給了我不少啟發(fā)吐限。排行第一的回答中有幾個(gè)很有意思的見(jiàn)解鲜侥。
抽像思維能力
作者認(rèn)為這是程序員最重要的能力。我們?cè)诰幊虝r(shí)诸典,用到的都是一些抽像的概念描函。作者認(rèn)為應(yīng)該把培養(yǎng)抽像思維能力作為平時(shí)練習(xí)最重要的事情長(zhǎng)期做下去。
問(wèn)題分解能力
現(xiàn)實(shí)編程時(shí)狐粱,我們要解決的問(wèn)題往往都比較大舀寓,比較復(fù)雜。怎么樣把復(fù)雜的大問(wèn)題分解成一個(gè)個(gè)小問(wèn)題肌蜻,再逐個(gè)去解決這些小問(wèn)題互墓。這個(gè)就是問(wèn)題分解能力。缺少問(wèn)題分解能力的人蒋搜,拿到問(wèn)題時(shí)總會(huì)沒(méi)有思路篡撵,因?yàn)樗麄儾欢匕褑?wèn)題分解成一個(gè)個(gè)簡(jiǎn)單地可解決的問(wèn)題。
模式識(shí)別
作者舉了個(gè)笑話:在一個(gè)程序員的面試過(guò)程中齿诞,面試官問(wèn)被試者酸休,微波爐著火了怎么辦?被試者說(shuō)把微波爐扔到窗外祷杈。面試官繼續(xù)問(wèn)如果咖啡機(jī)著火了怎么辦斑司?被試者說(shuō)把咖啡機(jī)裝在微波爐里,然后扔到窗外但汞。
這里作者想提的其實(shí)是一種問(wèn)題轉(zhuǎn)換的思路宿刮。把遇到的一個(gè)問(wèn)題分解后,把子問(wèn)題使用已經(jīng)有成熟解決方案的方法來(lái)解決私蕾。其實(shí)模式識(shí)別就是抽像思維的一種僵缺。我在教女兒算數(shù)時(shí),就用了這個(gè)方法踩叭,我先問(wèn)她你有三個(gè)蘋(píng)果磕潮,媽媽吃掉一個(gè)還剩下幾個(gè)翠胰。等她理解后,再問(wèn)她你有三個(gè)桃子自脯,媽媽吃掉一個(gè)還剩下幾個(gè)之景。所以,實(shí)際上我是在教我女兒抽像思維的能力膏潮,問(wèn)題的重點(diǎn)不是蘋(píng)果或桃子锻狗,而是三和一。
判斷代碼質(zhì)量的能力
這里作者講的是不要過(guò)早焕参,過(guò)度去優(yōu)化代碼轻纪,不要片面去追求完美解決方案。代碼的性能和質(zhì)量要和問(wèn)題的復(fù)雜度相當(dāng)叠纷。
怎么樣去判斷代碼的質(zhì)量和效率剛剛好呢刻帚?作者沒(méi)有提,我覺(jué)得這個(gè)需要有一些 benchmark 工具來(lái)測(cè)量以及實(shí)際使用來(lái)衡量讲岁。在這一點(diǎn)上我擂,其實(shí)我比較少看到程序員犯這方面的毛病,看到更多的是完全沒(méi)有優(yōu)化或沒(méi)去思考性能問(wèn)題的低級(jí)錯(cuò)誤缓艳。
練習(xí)
練習(xí),練習(xí)看峻,練習(xí)阶淘。沒(méi)有捷徑。10000 小時(shí)理論在編程這件事情上一定是真理互妓∠希可能有天才,但只要你不是特別笨冯勉,在一個(gè)細(xì)分領(lǐng)域持續(xù)練習(xí)澈蚌,投入時(shí)間,一定會(huì)成為專家灼狰。當(dāng)然宛瞄,這里有些人是工作一年,學(xué)了三年的經(jīng)驗(yàn)交胚,有些人是工作了五年份汗,只學(xué)了一年的經(jīng)驗(yàn)。
基本原理
這條是我加的蝴簇。當(dāng)學(xué)會(huì)用 Java 讀寫(xiě)文件后, 不管是 Swift 還是 Python 杯活,他們的讀寫(xiě)文件的方法都類似。當(dāng)熟練使用 Java 的多線程編程熬词,并且理解線程的運(yùn)作方式之后旁钧,要用其他語(yǔ)言實(shí)現(xiàn)多線程編程吸重,只需要查看 API DOC 很快就可以寫(xiě)出多線程代碼。類似的概念還有網(wǎng)絡(luò)編程歪今,內(nèi)存管理嚎幸,進(jìn)程間通信,設(shè)計(jì)模式等等彤委。新技術(shù)層出不窮鞭铆,但基本原理卻發(fā)展異常緩慢,而且基本保持不變焦影。
今日推薦
那么問(wèn)題來(lái)了车遂,怎么樣提高這些能力呢?作者沒(méi)有給出答案斯辰。hackerrank 是個(gè)不錯(cuò)的選擇舶担,長(zhǎng)期練習(xí)一些有趣的算法題是對(duì)這些能力的培養(yǎng)很有幫助。