透過用戶思惟談程序員的進階之路

最近讀了一本關於產品的好書《用戶思惟+ 好產品讓用戶爲本身尖叫》,雖然是一本產品相關的書,可是全書都在圍繞如何讓你的用戶變得更優秀展開討論。做者的觀點很明確也很獨到,可持續成功的產品都是由推薦(口碑傳播)產生的。而激發這些推薦的是用戶對本身的感受,也就是咱們的產品或服務幫助他們作了什麼或成爲何樣子。這可能也是知識付費這幾年火熱的緣由之一吧。程序員

這本書的做者可謂將用戶思惟挖掘到了極致,這一點在此書中隨處可見。能夠這麼講,這本書自己就很是的用戶思惟,在關鍵的觀點或知識點上,老是配有恰到好處的生動插圖,讀起來絕不費勁,想象一下《Head First》系列圖書的畫風。奧對了,這本書的做者Kathy Sierra就是Head First系列圖書的策劃人之一。數據庫

我在讀這本書的時候,更多的是將本身當成了書中的用戶。因此讀完以後最大的感觸就是,我能不能運用書中講的這些讓本身變得更優秀呢?畢竟用戶思惟就是一切從用戶出發。思考事後,我以爲是能夠的。從這個角度而言,這本書已經超出了討論如何作好產品的範圍,着重的是用戶思惟中的思惟這兩個字。而這種思惟就是譯者序中提到的成長型思惟模式。這也是我寫此文的目的,但願這種成長型思惟能對本身的進階之路有借鑑意義。若是能對你們也有所幫助,那就再好不過了。編程

如何作到保持理想成長曲線呢?

用戶理想成長曲線:微信

mark

如果順着成長曲線向右上方移動,最終咱們將達到專家(某一領域)的高度。但其實咱們大多數人只是想變得更好一些而已,一點點進步就會很是明顯。那麼如何作才能順着成長曲線向右上方快速移動,甚至接近理想曲線呢?或許能夠從專家身上找到答案,首先咱們須要瞭解一下什麼是專家?數據結構

專家不僅是指他們知道什麼。重要的是,他們能將已有的知識應用到實踐中。並且,他們可將這一過程一次次地重現。在一個領域中,給定一項具備表明性的任務,專家的完成狀況更好、更可靠。post

而後咱們再來看看專家是如何作的?學習

  • 持續不斷地構建技能
  • 保持渴望成功的願望

持續不斷地構建技能

構建技能

要想具有專業能力,就必須構建專業技能。技能的構建就是將一項技能由「不能作」移動到「能作」。能作又劃分爲兩種類別:費力(不可靠)和精通(可靠、已內化)。搜索引擎

咱們設想中的技能構建過程多是這樣:spa

mark

可是,這不是一條通向高水平專業能力的有效途徑:設計

mark

咱們看一下專家是如何作的:
mark

  • 專家從不中止增長新的技能。
  • 專家既有意識地構建技能,也無心識地構建技能。
  • 專家會改進現有的技能。

咱們應該格外注意這個過程:

mark

刀不磨要生鏽,那些無需咱們有意識練習的技能將慢慢退化。因此僅僅使用是不夠的,還須要拿出來有意識的練習。

刻意練習

咱們常常會有這種感受,在某一項技能的練習上,咱們付出了努力,也付出了時間,可是效果就是不理想。不少人可能會將此歸咎爲本身笨,沒有天賦;其實並非,頗有多是本身練習的姿式不對。

在時間同樣的狀況下,專家會將更多的時間放在刻意練習上,注意能夠刻意練習不是刻意地練習。能夠練習有助於防止陷入平庸,這是由於:精通半個技能完勝一堆半生不熟的技能

mark

一般狀況下,更細粒度的子技能學習法是構建技能的最佳途徑,可是沒有人願意把一週的時間都用在簡單的練習上。刻意練習老是剛好超出咱們當前的能力範圍(溫馨區)。這一點很是重要,若是咱們練習那些遠超出當前能力的技能,極可能會由於太困難、長時間沒有反饋而放棄。而若是一直練習沒有難度沒有挑戰的技能,後果可能會更嚴重,咱們在平庸階段進行的練習越多,對平庸技能的強化就越大,而且練習形成的影響是永久的。

