小和尚的白粥館

每天早上醒來,看見你和陽光都在,這就是我想要的未來!
個人資料
  • 博客訪問:
正文

ZT: 程序算法與人生選擇

(2013-12-08 23:28:52) 下一個

程序算法與人生選擇

2012年12月28日發表評論閱讀評論70,056 人閱讀    
 

每年一到要找工作的時候,我就能收到很多人給我發來的郵件,總是問我怎麽選擇他們的offer,去騰訊還是去豆瓣,去外企還是去國內的企業,去創業還是去考研,來北京還是回老家,該不該去創新工場?該不該去thoughtworks?……等等,等等。今年從7月份到現在,我收到並回複了60多封這樣的郵件。我更多幫他們整理思路,幫他們明白自己最想要的是什麽。(注:我以後不再回複類似的郵件了)。

我深深地發現,對於我國這樣從小被父母和老師安排各種事情長大的人,當有一天,父母和老師都跟不上的時候,我們幾乎完全不知道怎麽去做選擇。而我最近也離開了亞馬遜,換了一個工作。又正值年底,就像去年的那篇《三個故事和三個問題》一樣,讓我想到寫一篇這樣的文章。

幾個例子

當我們在麵對各種對選擇的影響因子的時候,如:城市,公司規模,公司性質,薪水,項目,戶口,技術,方向,眼界…… 你總會發現,你會在幾個公司中糾結一些東西,舉幾個例子:

  • 某網友和我說,他們去上海騰訊,因為騰訊的規模很大,但卻發現薪水待遇沒有豆瓣高(低的還不是一點),如果以後要換工作的話,起薪點直接關係到了以後的高工資。我說那就去豆瓣吧,他說豆瓣在北京,汙染那麽嚴重,又沒有戶口,生存環境不好。我說去騰訊吧,他說騰訊最近組織調整,不穩定。我說那就去豆瓣吧,慢公司,發展很穩當。他說,豆瓣的盈利不清楚,而且用Python,自己不喜歡。我說,那就去騰訊吧,……
  • 還有一網友和我說,他想回老家,因為老家的人脈關係比較好,能混得好。但又想留在大城市,因為大城市可以開眼界。

 

  • 另一網友和我說,他想進外企,練練英語,開開眼界,但是又怕在外企裏當個螺絲釘,想法得不到實施。朋友拉他去創業,覺得創業挺好的,鍛煉大,但是朋友做的那個不知道能不能做好。
  • 還有一網友在創新工場的某團隊和考研之間抉擇,不知道去創新工場行不行,覺得那個項目一般,但是感覺那個團隊挺有激情的,另一方麵覺得自己的學曆還不夠,讀個研應該能找到更好的工作。
  • 還有一些朋友問題我應該學什麽技術?不應該學什麽技術?或是怎麽學會學得最快,技術的路徑應該是什麽?有的說隻做後端不做前端,有的說,隻做算法研究,不做工程,等等,等等。因為他們覺得人生有限,術業有專攻。
  • 等等,等等……

我個人覺得,如果是非計算機科班出生的人不會做選擇,不知道怎麽走也罷了,但是我們計算機科班出生的人是學過算法的,懂算法的人應該是知道怎麽做選擇的

 

排序算法

你不可能要所有的東西,所以你隻能要你最重要的東西,你要知道什麽東西最重要,你就需要對你心內的那些欲望和抱負有清楚的認識,不然,你就會在糾結中度過。

