1. 程式人生 > >知行:程式設計師如何保持二者的平衡

知行:程式設計師如何保持二者的平衡

網上並不缺少告訴你 “採取行動” 的內容,很大程度上,它們希望你忘記學習並專注於行動。這些帖子的出發點也許是善意的,但並非事情的全貌。

光學習不行動是沒用的,但只行動不學習同樣如此。程式設計師是知識工作者,這意味著學習是我們工作的必要部分,然而這需要我們去創造學習機會,關鍵在於平衡。

如果你屁股一坐在那不停的收集文章卻從不使用這些資訊,那麼你就需要偏向行動;但是,如果你盲目的進入行動,你也不會走得太遠。

曾經多少次,你為那些無知且魯莽的程式設計師創造的專案進行善後清理,收拾殘局?他們可能不僅僅是缺乏技能,也可能是不願意學習。不熟練的程式設計師也許會給團隊帶來負面的生產力,特別是那種不假思索就大幹快上型別的程式設計師。

學習和行動是相輔相成的。學習太少會導致效率低下和低質量的軟體,行動太少,則沒有結果或結果微乎其微,忽略不計。作為程式設計師,為了最大化你的成效,需要在獲取知識和使用它們做有用的工作之間取得平衡。

在這篇文章中,你會學會這種平衡的藝術。最後,你將會擁有一些具體的策略來改善你的工作與智識。

學習何以重要

首先要提醒大家,我們只有這麼多時間。不僅是說一天我們只有 24 小時,而且我們也只有有限的一點點富有有效、保持專注的時間。即使你能把所有 16 小時的時間都花在開發軟體和學習上,但在那之前你恐怕早就精疲力竭了。

大多數高效的作家和藝術家每天只花幾個小時工作在他們的手藝上,即使是那些技藝超群之人,每天也只花幾個小時進行刻意練習。在這兩種學習中,你所能投入的精力是有限的 —— 同樣,行動亦如此。

這一限制強調了在你使用時間時對效率的需求,面對生活中的所有需求,多數人都很難找到他們一天內能工作的最大有效時間。即使你能很好的管理你的時間,接近最大的極限,你仍然需要注意如何去分配時間。(這是學習的主要好處之一,知識可以使你更有效率)

對給定的程式庫或程式設計棧知道的越多,就越能繞過問題,你也就不需要花那麼多時間在 StackOverflow 上 “釣” 答案。

此外,學會如何管理時間,清晰編碼,並更好的溝通,可以使你在其他方面更有效率。用對話來解決複雜的問題通常比用程式碼更快。我有時會稱之外 “外交決議”,這是我最喜歡的修復 Bug 的方法(譯註:Bug 有時就是不同人對同一個表象的不同理解)。你作為程式設計師碰到的許多問題都是由於缺乏清晰性導致的。

學習也會擴張你的技能集。對新技術的瞭解意味著你可以構建不同型別的軟體,這意味著你能從維護它們到架構它們。知識擴充套件了你的能力。

技術總是處在變化之中,我們需要花時間瞭解行業的當前趨勢來規劃我們的職業生涯,而軟體開發就是這樣一種緊跟變化的職業。

程式設計師的努力奮鬥使我想起了《愛麗絲夢遊仙境》中 “紅桃皇后” 的一句話:

親愛的,在我們這個地方,你必須儘可能快的奔跑,才能留在原地;如果你想去任何地方,你必須跑得比那快兩倍。

我們行業發展很快,我們需要保持學習,否則我們將被拋下。

行動的重要性

在前文中,我批評那些呼籲行動而不是學習的人,但這並不意味著行動是不重要的。行動是必不可少的。

你擁有多少知識並不重要,假如你都不使用它,那就是毫無意義的積累。學習的目的是改進行動,而不是在程式設計師的知識面上獲勝。

你也許讀過數百本程式設計書籍,但如果你晚上和週末都窩在沙發上追劇,而不是去建立你的業餘專案,那讀過的這些書都無關緊要了。如果你的工作中都一直使用相同的技術、技巧和實踐,那也無所謂了。只有當你吸取了學到的所有教訓,並試圖將其應用到現實世界中時,你才能取得進步。

