程式設計師自我發展之路:從態度到方法

技術瑣話發表於2022-12-05

程式設計師自我發展之路:從態度到方法

三週前,正值手頭事情忙得不可開交之際,接到右總邀稿,要我談談程式設計師發展的幾條出路。我思考再三,索性趁此機會乾脆行文一篇,把自己多年來給團隊的嘮叨整理整理,也算不負他人之託。

事先宣告,本人並非專業的職業規劃師,也不喜歡給人的職業生涯出謀劃策,這裡所寫所言只不過是一位經歷還算得上豐富的老程式設計師的所見所得。各位只需看看就好,若能引起共鳴,那更是不勝榮幸!

選擇大於努力?

有段時間經常在朋友圈內看到類似“選擇大於努力”的論調,甚至看到不少朋友還不斷的轉發和點贊。一開始我受到影響也心有慼慼焉,但後來覺得似乎哪裡不對:

  • 如果沒有豐富的閱歷和經驗做支撐,根本不可能做出很好的選擇,而前者不會從天而降。

  • 有的選擇機會是有門檻的,不努力的話,連門檻都達不到。

  • 一目瞭然的選擇也不太可能是好選擇,因為大家都會去選它,自然會引發激烈競爭。

  • 選擇並不意味結束,它只是開始,在執行過程中不全力以赴,也是枉然。

  • 退一萬步,就算有貴人相助,但除非含著金鑰匙出身,要得到貴人的認可和相助也不是件易事。

鑑於以上幾種原因,不努力,大機率也會導致不會或很難有好選擇。可以說,不論走哪條路,發展的起點都要努力為先。之後,在執行過程中,按照自己的興趣和機緣會各自走上不同的道路。

儘快確定方向

但是,光靠努力並不能讓你就一定得到很好的結果,如果沒有目標或方向,那就是白費氣力,心中的陰影面積會越來越大。所以呢,你第二個要解決的緊要問題就是儘快確定方向。但是,你不要指望這個問題可以一蹴而就,半個小時就能搞定。作為人生三大問題之一,到哪去,只能“listen to your heart”。放在程式設計師發展之路這個背景下,我的建議:

  • 多跟長者交流和學習

  • 多跟朋友交流和學習

  • 多跟不同背景的人交流和學習

  • 多看看行業新聞和動態

  • 多看看圖書市場的出版動態

  • 多看看招聘網站上的職位動態

基於這些資訊和資料,我相信你也不會是木頭,沒有任何感觸和想法。有了想法,就嘗試,但不能一遇困難就退縮,否則你將很難判斷出是自己能力不足,還是因為確實不喜歡這個方向。如此往復,即是死迴圈,永遠原地打轉,無法升級。找方向的過程是一個不斷嘗試和漸入佳境的過程,在這個過程中多交些朋友,多參與些社群,他們將會成為你的良師益友和支撐下去的力量。

環境會影響成長

程式設計師自我發展之路:從態度到方法


環境,也是一個不得不說的因素。孟母三遷已經說明了環境的重要性,這裡我也就不再展開討論。簡單的說就是:環境會影響你的成長。在我看來,環境可以用這樣的三元組來表示:(城市,公司,團隊)。其他更細微的環境,如辦公環境,不在此處討論之列。我認為好的環境包括下面的要素:

  • 機會多,包括:升職機會、培訓機會、工作機會等

  • 氛圍好,包括:積極的學習氛圍,融洽的人際關係,公平的競爭機制等

  • 有將來,包括:朝陽行業,快速賽道等

這裡我沒有列出加班或薪水之類的因素,是因為它們根本就不是決定你是否成長和發展的關鍵因素,並不值得作為首要考慮的條件。當然,不是所有人都那麼幸運地可以身處不錯的城市、優秀的公司和好的團隊,三元組的順序則可以作為你選擇的優先順序,即:城市 > 公司 > 團隊。

好的方法 = 如虎添翼

