1. 程式人生 > >《程式設計師的自我修養》筆記

《程式設計師的自我修養》筆記

本書作者:陳逸鶴

以下是我讀此書時作的一些筆記,當然書中還有很多值得參考的想法,就不一一列舉了。

  1. 一萬小時說法

    ☆ 這個說法很普遍了,它再次提醒了我如何去做一個領域的專家。如果平均每天八小時在這個領域上,那麼一年300天=300 * 8 = 2400,保持這種學習激情在上面,五年內就可以成為專家了,我算了算自己在這個領域投入的時間(主要學習時間),除去我沒有怎麼寫程式碼的時間,我從14年開始寫程式碼到現在18年,有五年多的時間,我每年至少有150 * 8的學習時間大概也已經有了5000小時左右了。而我最近的花在上面的時間則更多,約莫還需兩年就可完成10000小時。

    我覺得這個說法很對,還有它至少提供了一種可靠的數字,不過我們要非常注意這個時間,是有效的成長時間或學習時間。

  2. ◯ 生活、睡眠、旅行

    生活:嘗試有節制和有規律的生活,程式設計師生涯絕不是一次衝刺跑,而更像是一場馬拉松。你需要合理規劃自己的時間分配(學習、閱讀、寫程式碼)並持之以恆地去做。另外不要忽視自己的家庭,不要將自己隔離起來,做一個快樂有愛的程式設計師。

    睡眠:有很多人覺得睡眠是弱者的表現,他們往往會長時間熬夜,其實我覺得這是一種惡性迴圈,反而會使你的工作效率變得更低。充足的睡眠往往能使你更有效率地投入到新的一天的工作中,你也會變得更有創造力。請記住,保證充足的睡眠將使你變得更加強大。

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

    ☆ 身體是革命的本錢,而工作只是生活的一部分,這兩點不能本末倒置。旅行會使自己的身心放鬆和愉悅,是非常有必要的。

  3. ◯ 你的薪酬與工作量無關

    你的薪酬其實取決於很多因素,技術能力、經驗資歷、工作量等,但最本質的卻是,你對公司是否重要,換句話說你是否容易被取代。

    ☆ 這句話要看從怎樣的角度看,如果單從當前的一份工作來看,這個或許是對的,但我想說工作量與你的下一份工作有關,你當前的工作量會對你本人的技術積累有幫助,那麼下一份薪酬就有可能因此而提升。

  4. ◯ 你的聲譽非常重要

    聲譽對於一名程式設計師來說非常重要。我看到的那些優秀的程式設計師都有一個共同點,那就是他們在團隊和公司內部都有著良好的聲譽,而這反過來幫助他們在職業生涯取得一個又一個迭代式的發展。

    ☆ 我非常認同這點,併為此努力。

    有一個我非常敬佩的同事,他寫的程式碼從大的方面看,架構的非常不錯,從小了看又非常優雅,我以他為榜樣去努力實踐,並從開原始碼中學習優秀的程式碼規範。

    而現在,我再看那些優秀程式碼,我覺得非常好接受,並覺得自己程式碼也同樣優雅。

  5. ◯ 不要輕易說簡單或不可能

    ☆ 這個不只是就程式設計師來講,我覺得在做人都應該注意這點,我們要勇敢說不,但不要輕易說,這是兩種不同的態度。一種是表現沉穩,而另一種則像是輕浮。

  6. ◯ 你的能力顯而易見

    ☆ 我可以解決工作中碰到的所有問題,或者提供了一個可行的方案,而且我樂於去解決問題。但在從前我則希望別人來幫我解決問題,這是近幾年的對於我的重大轉變。

  7. ◯ 技術深度夠嗎?

    ☆ 我得承認我的技術廣度還行,但我的技術深度是不夠的。我將花更多的時間在技術深度上。

  8. ◯ 讀與技術無關的書

    ☆ 這點非常認同,事實上本書《程式設計師的自我修養》就與技術本身關係不大,它是作者的從業經驗之談,無所不包,但它沒有提及具體的技術細節,但我相信它對某些方面有欠缺的程式設計師的幫助會是很大的。

    讀與技術無關的書,會拓展自己的認知,用該書中的話還可說是鍛鍊了我們右腦,還有一個詞叫觸類旁通。

  9. ◯ 會寫文件、學會包裝

    ☆ 近兩年我著重練習自己寫文件的能力,這不僅是一種包裝,還可以提升自己對已知知識的認知,因為要把它寫出來,我們自然會想辦法將它表述清楚,從而對知識進行總結提煉,在此過程中我們還會學習更多,通常的練習方法是寫文章,寫文件,畫圖。

  10. ◯ 增量編譯和部署

