沒想到真有此書!!!《一個程式員的自我修養》

来源:https://www.cnblogs.com/xll1025/archive/2020/07/07/13263367.html
-Advertisement-
Play Games

點擊藍色“程式員書單”關註我喲 加個“星標”,每天帶你看好文,讀好書! 本文轉自知乎:https://zhuanlan.zhihu.com/p/34994820 最近在看程式員的自我修養 (豆瓣),作者陳逸鶴,一本寫給程式員的思考書,其實市面上類似題材的書也不少,比如我看過的另外兩本內外兼修:程式員 ...


點擊藍色“程式員書單”關註我喲

加個“星標”,每天帶你看好文,讀好書!

本文轉自知乎:https://zhuanlan.zhihu.com/p/34994820

最近在看程式員的自我修養 (豆瓣),作者陳逸鶴,一本寫給程式員的思考書,其實市面上類似題材的書也不少,比如我看過的另外兩本內外兼修:程式員的成長之路 (豆瓣)、程式員必讀的職業規劃書 (豆瓣),我只是後悔自己看的太晚,很多道理明白的太晚,要多看看此類書,給自己尋找點方向感和動力,我也一直在努力踐行書中的一些方法和認識,本文是此書的第一部分內容的歸納,希望對你有幫助,感興趣的朋友可以買來此書詳細學習。

好了,正文開始~~~

當我成為一名IT管理者時,我從更多的程式員身上看到了他們身上的一些特質對其職業生涯所產生的影響;當我開始自學設計,我又從設計大師們那裡得到很多極具啟發性的觀點,而它們對程式員們同樣具有很大的價值;而當我開始寫作,每一篇文章完成後與年輕的程式員讀者們進行交流的過程中,我的想法和觀點又能得到進一步的完善和提升。

寫給年輕程式員的10點啟示

  1. 正確認識自己

相比碼農、程式猿、軟體工程師、張江男、屌絲程式員等等這些網路辭彙,當你把自己看作是一個屌絲程式員的話,那你也可能就是那個衣食不愁,但整天渾渾噩噩、無所追求的屌絲。我更願意用技匠這個詞來形容程式員,就像我給自己起的花名一樣。程式員應該是那些不斷追求更高技術,並有著自己產品夢的工匠。當你通過對自己技術不斷打磨,一次又一次做出那些優秀產品的時候,你會發現自己不再是他人口中的碼農或是屌絲,而更多被稱為了大師、大神,而受到大家的尊重。

  1. 比一般人更加努力

優秀的程式員往往會被同天才或高智商的人聯繫在一起,但我想告訴你,你周圍所看到的那些天才(身邊的優秀程式員)只是在你沒看到的時候花了更多時間工作或者學習而已,當你也堅持這麼做時,你也會變得和他們一樣優秀。

  1. 適時建立個人權威

建立個人權威,這能讓其他人看到你的不同之處,併為你在公司或團隊內部構建起良好的影響力。當然,這一切的前提是你通過不斷努力積累了自己的實力,併在恰當的時候去展現它。

  1. 遵循最佳實踐

技術更新太快,作為程式員,如何才能適應這種變化呢?其實,就像每年都會有新的流行設計趨勢,然而設計的本質和原則卻始終不變一樣。這些最佳實踐或由此衍生出來的框架、工具都是那些富有經驗的程式員通過大量實踐,總結出來的最優秀的軟體開發思想。通過理解和對它們的有效實踐,能夠讓你站到前人的肩膀之上,對軟體開發本身獲得更深入的理解和認識。

  1. 保持好奇心並樂於探索新的事物

優秀的程式員們也往往非常樂於探索那些看似與工作無關的技術。比如,做後端的程式員去學習前端的技能,前端工程師則去學習UI設計,等等,這些雖不會讓他們成為那一個領域的專家,但技術往往是相通的,當你在探索這些新鮮事物的同時,你會發現你原有的技能也得到了提升。

  1. 拋開代碼與人溝通

