1. 程式人生 > >程式設計師高效出書避坑和實踐指南

程式設計師高效出書避坑和實踐指南

    古有三不朽, 所謂立德、立功、立言。程式設計師出一本屬於自己的書,如果說是立言,可能過於高大上,但終究也算一件雅事。

    出書其實不掙錢,而且從寫作到最終拿錢的週期也不短。但程式設計師如果有一本屬於自己的技術書,那至少在面試中能很好地證明自己,也能漸漸地在業內積累自己的名氣,面試和做其它事情時也能有不少底氣。在本文裡,本人就將結合自己的經驗和自己踩過的坑,和大家聊聊程式設計師出書的那些事。

1 出書的稿酬收益和所需要的時間

    先說下出書的收益和需要付出的代價,這裡姑且先不談“出書帶來的無形資產”,先談下真金白銀的稿酬。

    如果直接和出版社聯絡,一般稿酬是版稅,是書價格的8%乘以印刷數(或者實際銷售數),如果你是大牛的話,還可以往上加,不過一般版稅估計也就10%到12%。請注意這裡的價格是書的全價,不是打折後的價格。

    比如一本書全價是70塊,在京東等地打7折銷售,那麼版稅是70塊的8%,也就是說賣出一本作者能有5.6的收益,當然真實拿到手以後還再要扣稅。

    同時也請注意合同的約定是支付稿酬的方式是印刷數還是實際銷售數,我和出版社談的,一般是印刷數量,這有什麼差別呢?現在計算機類的圖書一般是首印2500冊,那麼實際拿到手的錢數是 70*8%*2500,當然還要扣稅。但如果是按實際銷售數量算的話,如果首印才銷了1800本的話,那麼就得按這個數量算錢了。

    現在一本300的書,定價一般在70左右,按版稅8%和2500冊算的話,稅前收益是14000,稅後估計是12000左右,對新手作者的話,300的書至少要寫8個月,由此大家可以算下平均每個月的收益,算下來其實每月也就1500的收益,真不多。

    別人的情況我不敢說,但我出書以後,除了稿酬,還有哪些其它的收益呢?

    1 在當下和之前的公司面試時,告訴面試官我在相關方面出過書以後,面試官就直接會認為我很資深,幫我省了不少事情。

    2 我還在做線下的培訓,我就直接拿我最近出的python書做教材了,省得我再備課了。

    3 和別人談專案,能用我的書證明自己的技術實力,如果是第一次和別人打交道,那麼這種證明能立杆見效。

    尤其是第一點,其實對一些小公司或者是一些外派開發崗而言,如果候選人在這個方面出過書,甚至都有可能免面試直接錄取,本人之前面試過一個大公司的外派崗,就得到過這種待遇。 

2 支付稿酬的時間點和加印後的收益

    我是和出版社直接聯絡出書,支付稿酬的時間點一般是,在首印後的3個月內拿到首印部分稿酬的一部分(具體是50%到90%),然後在圖書出版後的一年後再拿到其它部分的稿酬。當下有不少書,能銷掉首印的冊數就不錯了,不過也有不少書能加印,甚至出第二和第三版,一般加印冊數的版稅會在加印後的半年到一年內結清。

    從支付稿酬的時間點上來,對作者確實會有延遲,外加上稿酬也不算高,相對於作者的辛勤勞動,所以出書真不是掙錢的事,而且拿錢的週期還長。如果個別圖書公司工作人員一方面在出書階段對作者沒什麼幫助, 另一方面還要在中間再掙個差價,那麼真有些作踐作者的辛勤勞動了。