行動鞏固學習,行動也觸發回憶,這是學習的關鍵部分。例如,也許你在網上看過二十多個視訊課程,但這並不重要:你不會了解一項技術,除非你真正用它來構建某種東西。如果我沒用某個技術構建過至少算是 Demo 的專案,我是絕對不會放在我的簡歷上的。

人們並不關心你知道些什麼,人們只關心你能做什麼。知識是有助於行動的,但它不應取代行動。別做一個受過高等教育的電視迷,把你辛苦習得的知識運用起來吧。

平衡方法

在這點上,你應該理解平衡的重要性。現在,你將學習一些具體的策略,將這種平衡帶入自身的生活。

第一個策略是成為一名更高效的學習者。花點時間學會如何學習,學得越快,就越能騰出時間來採取行動。作為程式設計師,學習是我們所做工作的重要部分,花時間學習如何學習將給你的職業生涯帶來巨大的紅利。

除了學習如何學習之外,在你的日程中找出額外的時間,通過把一些跑腿的差事和其他 “死” 時間與學習時間合併起來。你沒法用這些時間來編寫軟體,所以你可以自由的利用這些時間來學習。我在通勤時間聽播客和有聲書,做家務時我也會聽。在過去的幾年中,我用這種方式已經消化了數百本書,要不還真沒那麼多時間去讀。我在排隊時也閱讀文章,這些時間通常會被浪費掉,讓它們成為有用的學習時間。

提高整體效率的另一種方法是更加小心地處理所消費的資訊。避免時間被社交媒體和低質量的資訊娛樂所吞噬,很多提供這類資訊的垃圾網站會成為你時間的黑洞,而給你的生活帶來的價值微乎其微。你不僅節省了時間,也減輕了壓力。大多數 “資訊垃圾食品” 站都是依賴於觸發壓力反應。壓力會降低你的創造力,讓你更難建造東西。限制垃圾資訊,會給予你更多時間去學習和行動。

在你開始學習一個主題之前,要知道你需要從中得到什麼,弄清楚你要用這些知識採取什麼樣的行動。例如,假設你對虛擬現實(VR)開發感到好奇,記下來你想用這些知識做什麼。你是想要構建一個很酷的 VR 應用呢,還是想在下次和你的開發小夥伴談論 VR 時能有些有趣的話題可說?相應的,根據不同的目的調整你的學習計劃。如果你只是想跟上 VR 技術的最新發展,你可以去訂閱一些相關的部落格,到此為止也就夠了。通過只從特定資源和主題獲取相關的內容,你能夠節省大量的時間。

另外一個節省時間的方法是練習 “即時” 學習。即時學習,是指你花時間學習的東西立刻就會用在當前的專案或目標上。與其積累大量可能沒什麼用處的技能,不如把時間花在學習與當前專案相關的事情上。把你的學習和行動直接繫結起來,這種方法在那種 “潮流湧動” 的軟體開發領域尤其有用,就像 JavaScript 的世界。

當你在創造一些東西時,定期評估什麼樣的資訊會讓你進展更快。當你是在胡亂地擺弄一個問題而非用你的頭腦解決它,就要特別注意了,這時候,看看書可能比用頭砸鍵盤要容易得多。

最後,在學習和行動之間取得平衡的最好方法就是同時做這兩件事。每當我學到一些東西,我就把它和某個專案關聯起來。這可能是一些公開的東西,比如部落格文章或者技術演講,或者使一些私有的東西,比如參考實現。

總而言之,你不會真正瞭解一項技術,直到你用它來建造了一些東西。一定要把你的學習和一個專案關聯起來,才會真正把知識烙印下來。

知行合一

學習和行動是同一枚硬幣的兩面,為了獲得最好的職業生涯,你要二者兼顧。

在學習和行動之間走鋼絲是很困難的,但有幾種策略是可以做到的。從如何學習有效的學習,到關聯學習與行動,你職業生涯的兩個方面便能得到平衡。

首先,坐下來考慮一下你的學習計劃。弄清楚你想做什麼,你需要什麼技能才能達到目的。然後為每一項技能安排好學習計劃,把計劃滲入到一些專案中以加強你的學習。

未來,你會感謝當下的你自己的。


作者:Dustin Ewers
日期:2018-10-12
原文:How to Balance Knowledge and Action


寫點文字,畫點畫兒,記錄成長瞬間。
微信公眾號「瞬息之間」,既然遇見,不如同行。