我是一名程序員,到最近爲止一直從事機器學習,我自認爲這是很是有趣的。我最喜歡機器學習的一點是,對於這項工做,真正重要和有趣的是我要真正花時間在機器數據上動手,而且加以理解,而後再以本身的視角去看待一個個機器。html
我記得有一個星期我在想「個人工做應該是創建一個個可以準確地分類百萬以上數據的系統,而不是手動地去作這些事情。」不過實際上,最終也沒有任何人要僱傭我去手動的處理這些問題。程序員
因此程序員有時候可以得到到很高的工資,我想,這是由於咱們能夠創建可以充分運用電腦功能的系統去處理多到不可理喻的工做量的事情。若是你能創建 Gmail 反垃圾郵件系統,你就能夠幫助數以百萬計的人從收件箱裏刪除垃圾郵件!這真的是很神奇又驚人的工做,並且它比各類 bug 和電腦問題更值得研究。編程
可是作這些事情是真的要花費不少時間。我作過的有意思的東西基本上,都要花費兩至六個月。並且,花費比這更多時間在項目上是很常見的事情。我有一個朋友在一個項目上花費了一年多的時間,最後他創建了一個比谷歌還好的繪製大衆運輸地圖的系統。儘管辛苦,但那真的很酷。網絡
以上意味着實際上你能作出來的東西很少,並且若是最終的成果中有哪部分沒有獲得青睞,那就宣告了你一個季度的工做就這麼浪費了。不過這都不要緊,這好歹證實了你作的工做是值得深思熟慮的。機器學習
我在編程上面花的時間越多,實際上我就越能體會往什麼項目上付諸精力實在難以取捨。就像我可讓一臺電腦作十億份的事情(就是字面意思,那實際上是很是容易的),但我到底要從哪十億開始呢?哪十億會產生更多的影響?哪十億的工做才能讓個人公司運營得更好一些?性能
曾經有一次,我在剛開始經手某一項工做時和個人經理說:「嘿,我在想要作點別的什麼!」他說,:「好啊,你想作什麼事情來替代現有的方案?」因而我創建了這個項目的第一個版本(那是一個方便跟蹤機器學習實驗的小型系統),兩年事後這個系統仍然被使用着,並且有一羣人的學習就是創建在這個系統之上的。事實證實,這是一個好主意!學習
在剛開始編程的時候,我覺得個人工做就是人們告訴我寫什麼代碼,而後我就寫下來那些代碼,那就是所有了。固然我一路上都獲得了很多指導,但那不是做爲一個程序員應該有的樣子。我應該爲那些會給工程師們很大自主權的地方工做。測試
因此與之相應的,對我來講,工做應該是如下的情形:設計
o嗯,咱們這有一個長遠的目標,或者有三個,也或許有六個
o也有一堆不一樣的須要緊急處理的小問題
o如今你要來找出眼下解決哪一個比較好
o也必須弄清楚如何解決
o還可能存在哪些不可能解決的問題
o和全部致使問題的外部因素
o你去跟那些想過這些問題的人討論一會而後解決掉它!
o這裏是這周 40 小時的工做。預備,開始。日誌
那麼,你要如何決定作什麼呢?
我有一個同事 Cory Watson 在 Monitorama 有一些很酷的言論,他把他作的事稱爲爲建立一份可觀測的文化。 culture of observability原文連接
他對本身所作的事描述以下:
換句話說,若是咱們的傳感器——想一想指標,日誌和跟蹤——都不錯,那麼咱們能夠了解咱們的系統工做得是如此高效。
我在 Stripe 的工做就是確保這件事情。和 Cory 一塊兒工做的時候,會很明顯的發現他正在不懈努力地專一於讓你們更容易得知道咱們的軟件系統正在作什麼。這是很是有幫助的,公司的顯示板和指標已經所以好了不少了。它更易於性能改進和檢測並理解錯誤。
和 Cory 一塊兒工做的時候,會很明顯的發現他正在不懈努力地專一於讓你們更容易得知道咱們的軟件系統正在作什麼。這是很是有幫助的,公司的顯示板和指標已經所以好了不少了。它更易於性能改進和檢測並理解錯誤。
我那個作過地圖應用程序的朋友 Anton 很是在意如何表示公交信息,並且他老是在想這件事情,因此我並不驚訝於他可以用這麼棒的方式去完成好這件事。
我認爲這樣的工做焦點可以起到難以置信的幫助。——當我沒有一個明確的目標的時候,我會發現要去完成或者決定一件事情真的真的很難。我偶爾會模擬「若是我在一個派對上我是否能解釋清楚我本身的工做?」的測試。每當我沒法經過這項測試的時候(特別是若是我在派對上碰見的人是一個軟件工程師的時候)我就會以爲很難受。
顯然,你並不須要始終專一於一樣的事情( Jeff Dean 就像是谷歌一個傳奇仍是什麼的,我以爲他好像作了一噸的不一樣的事情),但有一個工做焦點彷佛真的很重要。
在工做中有不少可能發生的事情都要考慮一下!而做爲一我的(不是經理),在同一時間只能關注到有限的東西。我看到人們致力於:
因此無論怎樣我須要找到一個足夠大並且足夠重要的工做焦點(我不知道我是否能向個人同事解釋清楚我爲何作我正在作的事情),可是又小到一我的(或一個小團體)足夠推進它發展。而後就能更容易地來編寫代碼從而實現這一個願景!
這篇文章本來的題目是「你要如何致力於正確的事情」,我把它改掉了,由於我認爲那樣說是一種錯誤(並且有一點點危險)的措辭——沒有事情是對每一個人來講都正確的,就像我還在和不少致力於更重要事情的很棒的人一塊兒工做。不是全部事情都是一樣具備影響力的(這也是這篇文章的主要內容),可是這篇文章是關於尋找在你能力範圍以內的對你來講有用的事情,而不是找一個對全部人都是最優的東西。
若是我只寫了一篇對全部人都是最好的博客文章,我就好像字面上歷來沒有發表過任何東西。
若是你正在作一件長期或者一項挑戰很大的野心勃勃的事業,關於它,有一件事你必須作到——你必須相信你能夠作完這個項目。若是你開展了一個很酷的爲期一年的項目,一路上大約會有 5000 萬事情會出錯。那些你覺得不會有問題的東西也會出問題。而若是在又一週或三週過得很糟糕的時候,或者有人不相信你所作的事情是正確的時候就放棄,那你永遠不會完成你手頭的事情。
我認爲這是一個導師或者一個高級別的人能夠爲比本身低級別的人作的一件很是重要的事情。不少時候你無法分辨什麼是有可能完成的,什麼是不可能完成的,什麼樣的障礙對你來講是有利的,什麼樣的障礙是不可逾越的。可是,這實際上是能夠靠本身努力的!若是有人告訴你:「不要擔憂,一切都會正常的!」,而後你就能夠開始了,直擊問題,而後尋求建議,並堅持下去,最終取得勝利。
一旦你有了足夠的勝利經驗和失敗經驗,你就會開始有本身的感受,知道哪些東西會起做用,哪些永遠都不會,而後本身可以決定要堅持什麼。
人們會常常談論「 Agile 」和 MVPs ,但我不認爲他們可以被稱之爲一個對問題的完整解答——有些時候你須要構建一個大項目,你要寫設計文件構建原型,但最終你要決定那些更操蛋的事情,繼續工做,保證投入大量時間構建項目,以及在你有能力的時候展現項目的中期進展。
此外須要你的組織支持你的工做——若是你身邊的人不相信你能夠作到這件事,那麼你將會很是難完成任何事情。
我喜歡作一個數學/ CS 本科生。個人教授會給我一系列的挑戰任務,可是它們都始終在個人能力範圍以內。我一直在一點點地進步!這些挑戰真的太有趣了!我在裏面簡直如魚得水!可是,這樣的日子仍是結束了。
個人工做更像是——我有一系列的任務,從最瑣碎的小事,到我徹底不知道怎麼下手的東西。而後我須要搞清楚要如何向他人詢問相關問題,而後提高個人能力,從而去啃那些硬骨頭。我須要本身判斷別人對我說的「挺好的」是否是真的在誇獎我已經決定要作的事情,由於沒有人會爲我完成它們,真的沒有。 Dan Luu 指給我看的 Rebecca Frankel 寫的關於這篇帖子(done and gets things smart原文連接)的有趣評論以下:
我十分認同 Steve Yegge 的說法——這是一個對那些在另外一層次上的人極爲重要的(小)羣體,他們和普通的聰明勤奮的人的確不一樣。這裏有另外一種方式去解釋這種巨大的突破——可能我只是一直在用這些討論創建了這樣的觀念:這是兩種人的差別,一種是努力在別人設置的測試下一直想要努力作好的人,另外一種是已經認知到本身的能力水平,努力去提高本身對本身的能力評級,他們每每比別人更加更當心仔細,也更加迷戀完美主義。
所以,在某種程度上,着手一件重要的事情,作得好就意味着你必須肯定你的目標是什麼,也必須創建本身的內部標準,不管你是否曾經有過這些東西。除此以外,你要知道也許其它人能夠幫助你上手,但一切結果最終仍是由你掌握。
- Maggie 談了「過後推進的發展方法」——去看看那些失敗了不少次的東西吧!看你能不能作到讓他們不要再失敗了!
我以爲很奇怪去認可我真的在爲此努力奮鬥。我並不總能構建好的想法。有時候有些我認爲是很好的想法,因而我着手使它們成真,它們確實挺棒的,但有時候我實踐了想法卻發現它們是...真的並不怎麼樣。有時候,對本身的工做標準讓我沒法弄清楚到底如何知足它,這真的很無奈。
有時候別人會有一些想法,我聽了以爲挺好的而後就會幫着他們構造他們所想的東西,去讓這些好東西成真。直到如今,我參與過的最好的的項目就是令我興奮的別人的點子。
有時候我會幾個月都搞不明白別人的一個想法,但是在他們把這些想法真正構建起來後,我就會開始哦!天啊!這真的太棒了!!即便在現實中去發現真正好的東西挺難的。
一些連接:
感謝 Emil Sit , Camille Fournier , Kyle Kingsbury , Laura Lindzey , Lindsey Kuper , Stephen Tu , Dan Luu , Maggie Zhou , SunahSuh , Julia Hansbrough ,還有其餘爲這些文章做出評論的人。