3 同圖書公司打交道的所見所聞     

  在和出版社編輯溝通前,我也和圖書公司的工作人員交流過,不少工作人員對我也是比較尊重,交流雖然不算深入,但也算客氣。不過最終對比出版社給出的稿酬等條件,我還是沒有通過圖書公司出書,這也是比較可惜的事情。下面我給出些具體的經歷。

    1 我經常在部落格園等地收到一些圖書公司工作人員的留言,問要不要出書,一般我不問,他們不會說自己是出版社編輯還是圖書公司的工作人員。有個別圖書公司的工作人員,會向作者,尤其是新手作者,說些“出版社編輯一般不會直接和作者聯絡”,以及“出書一般是通過圖書公司”等的話。其實這些話不能算錯,比如你不聯絡出版社編輯,那麼對方自然不會直接聯絡你,但相反如果作者直接和出版社編輯聯絡,第一沒難度,第二可能更直接。

    2 我和出版社編輯交流大綱時,即使大綱有不足,他們也能直接給出具體的修改意見,比如某個章節該寫什麼,某個小節的大綱該怎麼寫。而我和個別圖書公司的工作人員交流過大綱時,得到的反饋大多是“要重寫”,怎麼個重寫法?這些工作人員可能只能給出抽象的意見,什麼都要我自己琢磨。在我之前的博文程式設計師怎樣出版一本技術書裡,我就給出過具體的經歷。

    3 由於交流不深,所以我沒有和圖書公司簽訂過出書協議,但我知道,只有出版社能出書。由於沒有經歷過,所以我也不知道圖書公司在合同裡是否有避規風險等條款,但我見過一點陣圖書公司人員人員給出的一些退稿案例,並隱約流露出對作者的責備之意。細思感覺不妥,對接的工作人員第一不能在出問題的第一時間及時發現並向作者反饋,第二在出問題之後不能對應協調最終導致退稿,第三在退稿之後,作者在付出勞動的情況下圖書公司不用承擔任何風險,並還能指摘作者。對此,退稿固然有作者的因素,但同是作者的我未免有兔死狐悲之談。

    而我在出版社出書時,編輯有時候甚至會主動關心,主動給素材,哪怕有問題也會第一時間修改,所以甚至大範圍修改稿件的情況都基本沒有出現。

    4 再說下圖書公司給作者的稿酬。我見過按頁給錢,比如一頁30到50,並賣斷版權,即書重印後作者也無法再得到稿酬,如果是按版稅給錢,我也見過給6%,至於圖書公司能否給到8個點甚至更高,我沒見到過,所以不知道,也不敢擅擬。

    我交流過的圖書公司工作人員不多,交流也不深,因為我現在主要是和出版社的編輯交流。所以以上只是我對個別圖書公司編輯的感受,我無意以偏概全,而和我交流的一些圖書公司工作人員至少態度上對我很尊重。所以大家也可以對比嘗試下和圖書公司以及出版社合作的不同方式。不管怎樣,你在寫書甚至在簽出書協議前,你需要問清楚如下的事項,並且對方有義務讓你瞭解如下的事實。

    1 你得問清楚,對方的身份是出版社編輯還是圖書公司工作人員,這其實應當是對方主動告之。

    2 你的書在哪個出版社出版?這點需要在出書協議裡明確給出,不能是先完稿再定出版社。而且,最終能出版書的,一定是出版社,而不是圖書公司。

    3 稿酬的支付方式,哪怕圖書公司中間可能掙差價,但至少你得了解出版社能給到的稿酬。如果你是通過圖書公司出的書,不管圖書公司怎麼和你談的,但出版社給圖書公司的錢一分不會少,中間部分應該就是圖書公司的盈利。

    4 最終和你簽訂出書合同的,是圖書公司還是出版社,這一定得在你簽字前搞明白,哪怕你最終是和圖書公司籤協議,但至少得知道你還能直接和出版社籤協議。 

    5 你不能存有“在圖書公司出書要求低”的想法,更不應該存有“我能力一般,所以只能在圖書公司出書”的想法。圖書公司自己是沒有資格出書的,所以他們也是會把稿件交給出版社,所以該有的要求一點也不會低。你的大綱在出版社編輯那邊通不過,那麼在圖書公司的工作人員那邊同樣通不過,哪怕你索要的稿酬少,圖書公司方面對應的要求一定也不會降低。

    如果你明知“圖書公司和出版社的差別”,並還是和圖書公司合作,這個是兩廂情願的事情。但如果對方“不主動告知”,而你在不瞭解兩者差異的基礎上同圖書公司合作,那麼對方也無可指摘。不過兼聽則明,大家如果要出書,不妨和出版社和圖書公司都去打打交道對比下。