有努力的意願、確定了明確的方向、選擇了好的環境,這些已經讓你站在了一個比較高的起點,但如果擁有好的方法,則會讓你如虎添翼。好的方法應該是可以習得的,而且能夠讓你快速入門,並不斷提升。所幸,我們並不需要自己去發明所謂的“好方法”,因為業界已經有很多值得學習的方法可供借鑑和拿來即用了:

  • 敏捷方法,熟悉敏捷開發的朋友可能會覺得很奇怪,覺得敏捷方法跟個人的修煉的成長關係不大。如若有此印象,只能說你的想法太侷限。敏捷方法本質上是一種杜絕浪費的經驗實踐,一種發現浪費並消除浪費的思想。既是如此,為何不能將其應用於個人的學習和成長之中呢?尤其是其中的 TDD ,本身其實就是先樹立目標,接著快速實現,然後不斷最佳化的實踐。將其應用於新知識的學習過程中,不僅可以學習實際的知識,還可以鍛鍊對新知識的洞察和理解,否則光樹立目標和如何驗證都做不成。

  • 設計思維,相對於敏捷方法而言,設計思維更側重於做什麼,藉助於更優的溝通技巧和手段、快速地原型設計和驗證,迅速拿出一個可行的方案。這也是為何我個人認為設計思維在前,敏捷方法在後的原因。比較而言,敏捷方法更偏目標確定之後的工程實踐,設計思維更偏在正式工程之前找到最優方案。利用設計思維,有助於鍛鍊所謂的“移情”能力,這是很多成功者具備而大部分程式設計師不具備的能力之一。

  • 視覺化表述,一圖勝千言,而且做一個會畫畫的程式設計師應該很酷。

  • 系統思維,整體全面地看待問題,很多人都希望如此,但實際中做到的很卻不多。大多數原因都是雖然對此有認識,但從沒有系統性地學習和掌握這方面的理論和工具。彼得聖吉的《第五項修煉》的江湖地位已不再需要過多描述,同時我還推薦一本實操性比較強的《系統思考》(丹尼斯舍伍德著)。雖然這類書籍被劃分到管理類,但它們本質上屬於思維改造類資料,我建議廣大程式設計師在敲程式碼之餘可以去看看。

相比起行業技術,以上方法是經得起時間考驗的,並不會出現一朝被行業拋棄的情形。掌握這類方法將深刻改善你的認知和見識,相比起零星地碎片化學習,這些知識值得靜下心來專門學習。

體驗的重要性

最後,我想談談【體驗】的重要性。如果你想提升你的見識,不去體驗生活,幾乎不太可能獲得真正有用的體驗。這也是陸游所言:紙上得來終覺淺,絕知此事要躬行。關於體驗,作為過來人,我看到和做過的:

  • 參與社群,融入社群,有機會就分享,這是一個思想交流的機會。

  • 寫文章、翻譯文件,透過寫作來整理思路,形成自己的觀點,不要人云亦云。

  • 參與開源專案,體驗不一樣的協作模式和開發方式。

  • 對於公司內的機會,也不要錯過,應該將它們作為你的首要目標,不要捨近求遠,先去看外部機會。

修煉,就是折騰自己,在這個過程中才能真正成長。

總結

最後總結一下吧。

在這篇文章中,我既沒有像其他文章一樣去告訴大家程式設計師有哪些職業發展方向,如前端、後端和架構師等;也沒有談你的人生規劃,如是創業、做個自由職業者,還是打工?這是因為我認為外面已經有很多文章談到了這些,再寫下來也沒什麼意思。

而且,我覺得授人以魚不如授人以漁。你告訴他的這些所謂的職業規劃和方向,只不過是當下環境下特有的職位和方向而已,未來可能不復存在。況且,提前說明這些,反而有可能事先將你的思維方式侷限住,不如干脆講些“元知識”,然後由你自己去決定自己的路如何走。

整篇文章先從態度(即努力)說起,再言及“方向”,進而談到“環境”、“方法”和“體驗”,所有這些都是我認為對於個人成長和發展非常關鍵的要素和條件,透過這種層層遞進地說明,希望能起到為一些還感到迷茫的朋友解惑的作用,謝謝!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31562044/viewspace-2652270/,如需轉載,請註明出處,否則將追究法律責任。

相關文章