天天看點

【專訪】黃健宏:為什麼真正的聰明人喜歡用笨方法?

*黃健宏(huangz),一位1990年出生的計算機技術圖書作譯者,《Redis設計與實作》一書的作者,《Go Web程式設計》《Redis實戰》一書的譯者。除了已出版的兩本作品之外,他還創作和翻譯了《Go标準庫中文文檔》《Redis指令參考》《SICP解題集》等一系列開源文檔。要了解關于黃健宏的更多資訊,請通路他的個人首頁​​http://huangz.me​​。

他是一個極緻的完美主義者,為翻譯《Go Web程式設計》一書,他曾經去過各大GO學習社群,精修專業技術;為了讓譯文更有“中文味”,大多數譯文都已三易其稿,有時候僅僅為了挑選出一個更恰當的詞語或成語,他不得不對着詞典推敲半天。從0到1、從初入茅廬程式設計小子到暢銷書作譯者,他對寫作、翻譯、閱讀、學習、生活都有着獨到的見解。

網際網路和書本是他擷取知識和資訊的兩個主要途徑。在深入地閱讀一本書的時候,通常會花很大的力氣,争取把書本“吃透”,而做筆記則是把書本“吃透”的其中一種辦法。然而正是這個耗費力氣的“笨辦法”讓他的基本功更加紮實。

異步社群:可以先介紹一下你自己嗎?

異步社群的讀者朋友們,大家好,我叫黃健宏(huangz),是一位來自廣東清遠的計算機圖書作者和譯者。我之前分别創作和翻譯過名為《Redis設計與實作》和《Redis實戰》的Redis圖書,我的最新作品是目前正在預售的《Go Web程式設計》,這是我的第二本譯作,也是我第一次出版Go方面的圖書。

除了正式出版的三本圖書之外,我還翻譯和創作過一些開源文檔,比如《Go标準庫中文文檔》(cngolib.com)、《Redis指令參考》(redisdoc.com)以及《SICP解題集》(sicp.rtfd.org)等。

關于我個人的詳細資訊以及相關連結可以在我的個人首頁huangz.me上找到。

異步社群:在你的個人筆記中,對每本閱讀的圖書都進行了分類以及寫了詳細讀書筆記?能說說你的做讀書筆記的心得嗎?

網際網路和書本是我擷取知識和資訊的兩個主要途徑。我在深入地閱讀一本書的時候,通常會花很大的力氣,争取把書本“吃透”,而做筆記則是把書本“吃透”的其中一種辦法。

以下是一些我在讀書的時候經常會做的事情:

  • 通過畫線、畫圈、添加注釋等方式,用筆在書上标記出重點的字句、段落;
  • 把書中介紹的重點知識摘錄到個人筆記網站或者部落格上面,以此來加強自己的記憶,也友善以後有用時進行檢索;
  • 通過實踐驗證書中的知識,以此來将書中介紹的知識轉化為個人的能力和經驗;
  • 寫讀後感,跟其他讀者分享、交流自己的收獲和心得。

關于如何讀書的問題,《如何閱讀一本書》這本書裡面有很好的介紹,裡面教授的讀書方法都是非常有用和實用的。

異步社群:作為一個高内容輸出者,你的典型的一天是如何度過的?你是如何保持高效率的?

我的基本作息時間跟大家一樣,都是日出而作、日落而息。

在工作方面,我使用一種簡單的TODO方法去驅動自己的工作:我會把所有待完成的任務都寫在一張A4紙上面,然後每完成一項任務就在紙上把已完成的任務劃掉,然後繼續進行下一項任務,如此往複直到所有工作都完成為止。

在生活方面,我在工作之餘會看一些電影、動漫、遊戲直播來放松自己,為了避免自己隻讀計算機方面的書籍,我也會有意識地看一些小說和跟計算機無關的書本。在結束一天的工作之後,我會在家附近的公園裡散步或騎行,以此來鍛煉身體。

我在工作時不會特意去追求效率,更多的是想辦法去點燃和保持自己的熱情:當我對一項任務非常有熱情的時候,完成該任務的效率通常就會很高,而産出的内容品質也會有保證。舉個例子,在開始一天的工作時,我通常會想“今天就讓我來寫出漂亮的一章吧”,而不是想“今天至少要完成書本的這一章才行”,這兩者之間的差別是非常大的。

實際上,我的工作效率在很多人看來是非常低的:《Redis設計與實作》寫了一年半,《Redis實戰》翻譯了一年半,《Go Web程式設計》也翻譯了一年,而現在正在寫的《Redis使用教程》則已經寫了兩年多了。在很多人看來,以年為時間機關完成一本計算機圖書可能是一種天荒夜談,但為了保證書本的品質,有時候大量的時間投入是必需的。