4 如何直接同國內計算機圖書的知名出版社編輯聯絡

    我在清華大學出版社、機械工業出版社、北京大學出版社和電子工業出版社出過書,出書流程也比較順暢,和編輯打交道也比較愉快。我個人無意把國內出版社劃分成三六九等,但計算機行業,比較知名的出版社有清華、機工、電子工業和人郵這四家,當然其它出版社在計算機方面也出版過精品書。

    如何同這些知名出版社的編輯直接打交道?

    1 直接到官網,一般官網上都直接有聯絡方式。

    2 你在部落格園等地發表文章,會有人找你出書,其中除了圖書公司的工作人員外,也有出版社編輯,一般出版社的編輯會直接說明身份,比如我是xx出版社的編輯xx。

    3 本人也和些出版社的編輯聯絡過,大家如果要,我可以給。

    那怎麼去找圖書公司的工作人員?一般不用主動找,你發表若干博文後,他們會主動找你。如果你細問,“您是出版社編輯還是圖書公司的編輯”,他們會表明身份,如果你再細問,那麼他們可能會站在圖書公司的立場上解釋出版社和圖書公司的差異。

    從中大家可以看到,不管你最終是否寫成書,但去找知名出版社的編輯,並不難。並且,你找到後,他們還會進一步和你交流選題。

5 定選題和出書的流程

    這裡給出我和出版社編輯交流合作,最終出書的流程。

    第一,聯絡上出版社編輯後,先討論選題,你可以選擇一個你比較熟悉的方向,或者你願意專攻的方向,這個方向可以是java分散式元件,Spring cloud全家桶,微服務,或者是python資料分析,機器學習或深度學習等。這方面你如果有紮實的專案經驗那最好,如果你當下雖然不熟悉,但你有毅力經過短時間的系統學習確保你寫的內容能成系統或者能幫到別人,那麼你也可以在這方面出書。

    第二,定好選題方向後,你可以先列出大綱,比如以python資料分析為例,你可以定12個章節,第一章講語法,第二章講numpy類等等,以此類推,你定大綱的時候,可以參考別人書的目錄,從而制定你的寫作內容。定好大綱以後,你可以和編輯交流,當編輯也認可這個大綱以後,就可以定出版協議。

    對一般作者而言,出版協議其實差不多,稿酬一般是8個點,寫作週期是和出版社協商,支付週期可能也大同小異,然後出版社會買斷這本書的電子以及各種文字的版權。但如果作者是大牛,那麼這些細節都可以和出版社協商。

    然後是寫書,這是很枯燥的,尤其是寫最後幾章的時候。我一般是工作日每天用半小時,兩天週末週末用4,5個小時寫,這樣一般半年能寫完一本300頁的書,關於高效寫書的技巧,後文會詳細提及。

    在寫書時,一般建議每寫好一個章節就交給編輯審閱,這樣就不會導致太大問題的出現,而且如果是新手作者,剛開始的措辭和寫作技巧都需要積累,這樣出版社的編輯在開始階段也能及時幫到作者。

    當你寫完把稿件交到編輯以後,可能會有三校三審的事情,在其中同我合作的編輯會幫助我修改語法和錯別字等問題,然後會形成一個修改意見讓我確認和修改。我瞭解下來,如果在圖書公司出書,退稿的風險一般就發生在這個階段,因為圖書公司可能是會一次性地把稿件提交給出版社。但由於我會把每個章節都直接提交給出版社編輯審閱,所以即使有大問題,那麼在寫開始幾個章節時都已經暴露並修改,所以最後的修改意見一般不會太長。也就是說,如果是直接和出版社溝通,在三校三審階段,工作量可能未必大,我一般是在提交一本書以後,由編輯做這個事情,然後我就繼續策劃並開始寫後一本書。

    最後就是拿稿酬,之前已經做了,作者其實不應該對稿酬有太大的期望,也就是聊勝於無。但如果一不小心寫了本銷量在5000乃至10000本左右的暢銷書,那麼可能在一年內也能有5萬左右的額外收益,並能在業內積累些名氣。 