所以,在選擇中糾結的人有必要參考一下排序算法。

  • 首先,你最需要參考的就是“冒泡排序”——這種算法的思路就是每次冒泡出一個最大的數。所以,你有必要問問你自己,麵對那些影響你選擇的因子,如果你隻能要一個的話,你會要哪個?而剩下的都可以放棄。於是,當你把最大的數,一個一個冒泡出來的時候,並用這個決策因子來過濾選項的時候,你就能比較容易地知道知道你應該選什麽了。這個算法告訴我們,人的雜念越少,就越容易做出選擇。
  • 好吧,可能你已茫然到了怎麽比較兩個決策因子的大小,比如:你分不清楚,工資>業務前景嗎?業務前景>能力提升嗎?所以你完全沒有辦法進行冒泡法。那你,你不妨參考一個“快速排序”的思路——這個算法告訴我們,我們一開始並不需要找到最大的數,我們隻需要把你價值觀中的某個標準拿出來,然後,把可以滿足這個價值的放到右邊,不能的放到左邊去。比如,你的標準是:工資大於5000元&&業務前景長於3年的公司,你可以用這個標準來過濾你的選項。然後,你可以再調整這個標準再繼續遞歸下去。這個算法告訴我們,我們的選擇標準越清晰,我們就越容易做出選擇

這是排序算法中最經典的兩個算法了,麵試必考。相信你已爛熟於心中了。所以,我覺得你把這個算法應用於你的人生選擇也應該不是什麽問題。關於在於,你是否知道自己想要的是什麽?

排序算法的核心思想就是,讓你幫助你認清自己最需要的是什麽,認清自己最想要的是什麽,然後根據這個去做選擇

貪婪算法

所謂貪婪算法,是一種在每一步選擇中都采取在當前狀態下最好或最優(即最有利)的選擇(注意:是當前狀態下),從而希望導致結果是最好或最優的算法。貪婪算法最經典的一個例子就是哈夫曼編碼

對於人類來說,一般人在行為處事的時候都會使用到貪婪算法,

  • 比如在找零錢的時候,如果要找補36元,我們一般會按這樣的順序找錢:20元,10元,5元,1元。
  • 或者我們在過十字路口的時候,要從到對角線的那個街區時,我們也會使用貪婪算法——哪邊的綠燈先亮了我們就先過到那邊去,然後再轉身90度等紅燈再過街。

這樣的例子有很多。對於選擇中,大多數人都會選用貪婪算法,因為這是一個比較簡單的算法,未來太複雜了,隻能走一步看一步,在當前的狀況下做出最利於自己的判斷和選擇即可。

有的人會貪婪薪水,有的人會貪婪做的項目,有的人會貪婪業務,有的人會貪婪職位,有的人會貪婪自己的興趣……這些都沒什麽問題。貪婪算法並沒有錯,雖然不是全局最優解,但其可以讓你找到局部最優解或是次優解。其實,有次優解也不錯了。貪婪算法基本上是一種急功近利的算法,但是並不代表這種算法不好,如果貪婪的是一種長遠和持續,又未嚐不可呢?

動態規劃

但是我們知道,對於大部分的問題,貪婪法通常都不能找出最優解,因為他們一般沒有測試所有可能的解。因為貪婪算法是一種短視的行為,隻會跟據當前的形式做判斷,也就是過早做決定,因而沒法達到最佳解。

動態規劃和貪婪算法的最大不同是,貪婪算法做出選擇,不能回退。動態規劃則會保存以前的運算結果,並根據以前的結果對當前進行選擇,有回退功能。

動態規劃算法至少告訴我們兩個事:

1)承前啟後非常重要,當你準備去做遍曆的時候,你的上次的經曆不但能開啟你以後的經曆,而且還能為後麵的經曆所用。你的每一步都沒有浪費。

2)是否可以回退也很重要。這意思是——如果你麵前有兩個選擇,一個是A公司一個是B公司,如果今天你錯失了B公司,那到你明天還能不能找回來?

比如說:你有兩個offer,一個是Yahoo,一個是Baidu,上述的第一點會讓我們思考,Yahoo和Baidu誰能給我們開啟更大的平台?上述的第二點告訴我們,是進入Yahoo後如果沒有選好,是否還能回退到Baidu公司?還是進入Baidu公司後能容易回退到Yahoo公司?

Dijkstra最短路徑

最短路徑是一個Greedy + DP的算法。相當經典。這個算法的大意如下:

1)在初始化的時候,所有的結點都和我是無窮大,默認是達不到的。

2)從離自己最近的結點開始貪婪。