異步社群:豆瓣中看到你分享了很多的書?你平時都選擇哪些書閱讀呢?有什麼選書的經驗可以分享嗎?

我在剛開始學習程式設計的時候,閱讀的都是一些經典的計算機基礎書籍,而之後閱讀的則是介紹某種特定技術的書籍,比如學Ruby的時候就找一本Ruby書來看,學MySQL的時候就找一本MySQL書來看,諸如此類。

最近這幾年開始寫作和翻譯之後,我就比較少像以前那樣完整、深入地去閱讀一本書了,通常都是快速地浏覽書中一兩個自己想要了解的章節就算了,現在更多的是在網上查資料以及閱讀軟體的官方文檔。

關于如何選書是一個非常大的問題,認真要說的話也許可以說上一整天。簡單來說,我建議大家理性消費,隻買自己要讀的書,而不是在書店搞促銷優惠的時候買一大堆自己不會讀的書,這樣做是無益反有害的;另外要注意的一點是,盡量不要在讀書之前讀書評或者讀書筆記,以免對書本産生先入為主的看法,影響自己的思考和判斷。

異步社群:大家知道你最早是在 2011 年開始接觸 Redis,一直在學習和研究 Redis ,并會分享自己的學習心得,寫一本書和寫技術部落格相比,有哪些不一樣的地方呢?

寫部落格和寫書的主要差別在于幾個方面。

首先,從嚴謹程度來說,我在寫部落格的時候,記錄的通常都是一些剛開始接觸到的知識,這些内容可能隻是為了加強自己的記憶,又或者以抛磚引肉的方式吸引其他同好來進行交流,而部落格的内容本身可能并不成熟和不嚴謹,又或者有這樣那樣或嚴重或輕微的錯誤;但是在寫書的時候,我會通過測試程式或者閱讀源碼來對寫下的每個知識點進行驗證,進而盡可能地確定書本上不會出現有錯的内容。

其次,在組織方式上面:部落格的文章通常都是自成一格的,一篇文章可能跟另一篇文章沒有什麼關系,又或者介紹的是兩種完全不同的知識;但是在寫書的時候,章節之間的内容通常是互相關聯的,一章中的各個節則為不同的知識點服務。

最後,從内容上來看,書本的内容通常都會比一般的部落格文章更豐富和詳盡,這是部落格無法與書本比拟的地方。

異步社群:你在學習redis時,如果碰到自己解決不了的問題,怎麼辦呢?

如果在學習過程中碰到問題,我通常會使用以下方法來嘗試解決:

  • 通過搜尋引擎進行搜尋;
  • 閱讀官方網站、文檔和部落格;
  • 檢視源碼;
  • 在微網誌或者問答網站上發問;
  • 求助朋友和同行。

目前來說,我在學習Redis的過程中還沒有遇到過解決不了的問題。

以我的個人經驗來看,對于Redis這樣的開源軟體,絕大多數問題隻要通過上面提到的方法1 ~ 3就能解決了。

異步社群:你曾說在自己的群内禁止傳播盜版資源的,作為版權保護的倡導者,能談談初衷嗎?

對于所有創作者來說,盜版都是一個無法避免的現實話題。盜版會導緻創作者的收入減少,而如果創作者付出的努力沒有得到适當的回報,那麼他們就無法繼續進行創作,最後隻能黯然離開,這種結果實際上對于所有人來說都是一種損失。舉個例子,如果一個音樂人因為無法得到足夠的報酬而離開,那麼他的樂迷将無法再聽到他創作的歌;而如果一個圖書作者因為無法得到足夠的報酬而放棄寫作,那麼同樣地,他的所有讀者将無法再看到他的新作品。

因為我自己的圖書也曾經遇到過幾次較為嚴重的盜版事件,有些至今還沒有得到妥善的解決,是以我在建立自己的聊天群時,就定下了不能傳播盜版的規矩,其中禁止的不僅僅是不能盜版我的書,而是不能傳播任何盜版資源。定下這條規則的初衷很簡單,那就是,雖然自己管不了——也不可能管得了——整個網絡,但至少在我自己的小小空間裡,我希望大家能夠拒絕盜版,不要傷害那些花了很多時間辛苦地為我們貢獻出作品的創作者。

異步社群:平時關注哪些技術論壇或部落格?

我比較少關注特定的論壇和部落格,更多是根據正在研究的技術去閱讀相應的網站:當我在學習Go的時候,我就會到Go的相關網站上去看看;當我在學習Redis的時候,我就會到一些介紹Redis的網站上去逛逛,諸如此類。