6 出案例書比出經驗書要快

    對一些作者而言,尤其是新手作者,出書不容易,往往是開始幾個章節幹勁十足,後面發現問題越積越多,外加工作一忙,就不了了之了,或者用1年以上的時間完成一本書。對此,我的感受是,一本300到400書的寫作週期最長是8個月,如果超過這個時間。為了能在這個時間段裡完成一本書,我對應給出的建議是,新手作者可以寫案例書,別先寫介紹經驗類的書。

    什麼叫案例書?比如一本書裡用一個大案例貫穿,系統介紹一個知識點,比如小程式開發,或者全棧開發等。或者一本書一個章節放一個案例,在一本書裡給出10個左右python深度學習方面的案例。什麼叫經驗類書呢?比如我之前寫的面試類書就屬於這個,或者一些技術大牛寫的介紹分散式高併發開發經驗的書。

    請注意這裡並沒有區分兩類書的差異,只是對新手作者而言,案例書好寫。因為在其中,更多的是看圖說話,先給出案例(比如python深度學習裡的影象識別案例),然後通過案例介紹API的用法(比如python對應庫的用法),以及技術的綜合要點(比如如何用python庫綜合實現影象識別功能)。並且案例書裡需要作者主觀發揮的點比較少,作者無需用自己的話整理相關的經驗。對新手作者而言,在組織文字介紹經驗時,可能會有自己明白但說不上來的感覺,這樣一方面就無法達到預期的效果,另一方面還有可能因為無法有效表述而導致進度的延遲。

    但相反對於案例書,第一案例一般可以借鑑別人的,第二介紹現存的技術總比介紹自己的經驗要容易,第三一般還有同類的書可以供作者參考,所以作者不大需要斟酌措辭,新手作者用半年到八個月的時間也有可能寫完一本。當作者通過寫幾本書積累一定經驗後,再去挑戰經驗類書,在這種情況下,寫出來的經驗類書就有可能暢銷了。  

    那麼具體而言,怎麼高效出一本案例書呢?

    1 對整本書而言,先用少量章節介紹搭建環境和通用基本語法的內容。

    2 在寫每個章節案例時,用到總分總的結構,先總體介紹下你這個案例的需求功能,以及要用的技術點,再分開介紹每個功能點的程式碼實現,最後再總結下這些功能點的使用要點。

    3 在介紹案例中具體程式碼時,也可以用到總分總的結構,即先總體介紹下這段程式碼的結構,再分別給出關鍵程式碼的說明,最後再給出執行效果並綜述其中技術的實現要點。

    這樣的話,剛開始可以是1個月一個章節,寫到後面熟練以後估計一個月能寫兩個章節,這樣8個月完成一本書,也就不是不可能了。

