APIs And SDKs Breaking Into And Succeeding In A Specialty Market


Published on

Presentation at the March 2009 meeting of the Society for Technical Communication Northern New England Chapter

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Give my bio. For the past almost 4 years, I’ve been an “indie”, working on various APIs, speech related products, backup technologies, and a repeat client dealing with Web services. Over 21 years experience in technical writing, with experience in producing printed documentation in Microsoft Word and Adobe FrameMaker; various forms of context-sensitive online help such as Windows Help, HTML Help, WebHelp, and JavaHelp; Unix manpages; and producing documents for the Web. With a concentration on single-sourcing solutions, archiving, and recreating product documentation from revived products in my career.
  • APIs And SDKs Breaking Into And Succeeding In A Specialty Market

    1. 1. APIs and SDKs: Breaking Into and Succeeding in a Specialty Market Ed Marshall Copyright 2009
    2. 2. APIs and SDKs <ul><li>API = Application Programming Interface </li></ul><ul><li>SDK = Software Development Kit </li></ul><ul><li>Typical users and why they use them </li></ul><ul><li>Typical producers of these products </li></ul><ul><li>Examples </li></ul>
    3. 3. Typical Documentation Deliverables <ul><li>Programmer’s reference guides </li></ul><ul><li>Online help (in some format, more later) </li></ul><ul><li>Performance & Tuning Guides </li></ul><ul><li>Programmer’s guides </li></ul><ul><li>Data dictionaries </li></ul><ul><li>API and SDK installation manuals </li></ul><ul><li>System administrator's guides </li></ul><ul><li>User configuration guides </li></ul>
    4. 4. Ideal Information for SDKs <ul><li>Provide an overview of the SDK </li></ul><ul><li>Describe the tools and components in the SDK and how they relate to the APIs </li></ul><ul><li>Describe each tool in detail </li></ul><ul><li>Describe any sample programs included in the SDK </li></ul>
    5. 5. Ideal Information for APIs <ul><li>Break each component into the various families </li></ul><ul><li>Describe each API completely, including cross-references to any types used in the definition </li></ul><ul><li>Provide and explain examples that show both trivial and complex use of the class / API </li></ul>
    6. 6. Reference Information for APIs <ul><li>Brief description </li></ul><ul><li>Syntax </li></ul><ul><li>Examples, examples, examples! </li></ul><ul><li>Error messages </li></ul><ul><li>Cross-references </li></ul>
    7. 7. Examples of API / SDK Documentation <ul><li>Visual Basic ActiveX Control Help Sample – print and online help </li></ul><ul><li>C++ API Help Sample – print and online help </li></ul><ul><li>Typical SDK documentation – Guide to Tools, Programmer’s Reference, Programmer’s Guide, etc. </li></ul>
    8. 8. Key Programming Concepts <ul><li>Data types / variables </li></ul><ul><li>Program control – loops, conditions, etc. </li></ul><ul><li>Logical operators </li></ul><ul><li>Data structures such as arrays </li></ul><ul><li>Functions / methods </li></ul>
    9. 9. Benefits to the Writer <ul><li>Do more advanced technical writing = Higher pay / higher status </li></ul><ul><li>Good if you like to play with software at the code level, create / test examples, talk / write in gibberish </li></ul><ul><li>Work more closely with developers </li></ul>
    10. 10. Drawbacks to the Writer <ul><li>Possibly restrictive / repetitive writing </li></ul><ul><li>Possibly less contact with users as they are developers / programmers themselves </li></ul><ul><li>Possibly, more technically challenging development / build environments </li></ul>
    11. 11. Knowledge / Personality Traits that Work Well <ul><li>Some knowledge of programming languages BUT you don’t have to be a programmer! </li></ul><ul><li>Willingness to work with advanced / programmer types of tools – Use software instead of specs </li></ul><ul><li>Desire to work at the code level and write for developers who work at the code level </li></ul>
    12. 12. Knowledge / Personality Traits, cont. <ul><li>Willingness / confidence to work closely with senior developers </li></ul><ul><li>Ability to develop context-sensitive level help at a lower-level than typical end-user (window-level) help </li></ul>
    13. 13. Ways to Add Value <ul><li>Organizing information – change from timeline to alphabetical, grouping by categories of function, etc. </li></ul><ul><li>Adding missing information </li></ul><ul><li>Removing info not needed </li></ul><ul><li>Correcting discrepancies / non-parallel formats / descriptions </li></ul><ul><li>Using terms consistently </li></ul><ul><li>Providing better definitions – meaningful, not just repeating the function </li></ul>
    14. 14. Ways to Add Value, cont. <ul><li>Providing usage notes </li></ul><ul><li>Recommending sequence of use – flow charts </li></ul><ul><li>Alphabetizing lists of error messages (removing duplicates) </li></ul><ul><li>Correcting spelling via custom spell-check dictionaries </li></ul>
    15. 15. Ways to Get Information <ul><li>Read the code - * </li></ul><ul><li>Use the software </li></ul><ul><li>Read the specifications </li></ul><ul><li>Attend demos </li></ul><ul><li>Run automated tools against the software - * </li></ul><ul><li>Provide fill-in-the-blank templates to developers - * </li></ul>
    16. 16. What Code Files Do You Need? <ul><li>C: </li></ul><ul><li>.c files </li></ul><ul><li>header files (.h files) </li></ul><ul><li>other files: error files </li></ul><ul><li>Java: </li></ul><ul><li>.java files </li></ul><ul><li>C++ </li></ul><ul><li>.cpp files </li></ul><ul><li>Header files (.h files) </li></ul><ul><li>C#: </li></ul><ul><li>.cs files </li></ul>
    17. 17. Information You Get from the Code <ul><li>Look in both internal / external files / functions for: </li></ul><ul><li>Function calls and signatures </li></ul><ul><li>Return values </li></ul><ul><li>Enums, structs, etc. </li></ul><ul><li>Error codes </li></ul>
    18. 18. Information You Can’t Get from the Code <ul><li>Why someone would use a certain function, </li></ul><ul><li>The recommended logic flow: the order in which functions need to be called </li></ul><ul><li>Background information </li></ul><ul><li>Usage notes </li></ul><ul><li>Relationships between functions (get / set, open / close, etc. but can deduce these and verify with developers </li></ul>
    19. 19. Generating Docs from the Code <ul><li>“ A single source of truth!” </li></ul><ul><li>Common tools used: </li></ul><ul><li>Doxygen </li></ul><ul><li>JavaDoc </li></ul><ul><li>Sandcastle – New tool for .Net help (MSDN style) – Doc-to-Help only HAT to support this. </li></ul><ul><li>Others </li></ul>
    20. 20. Doxygen <ul><li>Very powerful code generation tool </li></ul><ul><li>Free </li></ul><ul><li>Reads specially formatted comments in code </li></ul><ul><li>Supports C / C++, Java, Python, IDL, and C# </li></ul><ul><li>Outputs RTF, compiled HTML Help, browser-based help, and LaTex (PDF) </li></ul><ul><li>Compatible with Javadoc 1.1 </li></ul><ul><li>Active development / support </li></ul><ul><li>www.stack.nl/~dimitri/doxygen/download.html#latestsrc – current version is 1.5.8 (Dec. 08) </li></ul>
    21. 21. JavaDoc <ul><li>Powerful code generation tool for Java </li></ul><ul><li>Free </li></ul><ul><li>Reads specially formatted comments in code </li></ul><ul><li>Outputs browser-based help </li></ul><ul><li>Active development </li></ul><ul><li>www.sun.com – current version: Java Development Kit 5.0 Update 15 </li></ul><ul><li>www.doclet.com – source for Java Doclets and Javadoc information </li></ul>
    22. 22. Possible Strategies / Timeline for Accessing Code <ul><li>Edit comments in code but don’t make changes in code – shows you know the difference between comments & code. </li></ul><ul><li>Learn how to generate output from code and demonstrate “safe computer practices”– Do test builds and verify against known good builds. </li></ul><ul><li>Commit to only changing comments – and stick to it. </li></ul><ul><li>Best practice: build outputs locally using the company’s system before checking in changes – builds trust in your work. </li></ul>
    23. 23. Templates <ul><li>Show and discuss a typical template containing the sections / information that should be included for each function. </li></ul>
    24. 24. Writing Style Differences <ul><li>Use active voice </li></ul><ul><li>Sentence fragments are acceptable </li></ul><ul><li>Use of verbs / gerunds to start phrases </li></ul><ul><li>Eliminate “useless” words that are noise to developers </li></ul>
    25. 25. Microsoft IDEs <ul><li>Visual C </li></ul><ul><li>Visual C# </li></ul><ul><li>Visual Basic </li></ul><ul><li>Visual J# </li></ul><ul><li>All free from http://www.microsoft.com/express/download/ </li></ul>
    26. 26. Other IDEs <ul><li>Sun NetBeans – www.sun.com (Free - search for NetBeans) </li></ul><ul><li>Eclipse – www.eclipse.org (a free open source IDE) </li></ul>
    27. 27. Build and Deployment Issues <ul><li>Selecting the best help format </li></ul><ul><li>Use of automated build systems </li></ul><ul><li>Use of source code control systems </li></ul><ul><li>Other tools to do file comparisons, advanced text editors, multi-file search and replace, etc. </li></ul>
    28. 28. Determining Which Help Format to Use <ul><li>Platforms </li></ul><ul><li>Browsers </li></ul><ul><li>Minimum versions required by your product </li></ul>
    29. 29. Help Formats <ul><li>Commonly used help formats: </li></ul><ul><li>HTML Help 1.x </li></ul><ul><li>WebHelp / Web Help </li></ul><ul><li>WinHelp – Not in Vista but… </li></ul><ul><li>Uncommonly used help formats: </li></ul><ul><li>HTML Help 2.0 (used with Microsoft VisualStudio.NET) </li></ul><ul><li>JavaHelp </li></ul><ul><li>Vista help – Not available to us in Vista </li></ul>
    30. 30. Context-sensitive Help <ul><li>Need to determine if it is necessary </li></ul><ul><li>Need developers to implement / hook to the API </li></ul><ul><li>Have to use the appropriate API for the help format </li></ul><ul><li>Mapping of context IDs to numbers / text strings </li></ul><ul><li>Need to test all links from the product </li></ul>
    31. 31. Sample Context ID Mapping for HTML Help <ul><li>Sample .h file entry: #define IntroTopic 0001 #define CloseSpeech_PM 2001 #define EngineTerminated_E 3001 </li></ul><ul><li>Sample .ali file entry: IntroTopic=Intro_Topic.htm CloseSpeech_PM=CloseSpeech_Method.htm EngineTerminated_E=EngineTerminated_Event.htm </li></ul>
    32. 32. Help Authoring Tools (HATs) <ul><li>RoboHelp – www.adobe.com </li></ul><ul><li>Flare – www.madcapsoftware.com * </li></ul><ul><li>Doc-to-Help – www.componentone.com * </li></ul><ul><li>Help & Manual – www.ec-software.com/ </li></ul><ul><li>WebWorks ePublisherPro – www.quadralay.com </li></ul><ul><li>AuthorIT – www.authorit.com </li></ul><ul><li>For a searchable database of HATs, see hat-matrix.com/ - Char James-Tanny’s service </li></ul><ul><li>* Demo CDs available </li></ul>
    33. 33. Advanced Text Editors <ul><li>NoteTab Pro and EditPad Pro: </li></ul><ul><li>Both tools have: Spell-checking. Big plus if you work in a mixed OS environment: Neither tool inserts Windows-style line feed characters in Unix files. </li></ul><ul><li>NoteTab Pro has an auto-complete option for html tags and other languages. Has a free version with reduced functionality. www.notetab.com $19.95, Lots of other tools here. </li></ul><ul><li>EditPad Pro has color-coding for custom html tags www.jgsoft.com $39. Free full-featured (except for Spell Check) evaluation download available. JG Soft has other tools such as a PowerGrep tool, Registry editor, and others. </li></ul>
    34. 34. Uses for EditPad Pro <ul><li>Very good for adding / revising text in source code files (C, Java, and C#) </li></ul><ul><li>Auto indent / tab </li></ul><ul><li>Spell-checking </li></ul><ul><li>color-coding for custom html tags </li></ul><ul><li>Auto-sorting </li></ul><ul><li>Specifying line length per file type </li></ul>
    35. 35. Uses for NoteTab Pro <ul><li>Very good for adding HTML / XML tags to text copied to source code files from other file formats </li></ul><ul><li>HTML wizard – auto-create </li></ul><ul><li>Apply HTML / XML coding to text via wizard </li></ul><ul><li>Spell-checking </li></ul>
    36. 36. File / Folder Level Comparison (Differencing Tools) <ul><li>Beyond Compare – Performs folder and file level comparisons, ASCII and binary. Can detect that ASCII or binary files are different but can only show the differences in ASCII files, not binary files. Highlights the specific characters different between 2 ASCII files. Has a 30-day full-featured free trial. www.scootersoftware.com/ Retail price: $30 </li></ul><ul><li>Araxis Merge - Performs folder and file level comparisons, ASCII and binary. Has a 30-day free trial. www.araxis.com/merge/index.htm l Retail price: $129 </li></ul>
    37. 37. Search and Replace Tool <ul><li>Funduc – Searches & replaces both folders and zip files. Will search & replace ASCII and binary files. Will search binary files but cannot replace by itself. Has plug-ins for Word, Excel, and PowerPoint. http://www.funduc.com $25 Many other tools here also. </li></ul><ul><li>FAR (Find and Replace) – Search and replace tool, help decompiler / comparison tool. Two month free trial http://www.helpware.net/FAR/ Cost: buyer’s choice </li></ul>
    38. 38. Sample APIs <ul><li>Google APIs – code.google.com/more/#label=APIs&product=gdata </li></ul><ul><li>Google Earth API – earth.google.com/comapi/ </li></ul><ul><li>Google Maps API – code.google.com/apis/maps/ </li></ul><ul><li>BackPack – www.backpackit.com/ </li></ul>
    39. 39. Breaking into this Market <ul><li>Get training to develop the skills: - Courses - Self-paced training - On-the-job training </li></ul><ul><li>Make your own sample help systems, with context-sensitive help coded </li></ul><ul><li>Write some sample programs </li></ul>
    40. 40. Education / Training Opportunities <ul><li>Programming courses at local colleges </li></ul><ul><li>STC conferences / workshops </li></ul>
    41. 41. Self-Paced Training <ul><li>Manuel Gordon’s API materials ( www.gordonandgordon.com ) </li></ul><ul><li>Documenting APIs: Writing Developer Documentation for Java APIs / SDKs – James Bisso / Victoria Maki ( www.bitzone.com/book.html ) </li></ul><ul><li>Deitel & Deitel “(C / C++ / C# / Java) How to Program ” </li></ul><ul><li>Sams “ Teach Yourself …” </li></ul><ul><li>Sample projects, such as the HTML Help API </li></ul>
    42. 42. Other Resources <ul><li>MSDN – msdn.microsoft.com </li></ul><ul><li>RoboWizard Web site – www.robowizard.com </li></ul><ul><li>Flare forums – www.madcapsoftware.com </li></ul><ul><li>RoboHelp / Flare Web site – www.grainge.org/ </li></ul>
    43. 43. Listservers (Yahoo Groups) <ul><li>STC API – groups.yahoo.com/group/svcstcapi/ </li></ul><ul><li>API writers – groups.yahoo.com/group/APIWriters/ </li></ul><ul><li>NetTechWriters – groups.yahoo.com/group/nettechwriters/ </li></ul><ul><li>HATT – groups.yahoo.com/group/HATT/ </li></ul>
    44. 44. Listservers (Yahoo Groups), cont. <ul><li>MSHelp 2.0 – groups.yahoo.com/group/MSHelp2/ </li></ul><ul><li>Eclipse – groups.yahoo.com/group/eclipse_tw/ </li></ul>
    45. 45. Web Services – A Growing Area <ul><li>Web Service - An application that provides a Web API to perform application integration </li></ul><ul><li>Platform / language independent </li></ul><ul><li>Related to service oriented architectures (SOAs) </li></ul><ul><li>Uses SOAP (Simple Object Access Protocol) to send / receive XML messages </li></ul>
    46. 46. Web Services / SOA resources <ul><li>Web Services A Manager’s Guide – Anne Thomas Mannes </li></ul><ul><li>Service Oriented Architecture for Dummies – Judith Hurwitz, Robin Bloor, and Carol Baroudi </li></ul>
    47. 47. Typical Daily Activities <ul><li>Check nightly build logs for failures / checkins </li></ul><ul><li>Update SVN </li></ul><ul><li>Research any changes to APIs, error messages, etc. </li></ul><ul><li>Check bug system for my assigned bugs, changes to bugs I’m following, new API-related bugs </li></ul><ul><li>Download & install new kits (if it’s safe to do so) </li></ul><ul><li>Document new features / changes to APIs </li></ul>
    48. 48. Summary <ul><li>Description of APIs / SDKs </li></ul><ul><li>Benefits to writers </li></ul><ul><li>Drawbacks to writers </li></ul><ul><li>Training </li></ul><ul><li>Writing considerations (tools, formats, issues for context-sensitive help) </li></ul>
    49. 49. Closing <ul><li>Thank you. </li></ul><ul><li>Questions? </li></ul><ul><li>Ed Marshall </li></ul><ul><li>Marshall Documentation Consulting </li></ul><ul><li>[email_address] </li></ul><ul><li>www.MarshallDocumentationServices </li></ul><ul><li>+1 978-339-3095 </li></ul>