“緊盯著電腦屏幕,不斷敲擊鍵盤,目光有些呆滯。”這可能是程式員給人的印象。而我所看到的那些優秀的程式員卻都不是這樣的,他們往往興趣廣泛,並且都樂於與人溝通交流。程式員們很容易會忽視與人的溝通,這其實對他們的職業生涯發展是不利的。我很支持那些年輕的程式員們堅持去走技術路線,但這不應該成為你排斥與人溝通的理由。你需要與人溝通來獲得他人的幫助;你需要與人溝通來建立良好的工作關係;當你的能力不斷提升,被賦予更多職責時,你更需要與人溝通來管理好自己的團隊,以及與老闆或客戶進行有效的溝通等。

  1. 要為優秀的人工作

環境對一個人的影響是巨大的,而最可怕的是當你身處其中時,很難意識到你正在變得越來越糟。我之前帶過一些不錯的程式員,他們中的一些人去了一些整體氛圍或環境不是太好的公司。過了一段時間後,再次與他們碰面聊天時,我發現他們的思維、觀點相較之前並沒有提升,有些甚至反而退步了。

  1. 生活、睡眠、旅行

我希望每個程式員都能明白工作、技術、寫代碼這些並不是你存在的意義,而生活才是,你需要懂得生活,並且學會生活。

生活:嘗試有節制和有規律的生活,程式員生涯絕不是一次衝刺,而更像一場馬拉松。

睡眠:很多人覺得睡眠是弱者的表現,他們往往會長時間熬夜,其實我覺得這是這一種惡性迴圈,反而會使你的工作效率變的更低。

旅行:去任何一個新的地方都可以稱之為旅行,讓你發現和感受新的東西,而這些是從電腦屏幕上無法獲得的。

  1. 相信自己的天賦和創造力

每個人的身上都有屬於他自己的天賦和創造力,但它們也絕不是與生俱來的,你需要在生活中不斷地培養和發掘它們。下麵是我覺得一些行之有效的方法。

閱讀優秀的書籍:好的想法絕不是憑空產生的,嘗試從書中尋找那些能激發你創意和靈感的優秀內容。

記錄和收集:嘗試用一個小本子,將你轉瞬即逝的好想法記錄下來,它們可能並不直接有效,但下一個更好的想法可能就是從這些你記錄下來的想法中產生的。

嘗試動手:光有好的想法是不夠的,你需要成為一個有工匠精神的人,通過親自動手去嘗試和實踐,你會不斷從中得到新的創造力。

  1. 如果上面提到的其他建議都對你無效,那麼就請堅持第2點吧,因為它將成為你最大的競爭優勢。

那些程式員們後知後覺的職涯經驗

  1. 你的薪酬與工作量無關

換句話說你是否容易被取代。公司很容易找到一個和你差不多的應屆畢業生,而那些對公司產品非常熟悉,並且起到關鍵作用的老員工,要想替代他們,公司所需要付出的代價及需要承擔的風險就會高得多。所以,不妨擺正心態,正確認識到自己在公司中的位置,努力修煉內功,讓自己變得越來越重要,相信你的薪資也會隨之提升的。

  1. 儘可能持續做一件事

既然你對於公司的價值來自於你的不可替代性,那又該如何有效提升它呢?我的建議是儘可能持續做一件事。這既是指技術上的積累,也是指你能完整或較長時間參與同一個項目或開發一個產品。

技術深度及完整項目經驗的重要性,如果你總是在跟隨那些新出現的技術和框架,那你很難在某一項技術上達到理想的深度;同樣,在一個公司里,如果你總是在更換項目,那你也很難提升自己的價值。參與10個項目,不如完整參與一個項目。持續做一件事是要你把每一件事做透、做好,而不是蜻蜓點水,淺嘗輒止。

  1. 唯一不變的就是變化本身

作為程式員,我們又應該如何應對這些變化呢?我想說,你很難去改變所處的環境,或是阻擋那些變化的大趨勢。你所能做的恰恰是培養自己持續學習的能力。

  1. 你的聲譽非常重要

除了那些經常掛在嘴邊的誠實守信、踏實肯乾等之外,有一點特別重要,那便是嚴謹。因為它往往是判斷一名程式員是否具備優秀潛質的重要因素。嚴謹的程式員對於分配給自己的任務會認真理解,對於自己的產出會仔細檢查,這些都能大大減少工作中的出錯概率,給團隊或公司中的其他人留下良好的印象。

  1. 理解溝通的意義

