1. 程式人生 > 其它 >作為程式設計師,我們應該能夠識別的表象和本質

作為程式設計師,我們應該能夠識別的表象和本質

你好,我是陳皓,網名左耳朵耗子。

前兩天,我以前在亞馬遜(Amazon)團隊的一個小夥伴從西雅圖打來電話,和我主要聊了一下他最近的一些想法和動向。他在最近幾個月面試了很多美國的本土公司,從大公司到創業公司都有,比如 Facebook、Snapchat、Oracle、微軟、谷歌、Netflix、Uber 等。他今年 30 歲出頭,到美國那邊也有 3 年多時間了,所以想要多一些經歷,到不同的公司看一下。

我覺得他這個想法挺好的。於是我們聊了一些對這些公司的看法,進而聊到他想要什麼,感興趣什麼,想要經歷什麼,以及擅長什麼,未來如何發展等話題……在兩個多小時交談的過程中,我們談論到了一些關於他個人發展以及技術上的東西。他聽我的建議後,說很有價值。於是,我想既然有價值,那麼就把這些分享出來,供更多的人蔘考吧。

首先,我覺得在美國做技術真的比國內幸福好多,有那麼多很不錯的不同類別的公司可供選擇。這與國內相比,選擇空間實在是太大了,真是幸福。所以,在如此紛亂和多樣化的地方,真是需要確定自己的發展方向和目標。不然就會像這個小夥兒一樣,當 offer 像雪片一樣飛過來的時候,卻有點不知所措了。

我直接和他說,你現在不愁工作了,可以規劃自己的職業生涯了,那麼問題是你想走哪條路,對什麼方向有興趣,或是自己的長項是什麼?結果,他說他也不知道,說就是想多看看多經歷一些事情,也不知道自己最終會對什麼事有興趣,也不知道哪個方向更適合自己,可能再來個 5 年就能明確了。不過,他明確表示對前端技術不感興趣。

我對他的這些思考沒有任何異議,因為我覺得他的能力沒有問題,我無非就是想和他說說我的一些認識和看法,希望可以幫他開闊開闊思路。我基本上是給了他如下的這些看法和觀點。

關於興趣和投入

興趣是學習的助燃劑。對一件事有興趣是是否願意對這件事投入更多時間或者資源的前提條件。因此,找到自己的興趣點的確是非常關鍵的。不過,我們也能看到下面幾點。

  • 一方面,興趣是需要保持的。 有的人對有的事就是三分鐘的興趣。剛開始興趣十足,然而時間一長,興趣因為各種原因不能保持,就會很快地“移情別戀”了。所以,不能持久的興趣,或是一時興起的興趣,都無法讓人投入下去。
  • 另一方面,興趣其實也是可以培養出來的。 我高考時,對計算機軟體毫無興趣,反而對物理世界裡的很多東西感興趣,比如無線電、原子能,或是飛行器之類的。但陰差陽錯,我最終考了個計算機軟體專業,然後發現,自己越來越喜歡程式設計了,於是就到了今天。

我發現,一個可以持久的興趣,或是可以培養出來的興趣,後面都有一個比較本質的東西,其實就是成就感,他是你堅持或者努力的最直接的正反饋。也就是說,興趣只是開始,而能讓人不斷投入時間和精力的則是正反饋,是成就感。

帶娃的父母可能對此比較好理解。比如,我家小孩 3 歲的時候,我買了一桶積木給她。她一開始只喜歡把積木胡亂堆放,沒玩一會就對這種抽象的玩具失去了興趣,去玩別的更形象的玩具去了。

於是,我就搭了一個小城堡給她看,她看完後興趣就來了,也想自己搭一個。但是,不一會兒,她就受挫了,因為沒有掌握好物體在構建時的平衡和支點的方法,所以搭出來的東西會倒。

我能看到,有時積木倒了之後,她會從中有一點點的學習總結,但更多的時候總結不出來。於是,我就上前幫她做調整,她很快就學會了,並且每一次都比上一次搭得更好……如此反覆,最終,我家小孩玩積木上花的時間大大超過了其它的玩具,直到她無法從中得到成就感。

很顯然,我把孩子從“天性喜歡破壞的興趣點”上拉到了“喜歡創造的興趣點”上。因為創造能帶來更多的成就感,不是嗎?

所以,我對這個朋友說,你對一件事的興趣只是一種表象,而內在更多的是你做這件事的成就感是否可以持續。你需要找到讓自己能夠更有成就感的事情,興趣總是可以培養的。

關於學習和工作