3)走過去,看看又能到達什麽樣的結點,計算並更新到所有目標點的距離。

4)再貪婪與原點最短的結點,如此反複。

這個算法給我們帶來了一些這樣的啟示:

  • 有朋友和我說過他想成為一個架構師,或是某技術領域的專家,並會踏踏實實的向這個目標前進,永不放棄。我還是鼓勵了他,但我也告訴他了這個著名的算法,我說,這個算法告訴你,架構師或某領域的專家對你來說目前的距離是無窮大,他們放在心中,先看看你能夠得著的東西。所謂踏實,並不是踏踏實實追求你的目標,而是踏踏實實把你夠得著看得見的就在身邊的東西幹好。我還記得我剛參加工作,從老家出來的時候,從來沒有想過要成為一個技術牛人,也從來沒有想過我的博客會那麽的有影響力,在做自己力所能及,看得見摸得著的事情,我就看見什麽技術就學什麽,學著學著就知道怎麽學更輕鬆,怎麽學更紮實,這也許就是我的最短路徑。
  • 有很多朋友問我要不要學C++,或是問我學Python還是學Ruby,是不是不用學前端,等等。這些朋友告訴我,他們不可能學習多個語言,學了不用也就忘了,而且術業有專攻。這並沒有什麽不對的,隻是我個人覺得,學習一個東西沒有必要隻有兩種狀態,一種是不學,另一種是精通。了解一個技術其實花不了多少時間,我學C++的目的其實是為了更懂Java,學TCP/IP協議其實是為了更懂Socket編程,很多東西都是連通和相輔相成的,學好了C/C++/Unix/TCP等這些基礎技術後,我發現到達別的技術路徑一下縮短了(這就是為什麽我用兩天時間就可以了解Go語言的原因)。這就好像這個算法一樣,算法效率不高,也許達到你的目標,你在一開始花了很長時間,遍曆了很多地方,但是,這也許這就是你的最短路徑

算法就是Trade-Off

你根本沒有辦法能得到所有你想得到的東西,任何的選擇都意味著放棄——當你要去獲得一個東西的時候,你總是需要放棄一些東西人生本來就是一個蹺蹺板,一頭上,另一頭必然下。這和我們做軟件設計或算法設計一樣,用時間換空間,用空間換時間,還有CAP理論,總是有很多的Trade-Off,正如這個短語的原意一樣——你總是要用某種東西去交易某種東西

我們都在用某種東西在交易我們的未來,有的人用自己的努力,有的人用自己的思考,有的人用自己的年輕,有的人用自己的自由,有的人用自己的價值觀,有的人用自己的道德…… …… 有的人在交換金錢,有的人在交換眼界,有的人在交換經曆,有的人在交換地位,有的人在交換能力,有的人在交換自由,有的人在交換興趣,有的人在交換虛榮心,在交換安逸享樂…… ……

每個人有每個人的算法,每個算法都有每個算法的purpose,就算大家在用同樣的算法,但是每個人算法中的那些變量、開關和條件都不一樣,得到的結果也不一樣。我們就是生活在Matrix裏的一段程序,我們每個人的算法決定著我們每個人的選擇,我們的選擇決定了我們的人生

[ 打印 ]
閱讀 ()評論 (24)
評論
taro_g 回複 悄悄話 回複 '小小艾' 的評論 :
也祝小小艾新年快樂,1314快樂~ :)
小小艾 回複 悄悄話 新年快樂小和尚!:)))2014多長幾根頭發,嘻嘻~~~
taro_g 回複 悄悄話 出門度假去了,剛到家就看到這麽多祝福,心裏暖融融的。

也祝清幽姐姐,葉子姐姐,京燕姐姐,小聲音,遠方,納蘭,翁翁,藤蟬姐姐,木蘭,粉哥,小小婷,憂憂國愁,還有親親珊珊2014新年快樂,健康吉祥,萬壽無疆~ :)