當我們沒有對問題有深入理解的時候,我們很難寫出正確的程式來,因此我們需要向用戶虛心求教,去真正理解他們所希望解決的問題。

  1. 你的右腦將是你成功的關鍵

談到那些我們眼中非常成功的技術大牛、IT高管,都會出人意料地將一些非技術能力作為自己獲得成功的關鍵。比如,編寫文檔或做PPT的能力、演講的能力、說服他人的能力,等等。我雖然並不完全贊同最優秀的程式員不寫代碼這種觀點,但我確信你的右腦將會是決定你能否成功的關鍵。

  1. 不要輕易說簡單和不可能

年輕程式員們不應該輕易做出那些過於絕對的判斷,應儘可能去使用科學的方法進行分析和論證,然後用不易被人誤解的方式進行有效的表達,這樣你提出的觀點才能讓大家感到信服。

  1. 你不應該總是單打獨鬥

如果你真的希望做出一些具有影響力的東西,那麼光靠個人是很難實現的。你需要和團隊中不同角色的人進行合作,有時候你需要說服別人,有時候你則會被別人說服。

  1. 讓你的能力顯而易見

那些優秀的程式員無時無刻不在體現他們的能力,從輕鬆地解決技術難題,到會議上提出被一致認可的解決方案,以及他們寫出的那些優雅且完善的代碼,這些都讓他們顯得與眾不同,仿佛是天生的優秀程式員。但我想說,他們其實都是那些努力並使用了正確方法的人。程式員的能力來自於大量的編碼實踐,以及持續學習的能力和勤於思考的習慣。任何自作聰明,不懂裝懂,以及投機取巧在明眼人看來都只會是東施效顰,顯得如此微不足道。

每個程式員都應該瞭解的一件事
我曾經接觸過一些IT高管及行業的技術大牛,當私下聊起他們是如何變得如此出類拔萃時,他們大多會以自嘲但又略帶得意的語氣來講述他們的那些獨門秘籍。

我的文檔寫得特別好。

我的口才很好,總是能成功說服別人。

我的PPT做得非常棒,是公司里數一數二的。

我寫過幾篇很受歡迎的技術文章。

我熱愛開源文化,併在社區里很有名氣。

……

我發現,這些普通人眼中的大神們很少會提及自己的技術有多牛,反而更多地把功勞歸於那些看似與技術毫無關係的能力。大家千萬別誤以為他們只是一群華而不實,靠著一些小伎倆往上爬的小人。完全不是,而且我敢向你保證,他們中的每一個人在擔任程式員或負責其他技術工作時,同樣都有著非常出色的技術能力和優秀的工作表現。但為什麼在他們眼中這些還不足以使他們達到現在的高度,反而是那些不起眼的寫文檔、做PPT、演講等這些技能使他們能夠在一次次競爭中勝出,併成為了我們中的佼佼者呢?

其實在我看來,他們所謂的這些秘籍,都可以歸納為一種能力,那就是自我營銷

一名程式員如果能夠儘早意識到自我營銷的重要性,並有意識地鍛煉和運用這種能力,那將對你的事業產生有益的幫助。

那麼對於程式員們來說,又有哪些能夠提升自我營銷能力的方法呢?下麵便是我的一些建議。

  1. 讀與技術無關的書

我建議只買一些經典的技術書籍來幫你打基礎,然後從網上去學習一切新的東西。我尤其鼓勵大家去讀那些與技術無關的書籍。程式員不善於自我營銷,其中一個重要原因是他們自身所掌握的知識體系太過於單一,很難跳出技術範疇與人交流,並引起別人的興趣和認同。你可以讀任何歷史、經濟、人文、藝術類的書籍,它們都能夠幫助你豐富自己的知識和思想,使你變得更加全面和完善,而這反過來,又能幫助你建立信心。

  1. 會寫文檔

