On October 23rd, 2014, we updated our
By continuing to use LinkedIn’s SlideShare service, you agree to the revised terms, so please take a few minutes to review them.
Turning Passion Into Words Tips, Tools, Techniques for Aspiring Authorstwitter: bphoganemail: brianhogan at napcs.com
http://www.flickr.com/photos/jjpacres/3293117576/why do we write?
http://www.flickr.com/photos/gemmacowan/303427032/But do people even read books anymore?
Yes. Very yes. http://www.flickr.com/photos/30743345@N04/4694171907
"But people can get all that off of blogs!"
The reader wants yourexperience, not your answers.
Let’s assume you have a topic.
Understand your audience
Define your target audience and decide who is outside
Create a reader profileTammy is a backend software developer She worksprimarily with Java. Shes great with VIm, knows how toconfigure Tomcat with XML, and understands how tough itcan be to get requirements out of users, but when itcomes to picking colors, fonts, or layouts, she needs help.She wants to be able to understand design concepts sothat her conversations with the UI team will go moresmoothly.
Connect with your reader
Dreyfus Model (of skill acquisition)"The Dreyfus model describes howand why our abilities, attitudes,capabilities, and perspectiveschange according to skill level." -Andy Hunt
NovicesNo previous experience, need recipes to solve problems.
10 years of experienceor one year of experience ten years in a row?
Advanced Beginners They can try tasks on theirown, but they still have difficulty troubleshooting. They want information fast.
CompetentCan develop conceptual models of the problem domain, troubleshooteffectively, and implement their own novel solutions.
Proficient They need the big picture and wantto understand the framework around the skill.
The expertExperts are the primary sources of knowledge and information in any field.
Experts are rare.1-5% of the population
Experts work from intuition and they often cannot explain how they do what they do.
Which one of these are you?
The competent make the best teachers
Most people stop progressing at Advanced Beginner.
Learn about this modeland use it to move your reader from one stage to the next.
Define your thesis!What are you talkin about??
HTML5 and CSS3 are the future of webdevelopment, but you don’t have towait to start using them. Even thoughthe specification is still indevelopment, many modern browsersand mobile devices already supportHTML5 and CSS3. This book gets youup to speed on the new HTML5elements and CSS3 features you canuse right now, and backwardscompatible solutions ensure that youdon’t leave users of older browsersbehind.
Outline your writing 1. HTML5 Forms 1.New form fields 1.Email, url, tel, number, range, date, color 2.discuss fallbacks 1.implement fallback with jquery-ui for calendars 2.discuss modernizr 3.Placeholder and Autofocus 1.Placeholder 1.Placeholder fallback with custom plugin
What do you want the reader to learn? Set goals at the start and see if you meet them at the end.
Research your market• What books out there are similar to yours?• Why would yours be different?• What is your audience size?• How many of them would buy a book on the topic?• What other books would have similar sales numbers to yours?
Your first chapterand don’t start with “Introduction!”
Write about what you are excited about first to gain momentum.
Writing about CodeThe best books about code talk more aboutthe why than the how.Don’t just explain the code. Explain whythe code you’re demonstrating is the bestsolution.
AVOID APPEAL TO AUTHORITYBe the expert Don’t use quotes from well-known people to bolster your argument.Use your experience!
Get into a pattern
Be consistent. Try to do a chapter in two weeks.
Voicesetting the tone.
Be yourself.Don’t be funny if you’re not.
Beware of emulationDon’t write like you think you should write or how you see others write.
AcademicBehavior driven development (or BDD) is an agile softwaredevelopment technique that encourages collaboration betweendevelopers, QA and non-technical or business participants in asoftware project. It was originally named in 2003 by Dan Northas a response to Test Driven Development, including AcceptanceTest or Customer Test Driven Development practices as found inExtreme Programming. It has evolved over the last few years.
Less AcademicBehavior driven development is a software developmentmethodology created by Dan North in 2003 as a responseto traditional Test Driven Development. It includeselements of Extreme Programming, such as acceptancetesting, and it encourages collaboration between technicaland non-technical members of a software developmentteam.
Say more with less• “Utilize” should be “Use”• “At this point in time” should be “Now”• “What x does is...” - just tell us already!• “really”, “very”, “quite”, “severely” don’t emphasize things as much as you think they do. Look for them, remove them, and see if you like how it looks.
Compare:There are twenty-ﬁve students who have already expressed a desire to attendthe program next summer. It is they and their parents who stand to gain themost by the government grant.Twenty-ﬁve students have already expressed a desire to attend theprogram next summer. They and their parents stand to gain the mostby the government grant.
So you have an idea,a thesis, an outline, some content that we’ve written and self- edited... let’s get published.
Finding a publishervs Self Publishing
Benefits of Traditional Publishers
They have a brand.
They have people to help you • Developmental editors • Copy editors • Professional indexers • Production managers • Marketers • Artists • Professional Typesetters • Foreign Rights brokers
They are also moreexperienced than you
You get a lot of help...but it comes at a cost.
The AdvanceNot always a good deal.
$10,000 advance, 10% royaltiesIf your book doesnt sell, you did a years worth of work for $10,000
Buybacks Publishers have to buy back yourbooks from Amazon if they dont sell.
Self publishing Go it alone?
Can you1. write a concise book that meets the needs of your reader, reasonably free of errors?2. get an unbiased opinion of your work?3. deliver your book in print form to those that want it?4. deliver your book in PDF, ePub, or Kindle format in a way that actually looks good across multiple platforms and devices?5. be willing to promote the hell out of your book through web sites, user groups, communities, trade shows, etc?
Of course you can.But do you have the time?
Finding a publisher• Start with a publisher you respect.• Each publisher has a different process, but most publishers have acquisitions editors that work to find authors for topics. – http://pragprog.com/write-for-us/ –
Developmental Editors Your pair.
A good DE can• Be a sounding board for your ideas and help you find your target audience• Give you feedback as an outsider on your content• Help you keep your tone consistent• Help you stay on track
Copy EditorYoull want one.
Tools to get stuff done
Version controlTreat your book just like code. Its valuable.
A writing tool
XAvoid MS Word.
Markdown plain text to HTML
Extending Ruby============Instead of using monkeypatching, we caninclude our codeas a *module*. module NinjaBehavior def attack puts "Youve been silently killed" end endWe can then bring this behavior into ourclasess. Thistechnique is often called a *mixin*.
You can convert Markdown to HTML and PDF with relative ease.
Markdown does not convey meaning.
Docbook the revenge of XML
XML is only evilwhen you use it wrong.
Docbook features• Descriptive markup• Automatic chapter and section numbering• Automatic cross-referencing• Table of Contents generation• Support for indexing• Extendable• Complete separation between content and presentation• Export to HTML, PDF, ePub, etc
Docbook example<chapter xmlns="http://docbook.org/ns/docbook" xml:id="models.association.ext"><title>Using Association Extensions to group records</title> <para> Association extensions let us apply methods to our ActiveRecord associations so we can quickly get access to your collected data. </para> <para> Our registration system needs a report of all currently enrolled students in a given workshop. We can do that fairly quickly by defining our own <methodname>currently_enrolled</methodname> method on the <classname>Workshop</classname> class like this:. </para> <programlisting language=”ruby”> <![CDATA[ class Workshop < ActiveRecord::Base has_many :enrollments has_many :students, :through => :enrollments def currently_enrolled enrollments.find_all_by_enrolled(true) end end ]]> </programlisting>
Structural markup• chapter – sect1 • sect2 – sect3 – para – orderedlist • listitem – para – unorderedlist • listitem – para