Jak jsem psal knihu

V této stati bych rád přiblížil své zážitky a pocity při psaní knihy. Celý proces od počátku až do vydání trval dva roky a jeden měsíc. Za tu dobu jsem zažil těžké časy, krásné chvíle a přišel o některé iluze.

Cesta ke smlouvě: jak to všechno začalo

Myšlenka uložení znalostí do delšího textu ve mně klíčila již relativně dlouho předtím, než jsme se dali s nakladatelstvím Computer Press dohromady. Tehdy jsem měl poměrně naivní pohled na okolní svět. Mé motto v té době tvořila tři slova: lidé musí vědět. Myslel jsem si, že pokud lidé budou mít hlubší znalosti, půjde s nimi (mimo jiné) hůře manipulovat a celý svět se stane lepším místem. Samozřejmě jsem si nedělal iluze o tom, že umění programování ovladačů jádra změní řád světa, ale moje pozorování (prováděná převážně na mojí osobě) naznačovala, že hluboké znalosti v jednom oboru se v jistém smyslu pozitivně promítají do oborů jiných i do celkového charakteru člověka.

Nacházel jsem se tedy v rozpoložení, kdy stačil pouze malý impulz, abych své znalosti začal psát na papír. Navíc mi bylo jasné, že napsáním knihy tematicky zaměřené na popis interních struktur jádra operačního systému nepřijdu k žádným významným finančním prostředkům, a tudíž jsem byl (nebo spíše budu) ušetřen případného zklamání. Pravdou je, že již tehdy jsem zveřejňoval své znalosti prostřednictvím článků různé kvality, ale to nebylo ono. Nevznášel se nade mnou žádný bič, který by mě nutil k přesnosti a dotažení věcí do konce. A já takový bič opravdu potřebuji.

Impulz přišel na konci července roku 2009. Na internetových serverech se objevila zpráva, že nakladatelství Computer Press hledá nové autory. Promluvili jsme si o této nabídce s mým nejlepším kamarádem, který se nacházel v podobném rozpoložení jako já. Výsledkem byla odpověď na inzerát.

Rozhodli jsme se, že kniha bude pokrývat různé techniky používané škodlivými programy a rootkity. Nebudou samozřejmě chybět i praktické ukázky, aby čtenáři látku snadněji pochopili. S tímto tématem ale nakladatelství nesouhlasilo. Knih o bezpečnosti a „hackování“ je na českém trhu již dostatečné množství. Spíše by uvítali publikaci s tematikou podobnou dílu Windows Internals, která podrobně popisuje většinu zákoutí jádra Windows.

Po odmítnutí námi navrhovaném tématu nastala mezi mnou a kamarádem diskuze ohledně toho, jak dále postupovat. Kamarád nechtěl zaměření navrhované nakladatelstvím akceptovat. Zaměřuje se především na nízkoúrovňové programování v uživatelském režimu a do temných zákoutí jádra zatím podnikl pouze několik výletů. Dále (stejně jako já) měl za to, že kniha s námi navrhovanou tematikou bude v českém a slovenském prostředí jedinečná. V tomto ohledu jsme se tedy od názoru nakladatelství ostře lišili.

Já jsem se rozhodl přání pánů redaktorů vyhovět. Jíž v té době jsem jádro Windows docela intenzivně zkoumal. Zároveň jsem si uvědomoval, že bezpečnost a „hackování“ s popisem interního uspořádání kernelu a operačního systému souvisí. To znamená, že kniha sice nesmí prvoplánově pojednávat o původně zamýšleném tématu, ale může se k němu uchylovat na místech, kde je pochopení souvislostí velmi důležité. A takových míst není málo. Původně zamýšlené téma se tedy stalo tématem vedlejším a bylo možné mu věnovat určitý omezený prostor.

Po přečtení posledního odstavce se můžete oprávněně ptát, proč jsme s kamarádem nezkusili oslovit jiná nakladatelství, když jsme tak chtěli psát knihu o technikách používaných škodlivými kódy. Pravda je taková, že jsme o této variantě uvažovali. Já jsem však tuto možnost v podstatě zazdil, což mi může být přičteno jedině ke zlu.