HAPPY NEW YEAR!!!!!!!!!!!!!!!
京燕花園 回複 悄悄話 送給親愛的朋友小和尚妹妹全家,願生活向你微笑(^.^)
(^.^)☆(^.^)☆(^.^)☆
(^.^)☆ Happy (^.^)☆
(^.^)☆ New (^.^)☆
(^.^)☆ Year (^.^)☆
(^.^)☆ 2013-2014 (^.^)☆
(^.^)☆(^.^)☆(^.^)☆
從13到14,從一生到一世
祝您身體健康,萬事如意!
新年快樂,恭喜發財!

燕子敬祝
ShanShan33 回複 悄悄話 剛剛回來,趕過來問好,祝小和尚和這裏的朋友們新年快樂,在新的一年裏,健康幸福,心想事成!!!
花甲老翁 回複 悄悄話 恭祝小和尚府上;新年快樂、萬事如意!
憂憂國愁 回複 悄悄話 冒個泡,祝和尚MM及大家元旦快樂,2014好運!
小小婷 回複 悄悄話 熊掌魚翅不可以兼得,重要的是心裏明白自己到底要什麽,謝謝小和尚分享,有幸與你為友。
艾粉 回複 悄悄話 2014美滿幸福!
木蘭 回複 悄悄話 剛剛看了那個化妝的帖子,神哪,每個女人必備,並且應該作為一項課題,認真學習,研究,最後完全掌握並且升華,嗬嗬。。。。
親好,親快樂,親親。。。
藤蟬 回複 悄悄話 可愛的小和尚妹妹,祝你聖誕快樂,新年吉祥!

快過年了,的確想家呢。還記得學生時代賣餛飩的阿姨那句經典問話:“阿要辣油啊?”嗬嗬
我家在中山門那塊:)
花甲老翁 回複 悄悄話 小和尚今天不用敲木魚了,渡佳節吧.
納蘭紅豆 回複 悄悄話 妹妹,節日快樂。
在新的一年裏,全家人都健健康康、順順利利。
yuanfang2012 回複 悄悄話 聖誕快樂!也祝女兒節日開心快樂!
小聲音 回複 悄悄話 可愛的小和尚mm聖誕新年快樂!:))
京燕花園 回複 悄悄話 親愛的小和尚妹妹闔家聖誕新年快樂(^.^)
~葉子~ 回複 悄悄話 勤奮的小和尚妹妹,Good luck to you!

祝你聖誕快樂! 新年快樂!
清幽 回複 悄悄話 回複 'taro_g' 的評論 :
謝謝啦!
祝聖誕快樂,闔家幸福!
taro_g 回複 悄悄話 清幽:清幽姐姐要學啊,這裏有個博客可以看看,我自己沒學過FLASH,不過它出來很多年了,YOUTUBE上應該有很多簡易教程。抱抱。

http://blog.wenxuecity.com/myblog/60495/201210/17652.html

花甲老翁:翁翁節日好。出門開心啊。

ShanShan33:珊珊你出關了啊。也拉拉你的長頭發,節日快樂!
聖誕節不去夏威夷了,機票旅館都好難訂到。改去賭城看秀。:)
ShanShan33 回複 悄悄話 小和尚現在越來越高深了,我也悄悄地學兩招吧:)
過來看看你,摸摸你的頭,還要說聲節日快樂!聖誕節的旅行準備好了嗎? 別忘了多多照相,等你回來看照片~~~
花甲老翁 回複 悄悄話 小和尚,這個老翁用不著了,嗬嗬.
清幽 回複 悄悄話 有時間教我怎麽做flash吧。
祝新周愉快!
taro_g 回複 悄悄話 回複 '清幽' 的評論 :
那不是我的片片,是國內一位叫陳皓的大拿寫的。我是網上查文章找到他的博客的。他很多這類很有意思的文章,我還在看。很高興你喜歡。
清幽 回複 悄悄話 小和尚妹妹,我可是認認真真的讀完你的片片。自己是學醫的,從來不知道找工作有怎麽多的竅門。學習了。
登錄後才可評論.