Microvision designed and built low-cost, handheld, laser bar code scanners. The initial technical information about this product was sparse and disjointed. Information was scattered between various groups including Marketing, Engineering, Product Support, and Sales. Details were inaccurate, difficult to find, contradictory, and much of the needed information did not exist.
Existing product information was gathered and organized into a knowledgebase. This knowledgebase contained product technical information, customer details (contact details, project notes, correspondence records, etc.), host interface details, programming notes for creating custom applications, reference materials related to the automated ID industry, etc. This information was organized into HTML files and compiled using the Microsoft HTML Help Workshop. Duplicate information was removed, contradictory information was reconciled, information gaps were filled, and all of the information was organized and linked. Complete demonstration programs were written in a variety of languages including C++, C#, VB6, and VB.NET (for both desktop and PocketPC). The interface and API documentation was included in the knowledgebase.
The resulting knowledgebase was organized into a Help File that included table of contents, index, search capability, topic sections, and reference sections. The Help Workshop compressed the source HTML files into a single, compressed Help file (.CHM). This file was moved to the corporate server. It was also sent to users and developers who copied it onto their local computers. The Sales team used this information when selling the scanner. The Technical Support group used it to answer customer inquiries. Inaccurate information was corrected, information was organized, and knowledge gaps were filled with useful information.
When I started at Microvision the product engineer told me that it took an average of two weeks for a customer to integrate the bar code scanner into an application. He normally had to work one-on-one with these customers during the integration. After the documentation and example programs were finished I had one customer call and say that he was ready to begin integrating the scanner into his C# application. I sent him the knowledgebase and demo applications. About an hour later he called and told me that he had his scanner interface working. It took him about 45 minutes to do the integration. The knowledgebase and demo applications reduced integration time from about two weeks to 45 minutes.
The Technical Support personnel could now answer the more difficult technical questions. This provided better support for customers and significantly reduced the pressure on the engineering staff. The Engineers were no longer burdened by many of the incoming technical calls and they could focus on the more advanced questions. Interface details were maintained for the different host devices. Detailed installation notes were maintained for the different host platforms (PC, Pocket PC, Symbian, Palm, etc.).
One of the key sections in the knowledgebase was detailed API documentation. This section contained API-level details, sample code, function and parameter descriptions, etc. This section allowed developers to integrate a scanner interface into their application. The API supported multiple programming languages including C++, C#, VB6, VB.NET, PowerBuilder, etc. The documentation was included in the SDK and Interop source code files in DOxygen format. The DOxygen output was filtered and this output was then compiled directly into the knowledgebase. The API documentation went from the source code file to the final knowledgebase with no further editing. A custom C# application parsed the DOxygen output into multiple HTML files with one file per API function. These files were then copied into the API directory for the knowledgebase source files. When the knowledgebase was recompiled all of these updated files would be included. it would take only a few minutes to regenerate all the API documentation from the source code, move the files, and recompile a new version of the knowledgebase.