Před několika měsíci nám jeden profesor vyprávěl, jak je to s vědci a sepisováním žádostí o granty: „Vás jako biologa baví například zkoumat chování užovek okolo Kladna. Abyste na tuto činnost ale získali peníze, musíte projít spoustou formalit a napsat o tom, jaké praktické výsledky váš výzkum přinese. Včetně toho, že bude mít pozitivní vliv na nezaměstnanost v dané oblasti.“ Já jako spisovatel s naivním pohledem na svět jsem se rozhodl žádnými formalitami neprocházet a využít toho, že je někdo vyřídil za mě. I když cíl práce bude trochu odlišný. Byla to pro mě nejjednodušší cesta, zvláště proto, že se nerad někomu vnucuji.

Věci dostaly rychlý spád. Dohodli jsme se na osnově a napsal jsem několik stránek textu ukazujících, jak bude výsledná kniha asi vypadat. Za tímto účelem jsem dal vzniknout počátku šesté kapitoly, která celá pojednává o technikách objektově orientovaného programování použitých v jádru Windows. Za ukázku jsem úmyslně nezvolil úvodní kapitolu, protože, ač se píše snadněji, bývá obvykle méně přesná, a tak se odlišuje od zbytku díla. Podle mého názoru je cílem úvodní kapitoly (nebo kapitol) čtenáři sdělit, co v knize přibližně najde a vštípit mu obecné základy, nikoliv podávat přesný, strohý a ucelený výklad.

Jak soudím z tehdejších reakcí pana redaktora, ukázka se velmi líbila. Přikročili jsme k sepsání a podepsání smlouvy, ve které jsem se zavázal odevzdat rukopis k jazykové korektuře začátkem června 2010. Opravdová práce začala.

Cesta k rukopisu: těžké začátky a další problémy

Netrvalo dlouho a zjistil jsem, že můj časový harmonogram práce na knize je velmi silně nadhodnocený. V té době jsem ještě patřil mezi pilné studenty, kteří ve škole často zůstávali od rána do večera. Provozoval jsem ještě další aktivity, takže na psaní knihy mnoho času a prostoru nezbývalo.

Jak plynuly měsíce a termín odevzdání rukopisu se přibližoval, špatný počáteční odhad časové náročnosti tvorby knihy představoval stále větší problém. Tehdy jsem si plně uvědomil, jaký je rozdíl mezi psaním knihy a tvorbou článků pro bezpečnostní portál SecIT.sk. Do článku vás nikdo příliš nenutí, nezodpovídáte (aspoň pocitově) tolik za přesnost a správnost jeho obsahu, ale hlavně: článek pokrývá jen velmi malou oblast vědění a jeho obsah lze lépe přizpůsobit cílové skupině čtenářů, která může být velmi úzká.

S psaním knihy je všechno jiné. Cílová skupina je relativně široká, protože minimálně z pohledu nakladatelství je žádoucí, aby se prodalo rozumné množství kopií díla. V textu tedy musíte čtenářům vysvětlit spoustu věcí, které se sice hlavního tématu přímo netýkají, ale jejichž pochopení je nutné pro další výklad. U širší cílové skupiny nelze předpokládat znalosti, které by dovolily tento krok vynechat. Kniha by také měla vytyčenou oblast pokrývat uceleně, ne tu a tam nakousnout úplně nesouvisející témata.

Další problém tkví v množství textu – je třeba napsat několik set stran konzistentním, srozumitelným a stylisticky dostatečně kvalitním stylem. V případě článku lze takový styl relativně snadno dodržet, protože se jedná o krátkodobý proces. V případě knihy se však jedná o měsíce či roky téměř nepřetržitého psaní. Tento faktor měl velký vliv na způsob tvorby mého díla.

Zpočátku jsem psal text knihy přímo do počítače. Tento způsob se začal rychle jevit jako velmi neefektivní po odeslání části textu mému kamarádovi Tomáši Martincovi na kontrolní přečtení, které odhalilo velké množství stylistických a faktických chyb. Hlavní problém spočíval v rychle upadající schopnosti formulovat myšlenky. Zlepšení přineslo zavedení nové metody psaní textu.

