我是如何一年寫出三本編程書籍的 - OSCHINA - 中文開源技術交流社區

2020-12-12 開源中國

像大多數程式設計師一樣,我是一個內向的人,所以,像下面這樣的話很難說出口:

我是個了不起的人。

哦…. 不得不多說幾句。我看到Ruby,Javascript和其它社區裡有這麼多傑出的人物,他們真的讓人非常的佩服,而我呢,我感到自己一無是處。但即使這樣,回首過去一年的366天,我所做的事情…會讓你驚訝。

我寫了三本關於不同技術方面的書,而這些技術,我以前是毫不了解的

我寫了The SPDY Book,它至今仍然是唯一一本關於SPDY方面的書:

三個月後,我和Nick Gauthier合寫了Recipes with Backbone(.js)這本書:

三個月後,我寫了第一本關於Dart語言的書,Dart for Hipsters:

這三種技術有兩個共同點:

  1. 他們是改變遊戲規則的技術(或多或少)
  2. 在我寫關於它們的書前,我對它們一無所知。

那麼,我寫書寫的是我之前並不了解的主題,這是想說明什麼?讓我換一種方式說:我寫成了,所以為什麼我(或其它任何人)不能寫?

我是如何做的?

寫博客,每天寫。整整一年。366天。每天。風雨無阻。

說真的,我不知道為什麼會想起要這樣幹。一天晚上,我突然有了一個奇妙的想法,在我還沒有自我否定、認為這是個多麼愚蠢的想法前,我公開許了諾去完成它。

而這樣奏效了。每天晚上,我問自己一個問題,我不知道答案,我盡最大的努力想方設法去回答它。

每次這樣做,每次都有所收穫。每天的死任務逼迫我去學習。而把這些寫成博客,受到讀者的建議和批評,使我收穫更多。

然後第二天,重複這樣的事情,進一步強化這種學習。這樣就寫出了書。然後是第二版。

讓我驕傲的是,我並沒有讓這些事情妨礙我認識什麼是最重要的事。我仍然和家人一起正常度假—— 開車去海邊,去迪士尼樂園。生日,周年紀念日,生病休息——我一樣都沒少。

而最終,我從中學到了什麼?遠不止這多很酷的技術知識,我學到的是…

我讓自己相信,我是個了不起的人

我聽說過一個叫做Zelda的女人的故事。她為了戒菸,向自己發誓說,如果再抽一根煙,就要向三K黨捐贈5000美元。她再也沒有抽過煙。如果她放棄了戒菸,她會真的捐贈嗎?估計不會,但這足夠向自己表明自己的決心。

於是,最終,我也做了同樣的事情。如果我怠工了一天,這世界會停止轉動嗎?當然不會。沒有人會顧慮這些。但我會,因為我承諾過自己要這樣做。而在366天後,我的收穫遠不止戒菸。我有了三本書,這最後一本是由The Pragmatic Programmers出版的。

那麼,下一步做什麼?

第367天。

譯者附言:就在上個月,聽說公司裡有一位不太熟悉的同事寫一本書,見到書後,發現是介紹一種數據分析軟 件的使用的,但書名取的很深奧。翻開書一看,500頁的內容,有300頁是安裝或使用過程中的截圖,餘下的200頁內容…。機械工業出版社出版的。我好奇 的是,為什麼他會花費精力編這樣的一本書,竟然還出版了。但不管怎樣,你可以得到一點啟示,正像本文章的作者的經歷:寫書、出書並不難。

[本文英文原文連結:366 or How I Tricked Myself into Being Awesome ]