文檔可能是你完成代碼編寫後一個最佳的展示機會。當代碼實現了它的功能之後,就很少有人會再去看它,除非它出錯了。但文檔被閱讀的概率卻大得多。從一個文檔中,我們可以看到關於作者的很多東西,思路是否縝密,邏輯性是否強,設計方案是否優秀,等等。可以說,文檔質量的高低是衡量一名程式員是否優秀的重要標準之一。

  1. 學會包裝

說到包裝,人們往往會產生一種不好的感覺,把它與虛偽、假的東西聯繫在一起。其實,我所說的包裝應該包含兩層意思:

知道什麼是美的(優秀的)。

精心製作。

作者舉例一個普華永道的高級經理通過一個長達114頁的非常精美的PPT而贏得了保監會關於償付能力改革的會議。

在日常工作中,我經常發現身邊的程式員很難寫出美觀整潔的文檔或PPT來。這一方面與我們從小缺乏美學教育有關,而更重要的往往是他們並沒有真正用心去製作它。其實,我們可以通過尋找一些優秀的文檔示例來學習如何製作優秀的文檔,這其實並不困難。知道什麼是優秀的,然後像寫你的代碼一樣用心去製作就行了。

  1. 嘗試多講

講話一直是很多程式員的硬傷,當然這也曾是我的硬傷。根據我的經驗,你需要跨過以下兩個障礙:

敢說。

讓說的和你想的一致。

5.建立社會化聯繫

一個完全封閉的程式員一定不是一個優秀的程式員。優秀的程式員往往願意並善於與他人交流,分享自己的經驗和想法,併在交流中獲得有益的東西。這樣做有很多好處:

通過這些社會化的活動能夠使你的想法和技能更加完善。

能夠使你建立權威,你的技術博客,在一些社區上的技術問題解答,以及你的開源項目等都會使人認為你是這方面的專家。

同樣,你也可以獲得他人的幫助,來解決棘手的難題。

你可以找到與你有相同興趣的人,一起做有趣的事情。

你的社交網路將因此擴大,這意味著你所獲得的機會將會更多。

程式員的煩惱

  1. 是否還應該留在一線城市

一切都能為你的生活賦予意義,並讓你感到更加快樂的話,那你還是應該更堅定地留下,而非選擇離開。

  1. 小公司做的事情太繁雜了

時常會說“雜事不雜”,雖然看著被很多與技術無關的事務纏身,但它們對你來說同樣具有意義。你從中可能獲得溝通能力、管理能力、建立更廣的人脈,在企業內部建立影響力,等等

  1. 創業公司中的危機感

無論成功與否,經歷一次完整的創業都將讓你受益匪淺。你將學到很多在大公司僅僅做一顆螺絲釘所學不到的東西。雖然在此過程中,你一定會有挫敗感、焦慮,但或許堅持一下就會看到曙光。

另外一點我想說的是,創業的過程將讓你獲得不同的眼光。創業大多是在一個新的領域中進行的,你不應僅僅專註於公司所使用的那些技術,而更需要通過深入理解這個新的領域,去獲得不同的視角和眼光,因為它們也會在未來成為你的核心競爭力。

  1. 技術單一,想學習更多

我總是很鼓勵身邊的程式員們去涉獵不同的技術甚至領域,但前提是你必須首先對某一門技術做到精通。技術是需要深耕的,深入學習一門主流的開發技術,並不斷提升編程思維,比對很多技術棧都淺嘗輒止要好很多。因此,如果精力有限不妨先學好一門技術,你會發現之後再去學習其他技術會變得容易許多,因為它們之間往往都是相通的。

  1. 我想自學編程,應該學哪一門語言?

如果你真的沒有任何思路,只是希望你學的這門編程語言能夠有用,我的建議是JavaScript,因為它看起來是唯一可能在未來所有領域內得到應用的編程語言,從我們的移動設備,到傳統的Web應用,再到伺服器端開發甚至是硬體編程,它幾乎無處不在。

  1. 大專學歷,能進大公司嗎?

全日制本科幾乎成了所有內部職位的最低要求,所以學歷上的缺失確實會成為你進入大公司的障礙。當然還是有例外的情況:

通過內部員工的推薦。

通過外包公司進入後,再轉為內部員工。

努力成為某一領域的專家,或者建立個人影響力。