後面,我們又談到了工作,他覺得只有找到與興趣相匹配的工作才是能否學好一個技術的關鍵。對此,我給了他如下一些迴應。

我覺得,學好一項技術和是否找到與之相匹配的工作有關聯,但它們之間並不是強關聯的。但之所以,我們都覺得通過工作才讓我們學習和成長得更快,主要有這些原因。

  • 工作能為我們帶來相應的場景和實際的問題,而不是空泛的學習。帶著問題去學習,帶著場景去解決問題,的確是一種高效的學習方式。
  • 在工作當中,有同事和高手幫助。和他們的互動和討論,可以讓你更快地學習和成長。

本質上來說,並不是只有找到了相應的工作我們才可以學好一項技術,而是,我們在通過解決實際問題,在和他人討論,獲得高手幫助的環境中,才能更快更有效率地學習和成長。

有時候,在工作中你反而學不到東西,那是因為你找的這個工作能夠提供的場景不夠豐富,需要解決的實際問題太過簡單,以及你的同事對你的幫助不大。這時,這個工作反而限制了你的學習和成長。

所以,我給了這個小夥子兩點建議。

  • 找工作不只是找用這個技術的工作,更是要找場景,找實際問題,找團隊。這些才是本質。一項技術很多公司都在用,然而,只有進入到有更多的場景、有挑戰性的問題、有靠譜團隊的公司,才對學習和成長更有幫助。
  • 不要完全把自己的學習寄希望於找一份工作,才會學得好。我給他的建議是,在一些開源社群內,有助於學習的場景會更多,要解決的實際問題也更多,同時你能接觸到的牛人也更多。特別是一些有大量公司和幾萬、幾十萬甚至上百萬的開發人員在貢獻程式碼的專案,我認為可以讓人成長很快。

我入行前十年並沒有生活在一個開源軟體爆發的年代,也沒有生活在一個場景像今天這麼豐富的年代,所以也走了很多彎路。不過,比較幸運的是,我還是在一些關鍵時期找到了靠譜的工作,為我帶來了一般人看不到的實際問題,也為我提供了很不錯的團隊和實際場景。

今天的年輕人有比我更好的環境和條件,應該能比我成長得更好、更快。當然,和我的成長一樣,都需要小心地鑑別和甄選。

總之,找到學習的方法,提升自己對新事物學習的能力,才是學習和成長的關鍵。

關於技術和價值

後面,我們又聊到了什麼樣的技術會是屬於未來的技術,以及應該把時間花在什麼樣的技術上。我問了他這樣一個問題:“你覺得,讓人登月探索宇宙的技術價值大,還是造高鐵的技術價值大?或者是科學種田的技術價值大?……”

是的,對於這個問題,從不同的角度上看,就會得到不同的結論。似乎,我們無法說明白哪項技術創造的價值更大,因為完全沒法比較。

於是我又說了一個例子,在第一次工業革命的時候,也就是蒸汽機時代,除了蒸汽機之外還有其它一些技術含量更高的技術,比如化學、冶金、水泥、玻璃……但是,這麼一個不起眼的技術引發了人類社會的變革。也許,那個時候,在技術圈中,很多技術專家還鄙視蒸汽機的技術含量太低呢。

我並不是想說高大上的技術無用,我想說的是,技術無貴賤,很多偉大的事就是通過一些不起眼的技術造就的。所以,我們應該關注的是:

  • 要用技術解決什麼樣的問題,場景非常重要;
  • 如何降低技術的學習成本,提高易用性,從而可以讓技術更為普及。

另外,我又說了一個例子。假設,我們今天沒有電,忽然,有人說他發明了電。我相信,這個世界上的很多人都會覺得“電”這個東西沒什麼用,而只有等到“電燈”的發明,人們才明白髮明“電”是多麼牛。

所以,對於一些“基礎技術”來說,通常會在某段時間內會被人類社會低估。就像國內前幾年低估“雲端計算”技術一樣。基礎技術就像是創新的引擎,其不斷地成熟和完善會引發更上層的技術不斷地衍生,越滾越大。

而在一個基礎技術被廣泛應用的過程中,如何規模化也會成為一個關鍵。這就好像發電廠一樣,沒有發電廠,電力就無法做到規模化。記得汽車發明的時候,要組裝一個汽車的時間成本、人力成本、物力成本都非常高,所以完全無法做到規模化,而通過模組化分工、自動化生產等技術手段才釋放了產能,從而普及。

所以,我個人覺得一項有價值的技術,並不在於這項技術是否有技術含量,而是在於:

  • 能否低成本高效率地解決實際問題;
  • 是不是眾多產品的基礎技術;
  • 是不是可以支援規模化的技術。