mark

刻意練習的簡明原則:完成一項細粒度的任務,通過一到三組45-90分鐘的練習就能達到95%的精通度。

若是沒法達到這一要求,咱們能夠將任務劃分爲更小的子任務,或者下降要求和標準。

  • 若是這項任務或技能過於複雜(未精通的技能過多),就將其劃分爲更細粒度的子任務或子技能mark
  • 若是這一任務並不複雜,只是難度過高了,則下降要求或標準

mark

可是大多數人在大多數的專業能力成長曲線上遇到的最大問題是,階段B堆積了太多東西。與一次只作一件事情相反,咱們想要同時學習和練習的東西太多了。這種形式的技能堆砌會拖慢進步速度、扼殺進步。

mark

專家將更多的時間放在刻意練習,給了咱們借鑑的意義。程序員這個職業,不學習就會被淘汰,學習就意味着要構建新的技能,豐富本身的技能庫。這個時候就能夠運用上面的刻意練習的方式。首先咱們要明確本身學習的目標,學習此技能能幫助咱們完成什麼,是否值得咱們學習,切莫貪大貪全,應該肯定本身的核心競爭力是什麼。以閱讀優秀源碼(至於爲何閱讀源代碼,後面有提到)爲例,通常一個項目的源碼到了值得閱讀學習的階段,此項目應該已經比較成熟了。那麼此項目的代碼量以及代碼難度應該都是不小的,若是從最新最全的版本開始看起,很容易就由於太困難放棄了。那麼此時就能夠進行任務拆解,能夠從比較早期的版本看起,這個時期的代碼量比較小,代碼設計要比較好理解。或者是能夠研究此項目中其中一個功能,掌握之後再切換到別的功能上。例如研究數據庫,數據庫發展到如今,其中的實現無比複雜。那麼咱們就能夠從其中的幾個主要的功能特性入手,好比索引、鎖之類。

此外咱們須要格外注意上面提到的兩個問題,一個是階段B堆積了太多東西,咱們想學習的東西太多,可是精力有限。此時應該收縮戰線,專一構建最重要的技能。精通半個技能完勝一堆半生不熟的技能。另外一個是咱們在平庸階段進行的練習越多,對平庸技能的強化就越大,而且練習形成的影響是永久的。有不少工做年限比較久的程序員,專業能力還不如剛工做幾年的新人。究其緣由,都是由於不努力嗎?否則,他們也努力了,只不過他們待在溫馨區的時間太長了。

感性接觸

咱們會常常聽到這麼一個觀點,中國人學很差英語,是由於中國人歷來不用英語,只是單純的死記硬背。一樣的道理,專家之因此成爲專家,是由於專家周圍的環境更好,他們接觸了大量高質量的專業技能。中國有句古話,「近朱者赤,近墨者黑」,也是一樣的道理。放在如今就是,若是你身邊都是優秀的人,那你多半也差不到哪裏去。可是,除非知足特定的條件,不然簡單地接觸專業人士並不能幫助你構建專業能力

書中有個很生動的例子,小雞性別鑑定。辨別剛出生的小雞的性別異常困難,可是更早的辨別出小雞性別,將公雞和母雞分開,有助於更快的進入雞蛋生產環節。在20世紀初,日本人開發了一套鑑別小雞性別的方法,可是隻有不多的幾位專家掌握了這一技能。如今的關鍵是培訓具有這一技能的新手,即可以大規模應用這一技能。問題是身爲掌握這一技能的專家也不知道本身是如何作到的。你的大腦可以學習一些你沒法學習的東西,這不是什麼魔法,而是感性知識。

他們是這樣培訓新人的,讓新人隨意指出小雞的性別,只是隨意的猜想。而後小雞性別鑑定專家給予新人反饋,對,不對,不對,對。新人的每次猜想都會獲得專家的反饋。終於,隨着時間的流逝,新人在小雞性別鑑定方面的表現愈來愈好了。只不過這時候新人仍是不知道這是爲何?

