|
| 您的位置: 首頁(yè) > 網(wǎng)站資訊 > 一個(gè)數(shù)據(jù)挖掘大牛,用程序算法做人生選擇 |
一個(gè)數(shù)據(jù)挖掘大牛,用程序算法做人生選擇發(fā)布日期:2017/7/5
每年一到要找工作的時(shí)候,我就能收到許多人給我發(fā)來(lái)的郵件,總是問(wèn)我怎么選擇他們的offer,去騰訊照舊去豆瓣,去外企照舊去國(guó)內(nèi)的企業(yè),去創(chuàng)業(yè)照舊去考研,來(lái)上海照舊回老家,該不該去創(chuàng)新工場(chǎng)?該不該去thoughtworks? 等等,等等。今年從7月份到現(xiàn)在,我收到并回復(fù)了60多封這樣的郵件。我更多幫他們整頓思路,幫他們曉暢自己要的是什么。(注:我以后不再回復(fù)類似的郵件了)。 我深深地發(fā)現(xiàn),對(duì)于我國(guó)這樣從小被怙恃和先生安排各種事情長(zhǎng)大的人,當(dāng)有,怙恃和先生都跟不上的時(shí)候,我們幾乎完全不知道怎么去做選擇。而我也脫離了亞馬遜,換了一個(gè)工作,讓我想到寫一篇這樣的文章。 幾個(gè)例子 當(dāng)我們?cè)诿鎸?duì)各種對(duì)選擇的影響因子的時(shí)候,如:城市,公司規(guī)模,公司性質(zhì),薪水,項(xiàng)目,戶口,技術(shù),方向,眼界…… 你總會(huì)發(fā)現(xiàn),你會(huì)在幾個(gè)公司中糾結(jié)一些東西,舉幾個(gè)例子: 某網(wǎng)友和我說(shuō),他們?nèi)ド虾rv訊,因?yàn)轵v訊的規(guī)模很大,但卻發(fā)現(xiàn)薪水待遇沒(méi)有豆瓣高(低的還不是一點(diǎn)),假如以后要換工作的話,起薪點(diǎn)直接關(guān)系到了以后的高工資。我說(shuō)那就去豆瓣吧,他說(shuō)豆瓣在上海,污染那么嚴(yán)重,又沒(méi)有戶口,生存環(huán)境不好。我說(shuō)去騰訊吧,他說(shuō)騰訊組織調(diào)整,不穩(wěn)定。我說(shuō)那就去豆瓣吧,慢公司,發(fā)展很穩(wěn)當(dāng)。他說(shuō),豆瓣的盈利不清楚,而且用Python,自己不喜好。我說(shuō),那就去騰訊吧……
我個(gè)人覺(jué)得,假如是非計(jì)算機(jī)科班出生的人不會(huì)做選擇,不知道怎么走也罷了,但是我們計(jì)算機(jī)科班出生的人是學(xué)過(guò)算法的,懂算法的人應(yīng)該是知道怎么做選擇的。 排序算法 你不可能要所有的東西,所以你只能要你主要的東西,你要知道什么東西主要,你就需要對(duì)你心內(nèi)的那些欲望和抱負(fù)有清楚的熟悉,不然,你就會(huì)在糾結(jié)中度過(guò)。 所以,在選擇中糾結(jié)的人有需要參考一下排序算法。 首先,你需要參考的就是“冒泡排序”——這種算法的思路就是每次冒泡出一個(gè)數(shù)。所以,你有需要問(wèn)問(wèn)你自己,面對(duì)那些影響你選擇的因子,假如你只能要一個(gè)的話,你會(huì)要哪個(gè)?而剩下的都可以摒棄。于是,當(dāng)你把數(shù),一個(gè)一個(gè)冒泡出來(lái)的時(shí)候,并用這個(gè)決策因子來(lái)過(guò)濾選項(xiàng)的時(shí)候,你就能比較容易地知道知道你應(yīng)該選什么了。這個(gè)算法告訴我們,人的邪念越少,就越容易做出選擇。 好吧,可能你已茫然到了怎么比較兩個(gè)決策因子的大小,比如:你分不清楚,工資>營(yíng)業(yè)前景嗎?營(yíng)業(yè)前景>能力提拔嗎?所以你完全沒(méi)有辦法進(jìn)行冒泡法。那你,你不妨參考一個(gè)“快速排序”的思路——這個(gè)算法告訴我們,我們一開(kāi)始并不需要找到數(shù),我們只需要把你價(jià)值觀中的某個(gè)標(biāo)準(zhǔn)拿出來(lái),然后,把可以知足這個(gè)價(jià)值的放到右邊,不能的放到左邊去。比如,你的標(biāo)準(zhǔn)是:工資大于5000元&&營(yíng)業(yè)前景長(zhǎng)于3年的公司,你可以用這個(gè)標(biāo)準(zhǔn)來(lái)過(guò)濾你的選項(xiàng)。然后,你可以再調(diào)整這個(gè)標(biāo)準(zhǔn)再繼續(xù)遞歸下去。這個(gè)算法告訴我們,我們的選擇標(biāo)準(zhǔn)越清晰,我們就越容易做出選擇。 這是排序算法中經(jīng)典的兩個(gè)算法了,面試必考。相信你已爛熟于心中了。所以,我覺(jué)得你把這個(gè)算法應(yīng)用于你的人生選擇也應(yīng)該不是什么問(wèn)題。關(guān)于在于,你是否知道自己想要的是什么? 排序算法的核心思想就是,讓你幫助你認(rèn)清自己需要的是什么,認(rèn)清自己要的是什么,然后根據(jù)這個(gè)去做選擇。 貪婪算法 所謂貪婪算法,是一種在每一步選擇中都采取在當(dāng)前狀況下或(即有利)的選擇(注重:是當(dāng)前狀況下),從而希望導(dǎo)致效果是或的算法。貪婪算法經(jīng)典的一個(gè)例子就是哈夫曼編碼。 對(duì)于人類來(lái)說(shuō),一般人在行為處事的時(shí)候都會(huì)使用到貪婪算法, 比如在找零錢的時(shí)候,假如要找補(bǔ)36元,我們一般會(huì)按這樣的順序找錢:20元,10元,5元,1元。 或者我們?cè)谶^(guò)十字路口的時(shí)候,要從到對(duì)角線的那個(gè)街區(qū)時(shí),我們也會(huì)使用貪婪算法——哪邊的綠燈先亮了我們就先過(guò)到那邊去,然后再轉(zhuǎn)身90度等紅燈再過(guò)街。 這樣的例子有許多。對(duì)于選擇中,大多數(shù)人都會(huì)選用貪婪算法,因?yàn)檫@是一個(gè)比較簡(jiǎn)單的算法,未來(lái)太復(fù)雜了,只能走一步看一步,在當(dāng)前的狀況下做出利于自己的判斷和選擇即可。 有的人會(huì)貪婪薪水,有的人會(huì)貪婪做的項(xiàng)目,有的人會(huì)貪婪營(yíng)業(yè),有的人會(huì)貪婪職位,有的人會(huì)貪婪自己的愛(ài)好……這些都沒(méi)什么問(wèn)題。貪婪算法并沒(méi)有錯(cuò),雖然不是全局解,但其可以讓你找到局部解或是次優(yōu)解。其實(shí),有次優(yōu)解也不錯(cuò)了。貪婪算法基本上是一種急功近利的算法,但是并不代表這種算法不好,假如貪婪的是一種長(zhǎng)遠(yuǎn)和持續(xù),又未嘗不可呢?。 動(dòng)態(tài)規(guī)劃 但是我們知道,對(duì)于大部分的問(wèn)題,貪婪法通常都不能找出解,因?yàn)樗麄円话銢](méi)有測(cè)試所有可能的解。因?yàn)樨澙匪惴ㄊ且环N短視的行為,只會(huì)跟據(jù)當(dāng)前的形式做判斷,也就是過(guò)早做決定,因而沒(méi)法達(dá)到好解。 動(dòng)態(tài)規(guī)劃和貪婪算法的不同是,貪婪算法做出選擇,不能回退。動(dòng)態(tài)規(guī)劃則會(huì)保存以前的運(yùn)算效果,并根據(jù)以前的效果對(duì)當(dāng)前進(jìn)行選擇,有回退功能。 動(dòng)態(tài)規(guī)劃算法至少告訴我們兩個(gè)事:
比如說(shuō):你有兩個(gè)offer,一個(gè)是Yahoo,一個(gè)是Baidu,上述的點(diǎn)會(huì)讓我們思考,Yahoo和Baidu誰(shuí)能給我們開(kāi)啟更大的平臺(tái)?上述的第二點(diǎn)告訴我們,是進(jìn)入Yahoo后假如沒(méi)有選好,是否還能回退到Baidu公司?照舊進(jìn)入Baidu公司后能容易回退到Y(jié)ahoo公司? Dijkstra短路徑 短路徑是一個(gè)Greedy + DP的算法。相當(dāng)經(jīng)典。這個(gè)算法的大意如下:
這個(gè)算法給我們帶來(lái)了一些這樣的啟示: 有同伙和我說(shuō)過(guò)他想成為一個(gè)架構(gòu)師,或是某技術(shù)領(lǐng)域的專家,并會(huì)踏扎實(shí)實(shí)的向這個(gè)目標(biāo)前進(jìn),永不摒棄。我照舊鼓勵(lì)了他,但我也告訴他了這個(gè)的算法,我說(shuō),這個(gè)算法告訴你,架構(gòu)師或某領(lǐng)域的專家對(duì)你來(lái)說(shuō)目前的距離是無(wú)限大,他們放在心中,先看看你能夠得著的東西。所謂扎實(shí),并不是踏扎實(shí)實(shí)追求你的目標(biāo),而是踏扎實(shí)實(shí)把你夠得著看得見(jiàn)的就在身邊的東西干好。我還記得我剛參加工作,從老家出來(lái)的時(shí)候,從來(lái)沒(méi)有想過(guò)要成為一個(gè)技術(shù)牛人,也從來(lái)沒(méi)有想過(guò)我的博客會(huì)那么的有影響力,在做自己力所能及,看得見(jiàn)摸得著的事情,我就看見(jiàn)什么技術(shù)就學(xué)什么,學(xué)著學(xué)著就知道怎么學(xué)更輕松,怎么學(xué)更扎實(shí),這也許就是我的短路徑。 有許多同伙問(wèn)我要不要學(xué)C++,或是問(wèn)我學(xué)Python照舊學(xué)Ruby,是不是不用學(xué)前端,等等。這些同伙告訴我,他們不可能學(xué)習(xí)多個(gè)語(yǔ)言,學(xué)了不用也就忘了,而且術(shù)業(yè)有專攻。這并沒(méi)有什么舛錯(cuò)的,只是我個(gè)人覺(jué)得,學(xué)習(xí)一個(gè)東西沒(méi)有需要只有兩種狀況,一種是不學(xué),另一種是精通。了解一個(gè)技術(shù)其實(shí)花不了多少時(shí)間,我學(xué)C++的目的其實(shí)是為了更懂Java,學(xué)TCP/IP協(xié)議其實(shí)是為了更懂Socket編程,許多東西都是連通和相輔相成的,學(xué)好了C/C++/Unix/TCP等這些基礎(chǔ)技術(shù)后,我發(fā)現(xiàn)到達(dá)別的技術(shù)路徑一下縮短了(這就是為什么我用兩天時(shí)間就可以了解Go語(yǔ)言的原因)。這就彷佛這個(gè)算法一樣,算法效率不高,也許達(dá)到你的目標(biāo),你在一開(kāi)始花了很長(zhǎng)時(shí)間,遍歷了許多地方,但是,這也許這就是你的短路徑。 算法就是Trade-Off 你根本沒(méi)有辦法能得到所有你想得到的東西,任何的選擇都意味著摒棄——當(dāng)你要去獲得一個(gè)東西的時(shí)候,你總是需要摒棄一些東西。人生原本就是一個(gè)蹺蹺板,一頭上,另一頭必然下。這和我們做軟件設(shè)計(jì)或算法設(shè)計(jì)一樣,用時(shí)間換空間,用空間換時(shí)間,還有CAP理論,總是有許多的Trade-Off,正如這個(gè)短語(yǔ)的原意一樣——你總是要用某種東西去交易某種東西。 我們都在用某種東西在交易我們的未來(lái),有的人用自己的努力,有的人用自己的思考,有的人用自己的年輕,有的人用自己的自由,有的人用自己的價(jià)值觀,有的人用自己的道德…… …… 有的人在交換金錢,有的人在交換眼界,有的人在交換經(jīng)歷,有的人在交換地位,有的人在交換能力,有的人在交換自由,有的人在交換愛(ài)好,有的人在交換虛榮心,在交換安逸享樂(lè)…… …… 每個(gè)人有每個(gè)人的算法,每個(gè)算法都有每個(gè)算法的purpose,就算大家在用同樣的算法,但是每個(gè)人算法中的那些變量、開(kāi)關(guān)和條件都不一樣,得到的效果也不一樣。我們就是生活在Matrix里的一段程序,我們每個(gè)人的算法決定著我們每個(gè)人的選擇,我們的選擇決定了我們的人生。 |
| 其他相關(guān)文章 |
|
|
|
|
||||||||
| Copyright 2012-2025 上海蒙狼網(wǎng)絡(luò)科技有限公司 www.lf-tool.com.cn All Rights Reserved |