☆ Groovy我使用過,但不熟悉,Gulp用過。

  1. ◯ 參考領域驅動設計的思想

  2. ◯ 程式設計師也該懂得“這樣就好”

    比如,該使用什麼樣的架構,採用哪種技術,在這個功能中使用什麼設計模式,採用何種快取策略,等等。這些都需要我們根據當時的環境、資源、使用者等要素做出恰當的選擇。與其提供很多功能而終端使用者始終覺得不好用,倒不如做一個能真正幫助使用者解決問題的功能。

    • 不盲目使用新技術:新技術意味著風險和不確定的代價。
    • 避免過度設計。
    • 不在專案中技術鍍金:技術鍍金指的是開發人員在專案開發中過於追求技術的完美性,試圖在技術上鍍一層完美的金殼,導致軟體開發工作量加大。

    ☆ 這幾點值得多留意,因為它們的界限容易模糊。

  3. ◯ 程式設計是為了留下痕跡

    我似乎又一次理解了程式設計的意義,但我明白未來的某一天,我一定還會問自己同樣的問題——為什麼要程式設計,希望到那個時候自己還能是那個熱愛程式設計,有著一顆匠心的“技匠”……

    ☆ 非常贊同!能留下痕跡是很難的,留下的東西還能被後人使用就是值得自豪的事情了,我們常見的就有書籍、電影、字畫,這些都是人的追求,而這些都是一個人留下的痕跡,留下痕跡同樣是開原始碼的魅力之一。

  4. ◯ 為什麼你應該讓你的孩子儘早學習程式設計

    • 學習程式設計能讓孩子們變得更好
    • 學習程式設計非常簡單而且快樂
    • 對學校教育有很好的促進作用
    • 更好的適應未來的科技社會

    ☆ 我可以教我的孩子程式設計,但我更看重對他們的素質教育,因為網路上有太多不良的資訊,這也許是一把雙刃劍。

  5. ◯ 因為“美”而學習設計

    ☆ 我在開發一款小應用,雖然用Ionic解決了一部分控制元件的樣式問題,最終我不得不用一些好看的封面,但前期就自己使用就將就吧。

一天內讀完此書,感覺就像是和一個前輩在咖啡館聊天,前輩向我談到他的從業經驗,並且和我談他對生活的理解,對未來程式設計師的預言,對美的理解。而我作為一個也已經在職場中工作幾年的人,對前輩的許多想法表示贊同,同時又心懷感激前輩能這樣無私,他向我坦誠的介紹了他的技術之路,創業踩了什麼坑等等,無一不是對豐富我的見識有幫助。非常感謝!

相關推薦

程式設計師自我修養的那些事兒

本篇部落格主要是:程式設計師的自我修養—連結、裝載與庫的一些學習筆記與心得。 1、首先得注意最大的坑:這本書基於32位系統講解,因此跟著書本的例子操作一遍的時候,記得要在32位的系統上進行,否則可能出現以下錯誤:Linux ubuntu 14.04 x86_64平臺 gcc編譯錯誤 Error:

關於《程式設計師自我修養》中提到的裝載方式

w6r559詬竿仲凡市閹《http://baobao.baidu.com/question/84d5ae2b2045cb2e1d6905e443eceb01?nV》 4740fb鞘倜猛俜春付《http://baobao.baidu.com/question/9e58cdb8a

《瘋狂Java程式設計師基本修養筆記(1-5)

第一章: 1. 陣列初始化的兩種方式: 靜態初始化:初始化時由陣列顯式指定每個陣列元素的初始值,由系統決定陣列的長度。 動態初始化:初始化時程式設計師只指定陣列長度,由系統為陣列元素分配初始值。

程式設計師自我修練—提高寫程式碼的能力

首先讓我們看一看剛入軟體公司會出現的情況: 1. 你可能會常常發現,寫了一段程式碼後,編譯程式時是一大堆的出錯 (原因:語法不熟) ──別擔心,這是每個程式設計師必須經歷的事,這時候你就需要更大的耐心及細心, 對每一行程式碼進行仔細人閱讀並改正,這個很重要,這可以培養你的理解程式碼能力,

程式設計師自我提升的網站以及簡介*

       對於程式設計師而言,加油站當然是優秀的學習網址,以及一個能無限“偷窺”資源的優秀網址~~~ 下面總結了一些我找到的以及認為還不錯的學習網站,並且會不斷的更新。敬請關注...... 1.CSDN-專業IT技術社群:https://www.c

《黑馬程式設計師》java筆記->集合礦建的由來,Collection介面,迭代器