其實在接觸足夠多的反饋以後,你的大腦在無需意識介入的狀況下,開始發現模式和潛在的結構,伴隨着更多的接觸,你的大腦開始精心調整它的感知能力,最終找到真正的解決方案。你的大腦可以覺察更加細微的特徵,將信號和噪聲區別開來,即便你沒法解釋其中的原理。

全部領域的專家都在學習和利用無心識的感性知識,他們的大腦知道的東西遠比展示出來的多得多。

mark

當你接觸了大量多樣化的實例時,你的大腦便開始觀察什麼是不變的。在感性學習可以發揮做用的地方,「發現」其實比「講授」更有效。咱們的目標就是經過展示更好的實例,幫助本身變得更加優秀。

如今知道爲何要讀源碼學習了吧,並且要讀優秀的源碼。你無需觀察優秀程序員是如何編寫代碼的,只須要閱讀不少優質代碼便可。因此不要把本身寫不出好代碼的緣由歸咎於身邊沒有大牛,也不要妄想着要是有個大牛帶帶我寫代碼就行了。

那麼要不要看爛代碼呢?要看!由於有時候這不是你想不想看的問題,而是你不得不看,是項目就會有爛代碼。當你確實須要展現或者閱讀錯誤或不良的實例時,要營造不適感。我曾經和個人組員說,有時候閱讀爛代碼反而比閱讀優秀代碼進步更快。可是前提是你要能識別出什麼是好代碼,或者什麼是爛代碼。當你看到爛代碼時,你就會打心底裏嫌棄,而後就是想辦法去改造它,這就是進步的機會啊。學習鑑別「不良」實例的最佳辦法,就是學習「優秀」實例的潛藏模式。《重構 改善既有代碼的設計》這本書就是這樣作的,首先明確指出爛代碼都有哪些特色,而後纔是針對這些特色的代碼重構方法和解決方案。

保持渴望成功的願望

排除障礙

如何能保證本身順着理想成長曲線不斷前進呢?要知道在願望和現實之間存在着一條鴻溝。有一些東西干擾了咱們,有兩種不一樣類型的干擾性鴻溝。

  • 技能鴻溝

mark

  • 關係鴻溝

mark

第一次學習編程的你會遭受不少痛苦。任何一件值得你付出的事情,都是如此。因此當咱們面對困難時,第一件事就是要認可困難。人們之因此在遭遇困難時放棄,並非由於他們遭遇了困難。這是由於他們不知道他們的境遇是正常的。這是由於他們不知道他們的努力方向是正確的。這是由於他們不知道其餘人也會在同一階段遭遇困難。那些放棄的人們,沒有意識到,困難只是暫時的,也是正常的。

在認可困難以後,咱們還要對成長曲線上可能會遇到的問題作出預測和補償。預測出可能會干擾咱們前進的因素。好比我本身在看書時,會將手機靜音放到本身夠不到的地方去。這樣我就不會一直惦記手機會不會有消息,等到看完書再處理就是了。而後要對本身遇到的困難作出補償,以編程爲例,咱們遇到的問題基本上前輩們都遇到過,這個時候善用搜索引擎就很是有用了。論壇和社區也很是重要。

進步+回報

咱們知道了阻礙咱們前進的因素,可是吸引咱們前進的因素是什麼呢?我以爲是成就感。成長路線上所收穫的,會讓咱們得到成就感。若是咱們沒能從進步中得到任何好處,一切將變得沒有任何意義。因此規劃好成長路徑圖就很是重要了,僅僅知道有這麼一條成長路徑存在,就是強烈的動機來源。

對於程序員而言,製做一份技能清單,內容涵蓋從初級到高級的技能。而後將其劃分爲不一樣的級別和層次。一種可行的作法是,在每一個層次所花費的時間是前一個層次的兩倍。即便這條路徑不是最佳也無所謂,由於重要的不是路徑,而是取得進步。讓咱們大膽一些,儘管嘗試就是了。另外使用領域特定的專業術語進行交流,不只有用,並且也是一種激勵。因此和同事交流,或者寫博客分享咱們的技巧都是很好的激勵方式。

維護認知資源

1999年,Baba Shiv教授以及165位大學生一塊兒開展了一項簡單的實驗。他要求一半的學生記憶一個7位數,其他學生記憶一個2位數。