對於我們搞計算機軟體的人來說,也可以找到相對應的技術點。比如:

  • 低成本高效率地解決實際問題的技術,一定是自動化的技術。軟體天生就是用來完成重複勞動的,天生就是用來做自動化的。而未來的 AI 和 IoT 也是在拼命數字化和自動化還沒有自動化的領域。
  • 基礎技術總是枯燥和有價值的。數學、演算法、網路、儲存等基礎技術吃得越透,就越容易服務上層的各種衍生技術或產品。
  • 支援規模化的技術也是很有價值的。在軟體行業中,也就是 PaaS 的相關技術。

當然,我的意思並不是別的技術都沒有價值了。重申一下,技術無貴賤。我只是想說,能規模化低成本高效率解決實際問題的技術及其基礎技術,就算是很 low,也是很有價值的。

關於趨勢和未來

好像每次跟人聊天的時候都會扯到這個事上來。老實說,真的沒人可以預測未來會是什麼樣的。不過,似乎有些規律也是有跡可循的。

我一直認為,這個世界的技術趨勢和未來其實是被人控制的。 就是被那些有權有勢有錢的公司或國家來控制的。當然,他們控制的不是長期的未來,但短期的未來(3-5 年)一定是他們控制著的。

也就是說,技術的未來要去哪,主要是看這個世界的投入會到哪。基本上就是這個世界上的有錢有勢的人把財富投到哪個領域,也就是這個世界的大公司或大國們的規劃。

一旦他們把大量的金錢投到某個領域,這個領域就會得到發展,那麼發展之後,這個領域也就成為未來了。只要是有一堆公司在往一個方向上不間斷地投資或者花錢,這個方向不想成為未來似乎都不可能。

聽上去多少有點兒令人沮喪,但我個人覺得世界就是如此簡單粗暴運作著的。

所以,對於我們這些在這個世界裡排不上號的人來說,只能默默地跟隨著這些大公司所引領的趨勢和未來。對一些缺錢缺人的創業公司,唯一能夠做的,也許只是兩條路,一是用更為低的成本來提供和大公司相應的技術,另一條路是在細分垂直市場上做得比大公司更專更精。等著自己有一天長大後,也能加入第一梯隊從而“引領”未來。

小結

今天的這個主題,我其實觀察和醞釀了很久,正好結合跟這位小夥伴的交流,總結整理出來。在我們的生活和工作中,總是會有很多人混淆一些看似有聯絡,實則關係不大的詞和概念,分辨不清事物的表象和本質。

比如文中提到的興趣和投入。表面上,興趣是決定一件事兒能否做持久的關鍵因素。而反觀我們自己和他人的經歷不難發現,興趣扮演的角色通常是敲門磚,它引發我們關注到某事某物。而真正能讓我們堅持下去的,實際上是做一件事之後從中收穫到的正反饋,也就是成就感。

同樣,人們也經常搞錯學習和工作之間的關係。多數人都會認為,在工作中學習和成長速度更快。而仔細觀察下來,你會發現,工作不過是提供了一個能夠解決實際問題,能跟人討論,有高手幫助的環境。

所以說,讓我們成長的並不是工作本身,而是有利於學習的環境。也就是說,如果我們想學習,除了可以選擇有助於學習的工作機會,開源社群提供的環境同樣有助於我們的學習和提高,那裡高手更多,實際問題不少。

還有,技術和價值。人們通常認為技術含量高的技術其價值會更高,而歷史上無數的事實卻告訴我們,能規模化、低成本、高效率地解決實際問題的技術及其基礎技術,才發揮出了更為深遠的影響,甚至其價值更是顛覆性的,難以估量。

趨勢和未來也是被誤解得很深的一對“孿生兄弟”。雖然大家通常會認為有什麼樣的技術趨勢,必然帶來什麼樣的未來。殊不知,所謂的趨勢和未來,其實都是可以人為控制的,特別是那些有錢有勢的人和公司。也就是,社會的資金和資源流向什麼領域,這個領域勢必會得到成長和發展,會逐漸形成趨勢,進而成為未來。我們遵循這樣的規律,就能很容易地判斷出未來的,最起碼是近幾年的,技術流向了。

再如,加班和產出,努力和成功,速度和效率……加班等於高產出嗎?顯然不是。很努力就一定會成功嗎?當然不是。速度快就是效率高嗎?更加不是。可以列舉的還有很多,如干得多就等於幹得好嗎?等等。

學完這一節課,你是不是不再混淆一些現象和本質,是不是能將一些事情看得更加清晰了呢?歡迎來跟我交流。