Výrazný rys nového způsobu tvorby textu představoval návrat k propisce a obyčejnému papíru. Ukázalo se, že text psaný rukou dosahuje větší stylistické kvality než text vkládaný přímo do počítače. Navíc při přepisování do elektronické podoby docházelo k vychytávání dalších stylistických chyb a problémů jiného druhu.

Tento postup však s sebou přinášel nevýhodu v podobě vyšší časové náročnosti, v mém případě způsobené zejména procesem přepisování textu do počítače. Nejednou mě tehdy napadlo, jak úžasné by bylo disponovat dokonalejšími technikami rozpoznávání písma.

Další časově náročnou část úkolu představovaly zdrojové kódy ukázkových aplikací a ovladačů jádra. Na počátku jsem si vytyčil, že spolu s knihou vytvořím asi šestnáct projektů různého rozsahu, které čtenářům umožní lépe pochopit výklad a získané informace dále prohlubovat samostudiem. Opět jsem se přesvědčil, že vytvořit ukázkový zdrojový kód není lehká záležitost. Napsat si kus kódu pro „takové to domácí hraní“ je jedna věc. Vytvořit kód tak, aby rozumně vypadal a fungoval na většině verzí Windows, nejen na stroji jeho autora, je věc jiná.

Rychle jsem zjistil, že můj původní záměr umístit zdrojové kódy všech ukázkových projektů do textu knihy ve formě výpisů je vzhledem k jejich rozsahu nereálný. Do výpisů nakonec byly umístěny pouze ty nejzajímavější úseky, které stálo za to v okolním textu šířeji okomentovat. Některé projekty jsem se nakonec rozhodl do knihy vůbec nezařazovat. Tento osud potkal například ovladač demonstrující monitorování operací nad souborovým systémem. K jeho vypuštění jsem přikročil po dokončení projektu ukazujícího monitorování operací nad registrem, kde se celková velikost zdrojového kódu vyšplhala nad 130 KB.

Časovou náročnost psaní zdrojových kódů jsem si ještě uměle zvýšil. Můj původní záměr byl používat české názvy pro pojmenování různých prvků (proměnných, rutin, tříd…). Zpočátku šlo vše dobře a zdrojové kódy vypadaly i bez anglických názvů rozumně. Jak ale počet řádků narůstal, objevovaly se potíže s pojmenováním některých rutin sloužících pro specifické účely. V kódu se navíc často vyskytovala volání rutin rozhraní Windows API a funkcí pro podporu ovladačů, jejichž jména jsou samozřejmě anglická.

Tyto problémy a jmenné nekonzistence mě nakonec donutily změnit jazyk zdrojových kódů. Při této operaci jsem obzvláště ocenil pomoc, kterou pro tyto případy (přejmenování proměnných, datových typů, funkcí, procedur…) nabízí refactoring. V českém jazyce jsem ponechal pouze komentáře. V jejich případě byla volba češtiny více než žádoucí.

I přes výše popsané těžkosti práce na knize pomalu pokračovaly vpřed. Omezil jsem svůj pobyt ve škole na do té doby nevídané minimum, čímž vzniklo více času na psaní. Na odvrácení hrozby nestihnutí termínu odevzdání rukopisu bylo ale už pozdě. Na tomto místě musím pochválit nakladatelství, které po mně i přes skoro roční zpoždění nevyžadovalo placení pokut uvedených ve smlouvě. Nutno poznamenat, že by se nejednalo o zrovna zanedbatelnou částku. A já bych proti tomu neměl žádné námitky.

Emailová komunikace na téma sankcí ve mně vzbudila dojem, že jsem v některých ohledech stále příliš poctivý, když se o placení pokut hlásím dobrovolně. Došel jsem k závěru, že zpoždění se pravděpodobně dopouští většina autorů, a tak není v obecném případě trestáno.