相關焦點

  • 關於編程裡的那些 ABCDEFG - OSCHINA - 中文開源技術交流社區
    它是一款開源 JavaScript 函式庫,由 Google 和它的社區來維護,用來協助單一頁面應用程式運行的。它的目標是透過 MVC模式(Model-View-Controller)功能增強基於瀏覽器的應用,使開發和測試變得更容易。函式庫讀取包含附加自定義(標籤屬性)的 HTML,遵從這些自定義屬性中的指令,並將頁面中的輸入或輸出與由 JavaScript 變量表示的模型綁定起來。
  • Gitbook,這個開源出書平臺了不起 - OSCHINA - 中文開源技術交流社區
    GitHub充分利用了網際網路的能力,讓開發者可以方便地參與不同的項目,不要說查閱別人的代碼,修改別人的項目,是一種更高層次的交流、對話。就好像《如何閱讀一本書》裡提到的「主動閱讀」,是通過不斷了解作者核心觀念,並提出自己觀點進行碰撞的方式,讓讀者成為一名偉大的讀者。相比紙質書中作者與讀者的對話,GitHub 將兩段代碼撰寫者的溝通顯性化,不再是偷偷在旁邊的注釋裡加入自己的觀點。
  • Delta Lake 進入 Linux 基金會 - OSCHINA - 中文開源技術交流社區
    「將 Delta Lake 引入 Linux 基金會的中立組織之下,將有助於依賴該項目的開源社區開發解決存儲和處理大數據(本地和雲端)的技術」,Linux 基金會戰略計劃副總裁 Michael Dolan 表示。
  • 開源社區的「忌諱」話題 - OSCHINA - 中文開源技術交流社區
    加拿大資深開源技術記者Bruce Byfield較早前發表了一篇名為「開源社區從來不想承認的九大事實」(9 Things That Are Never Admitted About Open
  • 為什麼結對編程並不那麼受歡迎? - OSCHINA - 中文開源技術交流社區
    結對編程是軟體開發過程中所使用的一種技術,兩名程序開發人員共享同一臺工作站,其中一名開發人員被稱為駕駛員(Driver),另一位被稱為領航員(Navigator)或觀察員(Observer)。兩人輪流使用同同一個鍵盤編寫代碼和測試案例。兩個開發人員輪流使用鍵盤可以讓每個開發人員都有機會思考設計和相應的實現。兩人還能夠從相互的思想交流中受益,通常能寫出更加高效的代碼。
  • 如何在 2020 年用 Java 安全編程 - OSCHINA - 中文開源技術交流社區
    在當今的開發環境中更是如此,各種新的安全性技術、黑客技術以及新穎的存儲和加密形式,意味著許多人都在質疑著 Java 的安全性。Java 開發人員還面臨著包括雲遷移的安全性問題在內的諸多挑戰。另一方面,新的安全審核技術(如混沌工程)也為開發人員提供了許多提高代碼安全性的機會。五個原則的具體內容如下:1.
  • 開源春天,此時不來,更待何時? - OSCHINA - 中文開源技術交流社區
    簡單地講,其實這背後都是利益問題,以這些開源項目社區的話來講,他們都不想讓一些雲廠商「坐收漁翁之利」,然而實際上,這些被指責的雲廠商真的都違反了開源協議內容嗎?這可真不好說。在這些社區宣布項目修改開源協議之後,遭到了各種反對聲音。
  • Hutool 2.16.0 發布,Java 工具集 - OSCHINA - 中文開源技術交流社區
    DbSetting傳值Setting不為空空指針問題修復HttpConnection中判斷Http Method 錯誤修復PooledDataSource和SimpleDataSource配置文件讀取錯誤問題-2016的尾巴-隨著2016的結束,Hutool又走過了一個年頭,在這一年中
  • Javascript 編程風格 - OSCHINA - 中文開源技術交流社區
    我非常推薦這個演講,它不僅有助於學習 Javascript,而且能讓你心情舒暢,因為 Crockford 講得很幽默,時不時讓聽眾會心一笑。 下面,我根據這個演講和 Crockford 編寫的代碼規範,總結一下"Javascript 編程風格"。
  • 開放源碼是開源軟體嗎? - OSCHINA - 中文開源技術交流社區
    許可協議必須技術中立(License Must Be Technology-Neutral):意即許可協議不得限制為電子格式才有效,若是紙本的許可協議也應視為有效。所以,與此類似的,在中文裡,我們可以認為:「開放原始碼」是一個動詞+一個名詞。而「開源」則是一個特定的詞彙。作為動詞,我們說將某某軟體開源,是一種行為。作為形容詞,我們稱某某軟體是一個開源(的)軟體,不僅僅是指我們能夠獲取到他的原始碼。
  • 華為莊表偉:三代開源社區的協作模式 - OSCHINA - 中文開源技術...
    被審核通過、合入代碼庫的patch越多,一個人對於社區的貢獻就越大,可信度也越高,身份地位也逐步提高,然後,他也就可以去Review其他人的代碼了。總結:在簡陋的工具條件下,發展出高效、嚴格的社區協作模式三、第二代開源協作模式第二代開源協作模式,有兩大特徵:Web化、集成化。
  • Git 2.4.3 發布 - OSCHINA - 中文開源技術交流社區
    Git是一個開源的分布式版本控制系統,用以有效、高速的處理從很小到非常大的項目版本管理。開源中國 Git 代碼託管平臺:http://git.oschina.net/Windows下的Git請看這裡:http://www.oschina.net/p/msysgitGit 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟體
  • SugarCRM:開源與商業的完美結合 - OSCHINA - 中文開源技術交流社區
    其實開源軟體並不鮮見,但和普通開源軟體相比,SugarCRM的一大優勢是對於開源軟體與商業軟體的技術投入相差無幾,開源軟體也能和商用軟體一樣更新 和升級,而在功能上,開源軟體也與商業軟體有70-75%的重疊。兩者的區別是在於商業軟體具備SaaS(軟體在線服務)及售前售後服務,而開源軟體更多 的是依靠社區成員間的相互服務。
  • 開源軟體蓄勢待發 - OSCHINA - 中文開源技術交流社區
    相關內容11家值得關注的開源技術公司優異的技術特性和相對低廉的價格的結合使得開源產品廠商比以往有了更多進入企業網絡的路徑。Likewise公司執行長 Barry Crist 稱:「在網絡泡沫時期,由於Linux比SPARC上的Solaris更為便宜,開源產品逐漸由Unix轉移到了Linux。
  • 通過開源書籍學習 Ruby 編程
    目前,Ruby 在 TIOBE 編程社區排名 12 。這篇文章有 9 本很優秀的推薦書籍,有針對包括初學者、中級程式設計師和高級程式設計師的書籍。當然,所有的書籍都是在開源許可下發布的。這篇文章是 OSSBlog 的系列文章開源編程書籍[1]的一部分。
  • 5款開源雲計算平臺推薦 - OSCHINA - 中文開源技術交流社區
    我們熟知的幾個IT巨頭的雲計算平臺,如亞馬遜EC 2、IBM的藍雲、微軟的Azure、Sun Cloud等,那麼開源雲計算的平臺又有哪些呢?以下列舉了開源中國社區收錄的5款知名的開源雲計算平臺。Programs To Useful Systems)是 Amazon EC2 的一個開源實現,它與商業服務接口兼容。
  • Google限制Python使用引熱議 - OSCHINA - 中文開源技術交流社區
    Google論壇中網友公開詢問Collin Winter(Collin Winter是Python社區一位頗具影響力的開發者,他曾是CPython項目的核心開發者之一、也曾是Unladen Swallow(見文末注釋)的核心開發者,參與了很多Python項目的開發。)。
  • 一些編程上的策略 - OSCHINA - 中文開源技術交流社區
    這裡將向大家分享的是一些我對編程的思考總結,這些經驗在我畢生編程生涯中曾幫助我在無數的事情上作出正確的決定。這些編程策略有些是很顯然的,但實際編程中往往被人們忽略。多學習作業系統和編譯器知識了解機器,理解機器內部裡事情是如何工作的。這將會幫助理解各種不同瓶頸產生的原因。這能幫助你找到代碼運行時為什麼會發生奇怪的現象。5. 運用管理技術在編程中運用管理技術。針對不同目的使用正確的工具。我有自己的喜好,但我努力克服。1.
  • 你最深愛的程式語言其實很爛 - OSCHINA - 中文開源技術交流社區
    我忘了第三個理由是什麼,但我敢肯定,那一定是一個非常有趣的理由。好了,不再浪費口舌,你最深愛的程式語言其實很爛。1. C語言 哦,你聽說學習C語言是必須的,因為大師Joel Spolsky這樣告訴你的。他說了這種語言是最優秀的,最能體現程式語言的本質,等等等等。
  • 開源雲計算市場份額正在上升 - OSCHINA - 中文開源技術交流社區
    雲計算具備轉變政府機構接入IT服務方式的潛力,而開源是政府早期配置的幾種雲採用的基礎技術。