我最能和身邊朋友說的一句話就是:當(dāng)你做一件事覺得太復(fù)雜,太累,要江郎才盡的時候,一定要暫停,因?yàn)橐欢ㄓ泻唵蔚淖龇ù嬖凇?br> 我是個程序員,每天和程序打交道,邏輯會直接決定效率。曾有朋友和我說:“你的要求太高,我沒有你的天賦……”。其實(shí)我們差的不是天賦,而是方法。
01
大一下學(xué)期的時候還沒學(xué)過Java,年輕氣盛,報了個全國移動互聯(lián)應(yīng)用大賽,那時候2014年,Android很火。
無頭蒼蠅一樣的我根本找不到方向,真正開始準(zhǔn)備的時候已經(jīng)9月,比賽在10月初,一個連完整程序都沒寫過的小白想在這么短時間寫出一個系統(tǒng)就像天方夜譚。
我也用了大多數(shù)人第一想到的流程:先找本書讀java基礎(chǔ),再找本Android教程補(bǔ)Android,最后開始設(shè)計(jì)自己的應(yīng)用,進(jìn)行編碼。好,就這么干!結(jié)果跑到圖書館發(fā)現(xiàn)連最速成的書題目都叫《21天精通Java》……
放棄嗎?絕不。天生幸運(yùn),我遇到了一個技術(shù)很牛的大哥,給我一份示例代碼,告訴我說:
“最快的方式就是照貓畫虎,不懂的地方去看官方文檔,查API,永遠(yuǎn)是最好的教程,那些書你看看什么年份,等他們學(xué)通了,出本書,技術(shù)都更新了好幾代了。”
這句話簡直讓我醍醐灌頂。后面的一個月里我分析代碼,研究API,邊設(shè)計(jì)系統(tǒng)邊編碼,廢寢忘食過,半夜三點(diǎn)起來過,比賽截止前一天,我完成了系統(tǒng),學(xué)會了Java,做到了曾以為天方夜譚的一件事。讓這件事成功做完的,不是天賦,不是智商,不是能力,而是方法。如果當(dāng)時我只顧按著自己的邏輯走,可能不眠不休寫到吐血也寫不完。
02
822實(shí)驗(yàn)室第二次分享活動的項(xiàng)目是給出性別、艙位等級和年齡等特征,通過實(shí)現(xiàn)一棵決策樹預(yù)測泰坦尼克號的乘客是幸存還是死亡,準(zhǔn)確率越高越好。
每個節(jié)點(diǎn)都是人工靠腦力分析的,為了更高的準(zhǔn)確率,大家嘗試了n次,后來聽大家的感想,頭疼、郁悶、惆悵,時間嘩嘩地流逝,不管怎么嘗試,準(zhǔn)確率都在83%左右原地踏步,500次想放棄。
其實(shí)走不下去的時候就不埋頭苦走了,停下來找找簡單做法,事半功倍。懶一點(diǎn)的人,寫個算法找最佳節(jié)點(diǎn),讓電腦去做n次嘗試,代替人工勞動。再懶的人,這件事這么麻煩又這么有解決的必要,一定有人早就寫好了解決辦法,是啊,找個現(xiàn)成的實(shí)現(xiàn)決策樹的庫,調(diào)用方法不就好了,簡單一搜,就能找到sklearn的DecisionTreeClassifier,準(zhǔn)確率直奔91%,核心代碼只要4行。
時間就是金錢,早點(diǎn)這么懶,能省多少錢。
03
幾個月后有一個關(guān)于三維顯示施工過程的項(xiàng)目,最難的是要實(shí)時交互渲染。again,一個從未涉及過的方向,在我的認(rèn)識里,大概要用Unity3D,意味著我要熟悉C#,要考慮一個新的引擎如何和服務(wù)器交互,如何根據(jù)參數(shù)實(shí)時渲染……準(zhǔn)備涉足泥潭的時候,一位天使告訴我說,你可以用echart,js簡單啊,交互什么的都不是問題,天吶,天使,這一句話幫我省了至少3個月的時間!
如果我一直埋頭苦走,連和別人交談的時間都沒有,我會走多少彎路,浪費(fèi)多少青春。
人是很聰明的,“覺得累(麻煩)”是一個很好的信號,意味著一定有簡單做法的存在,如果一個思路很難實(shí)現(xiàn),占據(jù)了大部分時間,讓你覺得很累,就停下來,磨刀不誤砍柴功。永遠(yuǎn)把埋頭走當(dāng)做PlanB,設(shè)置一個時間節(jié)點(diǎn),節(jié)點(diǎn)之前廣泛搜索簡單做法,直到節(jié)點(diǎn)仍然未果,再去埋頭苦走。
每個項(xiàng)目都是一條小魚,背后隱藏著大漁,能省很多時間的大漁,有時間埋頭苦干,不如多思考總結(jié)漁,讓一件事頂十件事。
很多人都說道理都懂,可是吶,懂和會用相差十萬八千里,悟不透,它只是一句話,悟透了,它就是魔法。
如果此時的你覺得手忙腳亂,生活充斥著繁忙與煩惱,停下來,你走錯路了,該整理維修一下自己,沒有難事,只要摸對了門路。
愿每個人都能輕松愉快地度過每一天。