前言
2018 年,我有很長一段時間在中國和美國兩地跑,同時在中國大陸工作和生活了比較長的一段時間,這是我近二十年來第一次和中國大陸的開發者一起長時間工作。在享受各種美食之外,對中國大陸的開發、產品和管理有了全新的了解和認識。
說起寫書的緣由,我本來的想法只是寫一點可以作為工程師教育訓練教材的東西。2018 年初,TensorFlow 作為一個技術熱點,逐漸普及到機器學習應用程式開發的各方面,但是對於TensorFlow 在行動端的開發和應用還處於初始階段。我當時也剛剛結束一個TensorFlow 專案,想把這些經驗和想法沉澱一下。於是我就把以前寫的筆記和記錄檔重新整理,增加一些內容並修改了文字,基本形成了一個原始版本。
後來,遇到博文視點的南海寶編輯,透過商談,出版社欣然同意把這些資料整理出書。我的筆記和記錄檔的內容很多和程式緊密相關,其中很多內容後來演變成了文件,我覺得這對初學者和有經驗的開發者都是一個很好的參考,至少可以提供另外一個角度,讓開發者多方面了解TensorFlow。所以,我就開始寫作,前後花費了近兩年的時間。
我是一邊寫作一邊工作的,在這過程中很快就遇到了兩個很大的挑戰。
第一是文字。我的筆記都是英文的,要把這些轉換成中文,我借助了Google 翻譯,雖然翻譯後的文字有很多需要修改,但至少省下了不少打字的時間。另外,就是專有術語的翻譯,由於我對中文的專業術語不熟悉,所以即使簡單的術語也要斟酌確定,這也花費了一些時間。如果讀者在文字中發現一些奇怪的說法,還請見諒,我和編輯雖然盡了最大的努力,可能還是會有很多遺漏。
第二是重新認識和了解了中國大陸開發的各方面。我在美國和中國大陸的開發者也有不少接觸,我想在兩邊工作應該不會有什麼差別,可實際工作起來還是有很多不同和挑戰,感觸頗深。首先是技術層面。開放原始碼的理念和軟體在中國大陸滲透到各方面,幾乎所有網際網路公司都是從使用開放原始碼軟體開始架設自己的產品。由於Google 在開放原始碼社區的貢獻和影響力,中國大陸普遍對Google 的好感度很高,我也同享了這個榮耀。而且,很多公司和開發者也把對開放原始碼社區做出貢獻看作責任和榮耀,這是一個很好的趨勢,中國很快會發展出自己的開放原始碼生態和社區。
關於開發環境和工程師文化,我想提一下兩邊對新員工教育訓練的區別。在中國大陸對新員工的教育訓練中,職業道德教育訓練和公司文化的教育訓練佔了很大一部分。而在矽谷,至少像Google、臉書這些公司,教育訓練中技術教育訓練佔了很大一部分,基本是一周的教育訓練後,員工就要進行實際的工作,而中國大陸很多公司的新員工第二周才開始技術工作。這裡我能充分感受到中美公司之間的差別。
另外是開發管理方法,由於管理方法的不同,實際的工作中要做對應的改變。例如中國大陸對開發和產品的進度的管理是非常嚴格的。但是,這種嚴格大都表現在層級的匯報關係上,而非對技術細節的掌控和指導上。Google 的工程師會經常以程式的提交作為一個專案開始和結束的標示,這在中國大陸公司很少見到。
我希望把這些經驗、想法和體會能或多或少表現在這本書裡。舉例來說,使用Markdown 寫文件,能使寫文件變成一件不是很煩瑣的事,可以讓作者更專注於內容的寫作,而非花費太多時間在操作編輯器上。本書就是全部用Markdown 寫作完成,再轉換成Word 文件的。舉例來說,使用Bazel 編譯,需要對程式的依賴有清晰的定義。可能很多工程師不會特別在意這點,但是透過它,工程師可以非常清楚地了解程式重用和參考的狀況,避免隨意的程式重用,並加強程式的品質。我希望透過這些在書中給讀者傳達一些不同的開發經驗。
總之,我會把這本書作為這一年工作和生活的紀念。看到書中的各個章節,我就可以聯想起寫書時發生的許多事。但是,真的由於時間和我自己的能力非常有限,書中一定會有很多錯誤和瑕疵,還望讀者能寬容和諒解。
最後,要感謝我的家人能支援和陪伴我度過2018 年,我和我的母親一起度過了2018 年春節,是近20 年來在中國大陸度過的第一個春節。還要感謝我的妻子,她非常支援我,並幫助我寫完這本書。還有我的兩個女兒,總是能給我帶來無盡的快樂,還要感謝深蘭科技的創始人陳海波先生和首席戰略官王博士,兩位幫助我完成這本書,並提出了很多意見。
另外,感謝博文視點給我這個機會出版這本書,希望透過這本書能結識更多的開發者。還要感謝南海寶編輯在本撰寫作和出版過程中給予的指導和鼓勵。