在開始進行寫作和翻譯之後,我便開始有意識地不再去浏覽一些跟手頭上的問題沒有直接關聯的網站,因為我希望自己腦子裡面記憶的都是目前正在研究的問題的相關細節,而不是流行明星的花邊新聞,又或者一些我永遠都不會用到的知識,我相信隻有這樣,自己才能創作出真正對這個社會有價值的作品。

異步社群:《Go Web程式設計》這本書的翻譯花費了多長時間?期間碰到什麼困難嗎?

我從2016年8月開始進行《Go Web程式設計》的翻譯工作,到2017年8月送出初稿,中間跨越了整整一年的時間。

完成這次翻譯工作的其中一個主要困難,就是要克服自己對Go的不熟悉——正如我前面在自我介紹時所說的那樣,在翻譯《Go Web程式設計》之前,我主要進行的是Redis相關的工作,當我剛開始進行《Go Web程式設計》的翻譯時,我對Go這門語言隻能說是了解,但是離熟悉還有很遠的距離,特别地,因為《Go Web程式設計》書中包含大量對标準Go庫的使用和介紹,如果對标準Go庫不夠熟悉,隻是單純地按照書中的文字進行翻譯,那麼出現翻譯事故是可以預見的。

為了解決這個問題,加深對标準Go庫的認識,我将書中用到的标準Go庫的文檔都仔細地閱讀了一遍,并按需閱讀了某些庫的源代碼,甚至還親自把其中一些庫的文檔翻譯成中文放到了《Go标準庫中文文檔》上面。完成上述工作雖然花費了額外的時間,但經此一役,我對Go語言特别是标準Go庫的了解上了一個新的台階,在翻譯書中的内容時,我不僅能根據文字進行翻譯,還能夠從技術上的角度來審視書中的内容,進而發現其中的優點、不足以及錯誤。具體來說,在翻譯《Go Web程式設計》的過程中,我對書本的不少内容做了微調,讓它們閱讀起來更加流暢和易懂,并且還修正了書中大大小小尚未公開的數十個bug——如果我沒有深入地研究标準Go庫,那麼我想自己是不可能發現這些錯誤的。

另外一件讓我印象深刻的事情是在書本審較過程中發生的,當時我和楊海玲編輯在一個問題上出現了不同的意見,我堅持自己的方案A,而楊編輯則堅持自己的方案B,為此我們進行了好幾次溝通,但雙方都沒有辦法讓對方完全信服,當時急性子的我差點就要和編輯鬧沖突,但幸好我最後還是沒有那麼做。後來我冷靜下來重新審視這個問題的時候,發現的确是楊編輯的方案B更好,我很慶幸自己當時沒有在這個問題上和編輯鬧翻,經過這件事,我也懂得了在跟人合作的時候應該放下自己頑固的自尊心,以開放的态度去聆聽協作者的意見,我想隻有這樣,才能從協作者身上受益,才能大家齊心協力把一件事做好。

異步社群:《Go Web程式設計》是你的第二部譯作,在翻譯第一部譯作《Redis實戰》的時候,你曾說因為受經驗、知識以及時間等條件限制,隻能把時間盡量花在保證譯文的準确性上,這次的翻譯過程中有什麼變化?

翻譯跟其他很多工作一樣,都是以知識為理論基礎,經驗為實踐指導的一門手藝,即使是同一個譯者,随着他擁有的知識和經驗的變化,他産出的作品也會有非常大的變化。

具體來說,在翻譯《Redis實戰》的時候,我隻有翻譯軟體文檔和部落格的經驗,完整地翻譯整本書的經曆還是一片空白,是以之後回過頭去審視這個譯本的時候,就會覺得當時有很多地方是可以做得更好的。因為在翻譯完《Redis實戰》之後,我又學習了一些新的翻譯知識,并且也通過實踐積累了更多翻譯經驗,是以當我接到《Go Web程式設計》的翻譯委托時,我便決心将自己自《Redis實戰》以來學到的新知識和新經驗應用到這本新書當中,從最終的成品來看,我對《Go Web程式設計》這本作品還是非常滿意的。

因為時間、報酬和譯者質素等種種問題,中文技術圖書的翻譯品質一貫是為大家诟病和懷疑的,但無論是之前的《Redis實戰》,還是現在的《Go Web程式設計》,我都花費了非常多的時間和精力在上面,我相信讀者在閱讀這兩本書的時候,是可以切實地感受到它們跟一般譯作之間的不同之處的。

關于《Go Web程式設計》的翻譯過程和思考,我在書本的《譯者記事》一文中也有叙述,大家如果對這個主題有興趣的話也可以去讀一讀這篇文章:​​http://www.epubit.com.cn/book/onlinechapter/60300​​

異步社群:你理想中的工作是什麼樣的?