mark

上圖中的結果,可能不少人認爲是大腦在工做以後須要更多的卡路里,須要吃點蛋糕補充能量。可是研究人員向咱們揭示了一個違反直覺、使人震驚的事實:

意志力與認知加工能力從同一個資源池中獲取能量。

記憶7位數的參與者選擇蛋糕,不只是由於他們大腦須要更多的熱量,還由於這項記憶性任務耗盡了他們抵抗蛋糕誘惑的意志力。因此咱們應該確保本身把稀缺、易耗的認知資源用在正確的事情上。核心任務就是減小資源泄露

減小認知泄露

  • 要想減小認知泄露,應該把認知工做委託給外部世界(這樣它就不會滯留在用戶的大腦中)

    咱們的大腦每次只能專一於一件事情,對於未完成或者中斷的任務,咱們的大腦會爲其保留一個「後臺進程」,多任務切換會耗盡大腦的能量。人們更容易記住未完成或不完整的任務,這就是蔡加尼克效應

  • 要想減小認知泄露,不要讓用戶選擇

    選擇是一種代價昂貴的認知開銷。以前看過一篇文章,講的是不要在你的臥室內學習或者工做。這一點我深覺得然,學習原本就是一件違反人性的行爲,選擇在臥室內學習或者工做,極可能整個週末都是在起牀學習工做仍是躺在牀上休息中的糾結中度過。因此乾脆不要給本身選擇的機會,我如今就是週末會抽一天很早起牀,而後直接去公司,斷了本身想偷懶的想法。

  • 要想減小認知泄露,幫助用戶內化技能

    位於階段B的技能會消耗大量的認知資源,位於階段C的技能所消耗的認知資源則不多。因此咱們寧願只精通一項技能,也不要同時學習過多的技能。

  • 要想減小認知泄露,減小對意志力的需求

    自控力和意志力是昂貴的認知資源開銷。要想減小用戶對意志力的需求,就假設它們根本不存在,幫助他們養成習慣。習慣只須要不多的意志力或者無需意志力。可是咱們的關注點應該不只僅在於養成新的習慣,咱們必須升級或者替換掉那些容易招致平臺期和中等技能困境的不良習慣。

穿越大腦的垃圾過濾器

咱們的大腦老是努力區分噪聲和信號,這實際上是好事,只不過咱們沒法控制這個過濾器。因此咱們須要作另一件事,阻止大腦把咱們應該關注的事情當成垃圾

咱們必須幫助大腦贊成:

  • 這是一件值得關注的事情
  • 這是一件值得集中注意力的事情
  • 這是一件值得記住的事情

大腦喜歡即學即用式學習,而不是儲備式學習。這也是爲何一樣的工做時間,不一樣的人能力提高卻差異很大。若是你的工做是極具挑戰性的,那麼你就須要一直學習新的技能來知足工做的須要,而且都是即學即用式學習,這但是咱們的大腦所喜歡的。相反,你的工做沒有任何挑戰性,即便你在不斷學習,可是始終用不到學到的新技能。咱們常常會有這種感受,不少當時學會的東西,過一段時間基本就忘卻了,由於咱們的大腦不喜歡儲備式學習。因此咱們能夠利用技能映射驗證知識的有用性,經過將知識映射爲技能來驗證(減小)必須學習的知識。直接把多餘的知識刪除、刪除、刪除。

mark

利用應用場景說服大腦。當咱們學習很抽象的技能,很差理解和記憶時,能夠嘗試利用應用場景來講服大腦。例如在學習Redis的5種基本數據結構(如今是6種了)時,就能夠思考每種結構能夠應用在什麼場景?hash能夠用於記錄帖子的點贊數、評論數和點擊數;zset能夠用於記錄熱榜帖子ID等等。

最後

努力吧,騷年,成就卓越的本身

mark

做者:CoderFocus

微信公衆號:

聲明:本文爲博主學習感悟總結,水平有限,若是不當,歡迎指正。若是您認爲還不錯,不妨點擊一下下方的推薦按鈕,謝謝支持。轉載與引用請註明做者及出處。

相關文章
相關標籤/搜索