| « unexpected C#2 ambiguity |
Experiences concerning software book writing
Here we are ! My first post!
It is dedicated to software book writing. I got a chance to write a book concerning .NET and C# (‘Pratique de .NET et .C#’ O’Reilly 2003 only in French for now http://www.amazon.fr/exec/obidos/ASIN/2841772454/171-1380742-3141034 ) and that was a marvellous experience. For Sure, it won’t be the last.
Here are some advices I can give to someone that would like to write a software book:
Write at least 150 pages before providing anything to a publisher. You have to prove that you know your subject, that you can write and that you are patient enough. If your book is around this size, ask yourself if you are writing a software book (;)Tom it’s a joke!!).
Each time you stumble on a subtle problematic on your subject that you were not aware of, don’t consider it as a hurdle that will slow down your process. Consider it as a blessing that will make your book more useful for readers than the others. Drill into the concerned subject until you got the full picture in mind. Then write about it. It took me 4 full days to get the big picture of .NET remoting in mind (thanks M.Box and M.Rammer)! Anyway, don’t begin to write anything on a subject that you don’t deeply understand.
Don’t begin a new chapter before having done properly the current one. Of course you can take some notes for future chapters and of course you will likely add info to chapters that you consider as done. From my experience, there is no better incentive than this feeling of ‘job done, job well done’ to boost you for the rest. And motivation is the only thing you need, right?!.
Start to write chapters that you consider as most complicated. Don’t cheat with yourself on this one. More generally, always give priority to things that daunt you.
Code example must be fully compilable code and as small as possible. Give as less excerpt as possible, only full code. With a language such as C#, most relevant example take around 10/15 lines (incuding the using statement). Provide a dowloadable zip file containing all examples. Readers must be able to compile and run them seamlessly. Build this example collection while writing. In code example, don't put more than 70 characters' a line and use spaces and not tabs to indent.
Save your screenshot in PNG format.
Take care of orthography since the beginning of the process.
Be aware that you’ll spend some 12-14h/days (most week end included) during several months. It’s a good idea to plan to write during the season you dislike the most. It’s also a good idea to have some discussion about it with your relatives before and during the writing process.
To gauge your motivation, you should be able to sleep a bit less than usual without any problem.
If you like to write until late in the night, try to wake you up at 5 A.M during a week. As me, you might find out that you are far more efficient like that (else, sorry for the wasted week :oops:).
Writing a book is more an intellectual process than a business. After typing millions’ characters (more than two millions for Pratique!), after having thoroughly cover thousands of interesting details, you’ll find out that you can think more quickly and more accurately than before (not only on the subject you choose). I didn’t get this feeling of ‘several brains’ since the end of my ‘prépa’ (for 'non french guys' 'prépa' is a a two years intensive class dedicated to do selection amongst pupils of a generation).
Writing a book is also a real boost for your career. You are not anymore the lambda candidate for a job or a mission. I don’t see anything better for a software guy’s resume.
This is my experience but I think that if you are a ‘naturally born writer’, you know it somehow. I wasn’t good in school at literature but I recall having written a 40 pages book about prehistoric animals when I was 10 (not published :-/ ).
To conclude this post, here are some thoughts written by some paramount authors. I’ve been particularly interested by the idea of self-publishing from Brian Bischof.
http://perseus.franklins.net//DotNetRocks_0077_Charles_Petzold.asx
http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=1464
http://www.sellsbrothers.com/spout/#What_Makes_A_Book_Successful
http://www.aristeia.com/publications_frames.html (Advice to Prospective Book Authors)
7 comments
BTW, welcome to this blog
-S
explain in words what the example is supposed to do and provide an example of the display!
This is because most of your readers are in a bus, not always in front of a screen.
Another thing that always worry me in most books: sample code! Nothing is worse than a vague mental scheme, more especially if the subject is tricky. The number of samples should be proportionnal to the number of concepts in the chapter. There is no simplistic samples. Many time the reader has not too much time to understand or he might be tired, in a crowdy bus...
I think that the content of your book is useful (very useful), however, I'm somewhat puzzled about some chapters organization.
For instance, it's somewhat strange that you treat about deployment straight in Chapter 3, and within that same chapter, you explain the technique for locating assemblies.
Another example is in chapter 4, where you describe the Garbage collector, and right after, without any transition, Exception Handling.
Another little comment : I would personally not use french punctuation in the code samples.
Now, I'm certainly not here to criticize your book (I am simply not in the position to do that since I never wrote a book), but simply to provide you with feedback so that your next book becomes even better than the current one.
Sélim
I'm glad to know that you deem the content of Pratique as useful.
I think that there is no perfect organization of such a breadth of subjects. It can only be based on compromise. You can get an introduction about .NET that can be read from A to Z, but not a 800 pages book that tries to drill into every subjects. However, I did my best to write chapters that can be read from A to Z, from basics to advanced notes.
Concerning your particular notes:
->Deploiement presented as soon as Chapter 3: I wanted to introduce the concept of assemblies at the beginning since everything in .NET relies more or less on it. Since deploiement relies heavily on assemblies, I choose to talk about it straight after.
->Chapter 3: I think that you get interested in how the CLR is locating assemblies when you mull over the deploiement of your assemblies.
->Chapter 4: I assume that readers are not acquainted with the concept of virtual machine. Thus, I tried to herd the breadth of services provided by the CLR in a single chapter, to pinpoint its usefulness. Garbage collecting and exception handling are part of this set of services. Note that exception handling are detailed further in Chapter 13.
I agree. Separating the CLR side and the C# side of exception handling is not a panacea and it would have make sense to expose the locating assemblies algorithm as a service of the CLR. I'm looking for any reluctant notes concerning the organization of Pratique since I plan to make a 2005 edition.
Patrick
But if u want - make it !
Comments are closed for this post.