7 如何在參考現有內容的基礎上避免版權問題

    寫書時,一般多少都需要參考現有的程式碼和現有的書,但這絕不是重複勞動。比如某位作者整合了不同網站上多個案例,然後系統地講述了python資料分析,這樣雖然現成資料都有,但對讀者來說,就能一站式學習。同樣地,比如在python神經網路方面,現有2,3本書分別給出了若干人臉識別等若干案例,但如果你有效整合到一起,並加他人的基礎上加上你的功能,那對讀者來說也是有價值的。

    這裡就涉及到版權問題,先要說明,作者不能抱有任何幻想,如果出了版權問題,書沒出版還好,如果已經出版了,作者不僅要賠錢,而且在業內就會有不好的名聲,可謂身敗名裂。但其實要避免版權問題一點也不難。

    1 不能抄襲網上現有的內容,哪怕一句也不行。對此,作者可以在理解人家語句含義的基礎上改寫。

    2 不能抄襲人家書上現有的目錄,更不能抄襲人家書上的話,同樣一句也不行,對應的解決方法同樣是在理解的基礎上改寫。

    3 不能抄襲github上或者任何地方別人的程式碼,哪怕這個程式碼是開源的。對此,你可以在理解對方程式碼的基礎上,先執行通,然後一定得自己新建一個專案,在你的專案裡參考別人的程式碼實現你的功能,在這個過程中不能有大段的複製貼上操作。也就是說,你的程式碼和別人的程式碼,在註釋,變數命名,類名和方法名上不能有雷同的地方,當然你還可以額外加上你自己的功能。

    4 至於在寫技術和案例介紹時,你就可以用你自己的話來說,這樣也不會出現版權問題。 

    用了上述辦法以後,作者就可以在參考現有資料的基礎上,充分加上屬於你的功能,寫上你獨到的理解,從而高效地出版屬於你自己的書。

8 新手作者需要著著重避免的問題

    在上文裡詳細給出了出書的流程,並通過案例書,給出了具體的習作方法,這裡就特別針對新手作者,給出些需要注意的實踐要點。

    1 技術書不同於文藝書,在其中首先要確保把技能知識點講清楚,然後再此基礎上可以適當加上些風趣生動的措辭。所以對新手作者而言,甚至可以直接用樸素的文字介紹案例技術,而無需過多考慮文字上的生動性。

    2 內容需要針對初學者,在介紹技術時,從最基本的零基礎講起,別講太深的。這裡以Python機器學習為例,可以從什麼是機器學習以及python如何實現機器學習講起,但如果首先就講機器學習裡的實踐經驗,就未必能確保初學者能學會。

    3 新手作者恨不得把自己知道的都寫出來。這種態度非常好,但需要考慮讀者的客觀接受水平所以需要在寫書前設定個預期效果,比如零基礎的python開發人員讀了我的書以後至少能幹活。這個預期效果別不可行,比如不能是“零基礎的python開發人員讀了我書以後能達到3年開發的水準”。這樣就可以根據預先制定的效果,制定寫作內容,從在你的書就能更著重講基礎知識,這樣讀者就能有真正有收穫。

    不過話說回來,如果新手作者直接和出版社編輯聯絡,找個熱門點的方向,並根據案例仔細講解技術,甚至都有可能寫出銷量過萬的暢銷書。

9 總結:在國內知名出版社出書,其實是個體力活

    可能當下,寫公眾號和錄視訊等的方式,掙錢收益要高於出書,不過話可以這樣說,經營公眾號和錄製視訊也是個長期的事情,在短時間裡可能未必有收益,如果不是系統地發表內容的話,可能甚至不會有收益。所以出書可能是個非常好的前期準備工作,你靠出書系統積累了素材,靠出書整合了你的知識體系,那麼在此基礎上,靠公眾號或者錄視訊掙錢可能就會事半功倍。

    從上文裡大家可以看到,在出書前期,聯絡出版社編輯和定選題並不難,如果要寫案例書,那麼在參考別人內容的基礎上,要寫完一般書可能也不是高不可攀的事情。甚至可以這樣說,出書是個體力活,只要堅持,要出本書並不難,只是你願不願意堅持下去的問題。但一旦你有了屬於自己的技術書,那麼在找工作時,你就能自信地和麵試官說你是這方面的專家,在你的視訊、公眾號和文字裡,你也能正大光明地說,你是計算機圖書的作者。更為重要的是,和名校、大廠經歷一樣,屬於你的技術書同樣是證明程式設計師能力的重要證據,當你通過出書有效整合了相關方面的知識體系後,那麼在這方面,不管是找工作,或者是幹私活,或者是接專案做,你都能理直氣壯地和別人說:我能行!