------- android培訓、java培訓、期待與您交流! ---------- public static void main(String[] args) { /** 集合:* 1,用於儲存物件的容器。* 2,該容器的長度是可變的。* * 集合和陣列的區別?*

程式設計師自我介紹——英文版

Thank you for giving me this opportunity for this (phone) interview. My Chinese name is XXX and you can call me XXX which is my English n

黑馬程式設計師 C#學習筆記⑥ 三層架構基礎實現員工資訊管理

---------------------- ASP.Net+Unity開發、.Net培訓、期待與您交流! ---------------------- 三層架構定義 1、表現層(UIL):通俗講就是展現給使用者的介面,即使用者在使用一個系統的時候他的所見所得。 2、業

黑馬程式設計師—C語言筆記—陣列和字串

一、陣列 1、概念:是用來儲存一組資料的; a、構造型別:有無數個基本資料型別組成的型別; b、特點:(1)、只能存放一種型別的資料;(2)、裡面存放的資料稱為“元素”; 2、陣列的定義 a、定義格式: 資料型別 陣列名[元素個數]; b、簡單使用: (1)、簡單的初始化;int age[3] = {11,

黑馬程式設計師-OC學習筆記-----記憶體管理

移動裝置的記憶體極其有限,每個app所能佔用的記憶體是有限制的.當app所佔用的記憶體較多時,系統會發出記憶體警告,這時得回收一些不需要再使用的記憶體空間。比如回收一些不需要使用的物件、變數等。基本的資料型別是放在記憶體的棧裡面,這是不需要我們去管理的,系統會自動回收。但是

黑馬程式設計師 C#學習筆記⑤ 省市縣三級聯動查詢

---------------------- ASP.Net+Unity開發、.Net培訓、期待與您交流! ----------------------詳細請檢視:www.itheima.com 實現一個可以動態的進行省市縣查詢的程式 一 基本原理: 通過ADO.NET技

黑馬程式設計師_學習筆記JAVA基礎總結

1、方法過載 方法覆蓋 過載:一個類中一種功能的多種實現方式,呼叫哪種實現方式,根據呼叫者給出的引數。有兩個或多個方法方法名相同,但是引數型別或者引數個數或者引數順序不同。覆蓋:子類重寫父類的一個函式,函式名,引數,返回型別都相同。 覆蓋的應用: 當子類需要父

黑馬程式設計師--JQuery學習筆記

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS開發</a>、<a href="http://edu.csdn.net

黑馬程式設計師Objective-C筆記:點語法

一.點語法本質 點語法的本質的本質還是方法的呼叫,不是訪問成員變數。當編譯器遇到點語法時,自動轉化成相應的語法。 二.例項應用 P.age=10; =[P setAge:10] set方法,設定成員變數的值  int a = P.age=[P age]  get方法,

程式設計師自我培訓指南

你是一個程式設計師新手,剛從大學邁進公司卻沒有人指導,要麼公司給你指定了導師,卻不好意思大事小情都問他。你想提高自己的程式設計水平,卻不知該如何下手。如果你想提升自己,成為一個合格的天天向上的程式設計師,這篇文章就是為你準備的。 學什麼? 有些人對什麼都感興趣,硬碟上

黑馬程式設計師Objective-C筆記:類

#import //包含主標頭檔案,因為後面用到了NSobject @interface Person : NSObject //在這裡冒號表示繼承,讓person繼承NSobject的目的是讓Person這個類具備建立物件的能力 { // 這裡宣告屬性(預設情況初始化是0),成員變

黑馬程式設計師_Java學習筆記之7K面試題交通等管理系統

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">

黑馬程式設計師-IOS學習筆記(二)常用關鍵字和方法

------Java培訓、Android培訓、iOS培訓、.Net培訓、期待與您交流!------- 常用關鍵字和方法: 一.記憶體管理情況 1- autorelease,當用戶的程式碼在持續執行時,自動釋放池是不會被銷燬的,這段時間內使用者可以安全地使用自動釋放的物件。當

黑馬程式設計師----oc加強筆記----記憶體管理

                              引用計數器: 每個OC物件都有自己的引用計數器,是一個整數表示物件被引用的次數,即現在有多少東西在使用這個物件。物件剛被建立時,預設計數器值為1,當計數器的值變為0時,則物件銷燬。                 2)對引用計數器的操作     

黑馬程式設計師—C語言筆記—記憶體剖析

一、進位制 1、定義:是一種計數的方式,數值的表示形式。 2、常用的4種進位制: 二進位制以0b/0B開頭如int num1 = 0b1100; 八進位制以0開頭如int num2 = 014; 十進位制如 int num3 = 12; 十六進位制以0x/0X開頭如int num4=0xc;