Psal jsem tedy dál a termín odevzdání rukopisu k jazykové korektuře odsouval stále na pozdější datum. Po mnoha odkladech se konečným termínem stal přelom dubna a května 2011. Pro lepší ilustraci tehdejší situace si dovolím volně citovat Tomáše Martince, který při jedné příležitosti prohlásil: „Martine, řekni mi, že odevzdáváš za týden, a já budu vědět, že za tři měsíce to bude skutečně hotové.“ Tomáš se také zasloužil o lepší kvalitu první, druhé a části šesté kapitoly a pravděpodobně by mi pomohl mnohem více, kdybych měl na psaní více času a dokázal reagovat na jeho reporty o chybách. Ke své škodě jsem tuto šanci na zvýšení kvality textu zahodil.

Cesta k výtisku: co se dělo po prvním rukopisu

V únoru 2011 jsem odložil propisku a klávesnici. První fáze psaní skončila. Z důvodu zachování domluveného počtu stran a pravděpodobně také z důvodu mého velkého zpoždění došlo ke snížení počtu kapitol z patnácti na jedenáct. Nastal čas kontrol.

Už delší dobu jsem tušil, že ze strany nakladatelství nepřijde nikdo, kdo by text knihy zkontroloval po stránce informační kvality a přesnosti. Je to logické; jádru Windows a systémovému programování rozumí relativně málo lidí a objednat si někoho z nich vyjde pravděpodobně draze. Knihy od Computer Press se zabývají širokou škálou témat, mezi kterými se zmíněné oblasti příliš často nevyskytují, tudíž nemá velký smysl mít někoho pro tyto účely nastálo. I přes tyto předpoklady jsem do poslední chvíle věřil, že se někdo „oficiální“ objeví.

Absence „oficiální“ kontroly pro mě nepředstavovala velký problém. Lidí, kteří se zabývají jádrem systému Windows, najdete v našich končinách málo, ale ne nula. Kontrola od fundovaného odborníka knize velmi prospěla a znamenala odstranění velkého množství nesrovnalostí a doplnění chybějících informací. Přesto mě nezbavila děsivého pocitu, že je možné dostat do prodeje dílo úmyslně uvádějící nepravdivé informace. Celá tíha zodpovědnosti leží na autorovi.

Na přelomu dubna a května 2011 jsem odevzdal rukopis nakladatelství na jazykovou korekturu. Ne všechny při předchozích kontrolách nalezené chyby byly opravené. Předpokládal jsem, že většinu z nich jazykový korektor za mě automaticky vyřeší, protože spadají do jeho oblasti působnosti. Ne ve všech případech se tak stalo, ale lidé nejsou stroje, tudíž od nich nelze chtít nemožné.

Při autorské korektuře jsem však objevil i velké množství faktických chyb, které jakýmsi záhadným způsobem přežily mé předchozí pečlivé kontroly. Další problémy vznikly špatným formátováním textu z mé strany. Dokud se rukopis nacházel ve formátu ODF či DOC, vše vypadalo v pořádku. Ale po převedení do podoby „těsně před tiskem“ vynikly nesrovnalosti v odrážkách a odsazování zdrojových kódů. Rozhodnutí provést autorskou korekturu velmi pečlivě, a tedy ji protáhnout daleko za několikadenní limit stanovený ve smlouvě, podle mého názoru přispělo k velkému zvýšení kvality celého díla.

Po zanesení všech chyb jsem text knihy opět poslal nakladatelství, aby nalezené problémy posoudili a opravili. Při autorské korektuře jsem již pracoval s knihou v podobě dokumentu PDF, jehož vzhled odpovídal budoucí papírové podobě téměř 1:1. Informace o jednotlivých chybách jsem do dokumentu zanášel pomocí komentářů. Od té doby tento způsob kontroly dokumentů považuji za velmi dobrý a snažím se jeho používání rozšířit i do svého okolí. Předtím jsme při kontrole vypisovali problémové pasáže do textového souboru, což nyní považuji za způsob sice efektivní, ale pomalý jak pro člověka, který dokument kontroluje, tak i pro opravujícího.