如果你還是一名大專在讀學生,那麼我希望你不要過早焦慮,嘗試問問自己除了學歷之外還有什麼讓你能夠脫穎而出的東西?是否有自己的個人項目?是否為知名的開源項目貢獻過代碼,甚至只是參與編寫文檔?是否通過寫博客闡述過自己的獨到觀點,並得到大家的認可?在哪家公司實習過?這些都可能抓住雇主的眼球,從而彌補你在學歷上的不足。

給年輕程式員的職涯建議

1.儘早確定你想做的事情。儘早確定自己想做的事情——你的職業目標,意味著你可以獲得比其他人更多的時間去努力。

2.一萬小時定律

3.提高工作效率。有以下兩點建議:

加快工作節奏

藉助工具完成工作

4.簡明的溝通方式

5.持續學習

6.學會控制情緒

7.讓最優秀的人圍繞在你身邊

8.善於歸納與表達

9.掌握英語

10.睡眠使你更強大

— 【 THE END 】—

本公眾號全部博文已整理成一個目錄,請在公眾號里回覆「m」獲取!

傳說中最經典的外包案例

程式員竊取「傳奇霸業」源代碼:被判 8 個月、緩刑 1 年、罰 2000 元!

說說程式員讀書這點事兒!長文慎入

代碼整潔之道:程式員的職業素養

3T技術資源大放送!包括但不限於:Java、C/C++,Linux,Python,大數據,人工智慧等等。在公眾號內回覆「1024」,即可免費獲取!!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、Django簡介 Django是Python語言中的一個web框架,Python語言中主流的web框架有Django、Tornado、Flask 等多種。Django相較與其它WEB框架,其優勢為: ​ 大而全,框架本身集成了ORM、模型綁定、模板引擎、緩存、Session等功能,是一個全能型框 ...
  • ## Java 集合框架 學習目標 會使用集合存儲數據 遍歷集合,取出數據 掌握每種集合的特性 學習方法 學習頂層!通過頂層介面/抽象類的共性方法,所有子類都可以使用 使用底層!頂層無法創建對象,需要使用具體的實現類創建對象 框架圖 第一章 Collction集合 一種工具,放在java.util ...
  • 前言 上一篇分析Mybatis是如何載入解析XML文件的,本篇緊接上文,分析Mybatis的剩餘兩個階段:代理封裝和SQL執行。 正文 代理封裝 Mybatis有兩種方式調用Mapper介面: private static SqlSessionFactory sqlMapper = new SqlS ...
  • 申請開放平臺 ,並綁定公眾號和小程式 小程式授權登錄獲取unionID 公眾號關註時獲取unnionID,並查詢是否unionID是否存在,然後存在,更新公眾號openid信息,不存在則新建 參考文檔: 公眾號unionID機制: https://developers.weixin.qq.com/d ...
  • 案例故事:Android手機音視頻圖片解碼播放測試,有將近上千條用例, 包含了不同的音視頻圖片文件,每條用例都至少對應了一個測試資源文件。 整個測試資源倉庫,將近100G,一些視頻比如High Profile 5.2規格的,一個就500M, 如果每次測試都需要adb push導入這麼多測試資源文件到 ...
  • 最近新開發的項目中需要使用到國際化功能,項目是基於SpringBoot來進行開發,藉此機會整理一篇關於SpringBoot實現國際化i18n功能的文章,分享給大家。 依賴引入 在Spring Boot的web項目中無需引入其他特殊的配置,預設的web starter中便已經涵蓋了所需的基礎組件。對應 ...
  • 1.file類的方法 1.getName():獲取文件名 2.getPath():獲取文件路徑,設定是相對路徑得到的就是相對路徑,絕對路徑同里 3.getAbsolutePath():獲取文件絕對路徑 4.getParent():獲取文件父類路徑 5.exists():判斷文件是否存在 6.isFi ...
  • 其實spring boot攔截器的配置方式和springMVC差不多,只有一些小的改變需要註意下就ok了。下麵主要介紹兩種常用的攔截器: 一、基於URL實現的攔截器: public class LoginInterceptor extends HandlerInterceptor{ /** * 在請 ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...