Po opravě všech nalezených chyb oběhl text knihy ještě jedno „kolečko,“ provedli jsme poslední úpravy a výsledný dokument byl odeslán do tisku. Ten probíhal přibližně měsíc. Pro mě to neznamenalo zahálku, protože bylo nutné dokončit všechny ukázkové aplikace a ovladače, otestovat je a umístit jejich zdrojové kódy na internetové stránky knihy. Na konci srpna se mi vše podařilo dokončit a tím celá epizoda psaní skončila.

Závěr

Protože si myslím, že popis průběhu prací na knize jsem pojal poměrně detailně, rozhodl jsem se své nejdůležitější poznatky v závěru shrnout do následujících bodů:

  • Před psaním knihy proveďte důkladnou přípravu a podrobně prozkoumejte téma, které budete zpracovávat. Tím ušetříte spoustu času, jenž jinak strávíte ověřováním, zda to či ono tvrzení opravdu platí. Také se vyhnete nejasnostem a mlžení. Já jsem tuto fázi podcenil, jinak by mi psaní netrvalo tak dlouho.

  • Pokud jste rozhodnuti do knihy začlenit i ukázkové zdrojové kódy, dejte si pozor, aby vám nepřerostly přes hlavu, jako se to stalo mně. Velké množství zdrojových kódů znamená kratší čas na jejich úpravy a okomentování. Psaní čitelného a dobře fungujícího kódu jde velmi pomalu.

  • Zdrojové kódy pište souběžně s knihou. Obvykle totiž zjistíte, že teorie a praxe se od sebe výrazně liší a při programování ukázkových příkladů lépe pochopíte, jak dané rozhraní či mechanismus funguje. Obvykle také získáte zajímavé poznatky, o kterých je škoda se v textu nezmínit. Můj způsob práce, kdy asi polovina ukázkových kódů vznikla až po odeslání knihy do tisku, rozhodně nepatří mezi nejlepší. Dále je třeba mít na paměti, že výzkum určitého aspektu může trvat relativně dlouho.

  • Pokud chcete zajistit dostatečnou kvalitu textu po stylistické a informační stránce, spoléhejte převážně na sebe. Jazyková korektura provedená nakladatelstvím pomůže se stylistickou částí věci, ale není všemocná a nemůže z principu zajistit kvalitu po odborné stránce. Neočekávejte, že vaše dílo automaticky dostane na stůl někdo v roli oponenta, zvláště pokud se tématem knihy zabývá jen hrstka lidí. Napsal jsem zatím pouze jednu knihu, takže těžko mohu soudit, jak moc jsou tyto praktiky rozšířené. Představujte si, že kvalita výsledku závisí jenom na vás, což zvýší pravděpodobnost, že vaše dílo potěší všechny tři zúčastněné strany – vás, nakladatelství i čtenáře.

  • Pokud píšete úžeji zaměřenou odbornou publikaci, nečekejte příliš vysokou finanční odměnu. Toto pravděpodobně nemusí platit v případě tvorby odborných titulů například v anglickém jazyce. Podle mého názoru je finanční odměna pouze jakýsi přídavek. Rozhodně to nesmí být hlavní důvod, proč se do psaní knihy pouštíte. Pro jiné druhy publikací bude situace možná odlišná.

  • Psaní knihy zabere obrovské množství času. Pokud chcete stíhat domluvené termíny, je třeba omezit ostatní aktivity. Provozování aktivit jako škola či další práce ve větším než malém měřítku znamená velký problém.

Výše uvedené body berte pouze jako mé názory. Napsáním jedné knihy se ze mě rozhodně nestal přeborník v tomto oboru, a tak, pokud se chcete vydat do podobných vod, zkuste si raději najít rady od někoho, kdo má již za sebou titulů více.

4 Responses to Jak jsem psal knihu

    • Za rok mi kniha vynesla něco okolo deseti tisíc. Pokud uvážím všechny náklady s knihou spojené, tak v zisku nejsem ani náhodou. Ale to je dáno také tím, že jsem musel kupovat licenci k vývojovému prostředí, aby vše bylo legální.

  1. Jo, ještě jsem se chtěl zeptat, dá se to koupit ve formátu PDF ? (papírové knihy nečtu)

Leave a Reply to Martin Dráb Cancel reply

Your email address will not be published. Required fields are marked *