Monday, May 17, 2010

Why, What and How

If you want to define a RFP (Request for Quotation) / RFP (Request for Proposal) or you have to answer those requests you are forced to define or understand requirements for a particular product or solution.

There are lot's of good sources showing how to write and handle requirements. But often they miss one important fact which makes either the creation, prioritization and understanding of requirements much easier. The Why instead of the What.

Rational
  1. First set the baseline for effectiveness. (Why)
  2. Than define what you need to be effective. (What)
  3. And at the end define the efficiency. (How)

What is the rational, the reason for a particular requirement. If you try to understand the Why or if you forced to define the Why the resulting requirements / usage of the requirement are much more valid than without doing this.

The "What" does not tell anyone the real intention of a solution. The why provides the motivation and business value and therefore the baseline for effectiveness which makes or makes not a requirement right to exists.

ToDo
  1. Before you start to define any requirement try to define the major "Whys"  you intent to solve. Keep in mind that there must no requirement which cannot be derived from those high level whys.
  2. derive each use-case / requirement from one of the major why areas and add a specific rational for the individual use-case / requirement.
  3. classify / prioritize the requirements based on the rational.
  4. Derive the "How". In this step the statement of efficiency is the key for selection of the right solution.
Result
  • The defined requirements are much easier to understand and alternatives can be much easier identified and qualified.
  • Prioritization can be much easier coordinated to management because the consequence of a decision for the "Why" and therefore the company / department goals are always clear even if someone does not have detailed knowledge of the subject matter.

    =>ensure effectiveness
  • Definition of the system requirements / How can focused on efficiency.
    =>ensure efficiency
To see the same idea from sales / marketing point of view watch: Start with Why: How Great Leaders Inspire Everyone to Take Action.

Sunday, May 16, 2010

facebook - openbook

if you have a facebook account or knowing people having account, try http://youropenbook.org/. I'm always amazed about the data people commit to companies like facebook.

try it out as long as it is available.

XSLT Version 2.1

XSLT Version 2.1 Draft published. As mentioned in the published draft the main goal is making streaming of transformation easier for implementors.

Streaming makes life easier whenever you have to process huge input streams of information to reduce memory footprint and deliver already processed chunks to the next consumer before the complete stream is successful processed.

On the other hand XSLT 2.0 which is a recommendation since 3 years is not widely adopted from implementors of XSLT engines -- Saxon, AltovaXML and few commercial ones-- so far.

Why? The main reason is complexity compared to the corresponding benefit. The implementation of a XSLT engine passes the 2.0 conformance tests is expensive and complex compared to the benefit for most users / use-cases. As in any commercial product each new feature / requirement should be qualified against the value and cost / effort it brings into the standard.

The interesting question would be -- how to measure benefits of a feature? How to interview the "users" of a standard? There is no trivial answer and that might be the main reason why standards tend to get over complex.

Monday, April 19, 2010

CMIS beta implementations

good overview of existing CMIS implementations (client and server) can be found here:

http://www-10.lotus.com/ldd/lqwiki.nsf/dx/11122008094143AMWEBK95.htm

because CMIS version 1.0 is not final approved yet (see also http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=cmis) all of those implementations can be marked as "beta".  Hopefully the progress of the standard will end up in a state different to what happens to WebDAV where the initial hype never made substantial progress in major and public available products and infrastructure components. 

time will tell.....

Monday, March 08, 2010

CMS of what kind?

stumbled upon "Microsoft SharePoint: The CMS Killer" blog post. A personal view how MS SharePoint fits for ECMS use cases.
The results might be wrong or write depending on what your understanding of CMS is.

Problem

There is no common understanding of the the term CMS and even not for the derived term ECMS.

Cause

CMS means Content Management System. Based on this definition it is a application (system) to manage content. Thats trivial but what does content really means? Content is all and everything. Most of the content can be managed within IT systems as well.

Illustration

General categories of content maintained by IT applications:
  • Structured content
    Content maintained and structured as a collection of data (order or offer data). Content in this context means a collection of records with given structure
    Those type of data are typical maintained with applications called ERP or other kind of systems of this type (e.g. ALM systems).
  • Unstructured content
    Content maintained within documents. The content within the document is not addressable outside the application the document was created with (the semantic makes only sense in one specific usage scenario).
    Those type of data are typical maintained with applications called DMS or Web-CMS (maintaining HTML) systems.
The propagation of xml introduce a third categorie of content:
  • Semi-structured content
    Content used to create documents (information products) of some kind. The content within the document is addressable outside the application the document was created with.
    OR
    Content maintained as system independent instance of data (e.g. order or offer data).
    In both cases XML is the common format today.
Each CMS has a history in one of the mentioned areas and has its specific strength and weakness for usage in different domains.

The corresponding consultants knowing the mentioned issue and trying to create domain specific names for specific usage of systems
  • DBMS
    Main goal is to maintain relational data and used by dedicated applications on top.
  • DMS
    Main goal is to maintain documents
  • Web-CMS
    Main goal is to maintain intranet / extranet / internet sites
  • ECMS
    Enterprise-CMS
    Main goal is to provide enterprise ready workflow and records management on top of DMS feature set
  • CCMS
    Component-CMS
    Main goal is to maintain content stored in XML for single-source publishing
  • ?
    anything i missed, of course there are plenty of buzzwords / domains out there describing mixed-scenario usage.
Because non of the mentioned definitions are "formal approved" the specific vendors use the term with most customer attention in their target domain and each vendor tries to fulfill use-cases from other domains as well. Because each CMS has a particular implementation history the usage in most cases is limited even if the vendor claims to cover most of them.

Examples

  • a C-CMS vendor might support xml usage and publishing very well but does not scale if enterprise workflow or records management is required.
  • a ECMS vendor has enterprise BPM support build in but lacks of sophisticated xml semantic and functions.
  • a Web-CMS makes creating your Internet presence easy but lacks the usage of the same content for printed documents
  • .....
Summary

This reflects the current state of content management. I expect in the next few years that new and maybe existing systems will move into the semi-structured content area and some of them might succeed. They might reach the final goal that content can be create, maintain, re-purpose and publish based on different user communities from one single source.

Until that stage is reached....coming back to initial "Microsoft SharePoint: The CMS Killer" statement. Ask the author what kind of content use-case he has in mind and you can validate the statement.

Sunday, March 07, 2010

we live for our customers....

....really?

do you work with customer centric mindset?
do you work in a customer centric organization?

your first and quick answer might be yes, of course. my company does everything to make the customer happy, thats where our revenue comes from. of course.....

That was my first thought as well.

Than i looked at several websites incl. my own company one. you find service descriptions, white papers, success stories, awards -- everything focus to promote the own portfolio of services / products.

Have a look at your company's website. Looks it different?

To understand the customer means to understand their challenges, needs and questions they have. You have to answer the questions: what is the business value you can bring to your customer instead of leave them alone to select  a specific product or service you offer.

What is the reason for that?

It is much harder to define and understand the problems your customer have and how you can provide business value for them using their terms and definition. Instead showing what you did and do and let the potential customer decide if that might help them is much easier.

By the way you will be much more successful if you at least try to think and follow the problems your potential customer have to solve....

top most dangerous programming errors

the list "Top 25 Most Dangerous Programming Errors" makes clear that the software domain still has much to learn. do you involved in software development projects either as project manager, software architect or software developer? if so you are sure that the mentioned errors not happen in your daily work or the subject of your daily work?

i think it is still much work to do until software development can be called a "proofed engineering discipline".

the more application will be hosted in the cloud the more such kind of issues will be mission critical for the target group of the application.

by the way the list is a good reminder of low level non functional requirements and topics for peer-review....

Sunday, January 17, 2010

DITA DTD: tools to support specialization

if you are new to DITA and want to create a custom DTD configuration with or without custom specialization this tool is a good starting point.

you may ask why, at least if you do not want to introduce custom semantic to your data model you should at least define which domain belongs to you. a summary why to go this way, read http://drmacros-xml-rants.blogspot.com/2007/04/dita-standard-practice-always-make.html.

Online version of "DITA DTD Generator" is available as online version. source code can be found here: http://code.google.com/p/dita-generator/.

If you have to support custom semantic (which is common in enterprise usage of DITA) you might use "DITA Visual Specialization Manager" or read "DITA Specialization Tutorial".

As always using the right tool is only the baseline. The more advanced task is to identify what you need based on your business case.

Negate expressions using regex

a not so rare question using regex is "match all strings doesn't contain word foo". that isn't something regex is made for. by the way searching the web shows that the expression
(?:(?!REGEX).)*
where the expression REGEX must be replace with expression must be negated, e.g. (?:(?!(foo1|foo2)).)* returns true for all strings doesn't contain foo1 OR foo2.

more details and background can be found here: http://www.perlmonks.org/?node_id=588315#588368

Saturday, January 09, 2010

utilities, utilities

daily work on Windows is pretty unproductive without so called utilities. small tools and extensions increase efficiency.

Hanselman Ultimate Tools List provides a good summary of utilities for Windows. Many of them i used as well for years.


Friday, January 01, 2010

agil development means valuable end user assistance

gile development methods have become more and more popular during the last few years. Especially the software domain tries to speed up development cycles and deliver new features on demand of the customer. most common method today is SCRUM.
there are many good books, articles, forums and blogs out there describing the goal, advantage of diving into agile software development. but less or zero of them covering the creation of end user assistance, like online help, for the different users groups and additional, required information must be shipped with the product.

#1 principle of agile manifesto
Our highest priority is to satisfy the customer
through early and continuous delivery
of valuable software.
"valuable software" of course means one the customer is able to use, therefore end user documentation is essential part of the software development process.

that means that you have to change your process to
  • no more write documents / additional information instead
    write valuable information assigned or integral part of the product component it belongs to
    a document is one potential output if a customer value can be achieved with this type of output
  • no more prioritize, test, deploy and measure customer feedback for the application and the user documentation as separate applications instead
    while working on a particular feature prioritize, test and deploy all valuable user information and work together with the customer to get feedback for the complete application (incl. user documentation).
sounds simple, but as you know that isn't simple at all. many companies currently workaround the mentioned issues or just ignoring the resulting consequences.

by the way one of the few blog posts I found "Writing End-User Documentation in an Agile Development Environment".

what is your experience and solution to this challenge?
  • do you discuss end-user documentation requirements while sprint planning / review...?
  • do you prioritize end-user documentation along with the corresponding user story?
  • do you test your end user documentation while test your application?
  • ....?
  • do you localize user documentation while localize your application?
  • do you use dedicated professional writes or other team members for creating end user related information products?
  • ....?

predictions for 2010

same procedure as every year but as Yogi Berra mentioned 
It’s tough to make predictions, especially about the future.
 so just stop trying to be one of currently 5,130,000 tries according to google or 12,600,000 according to bing.

In this sense -- 

The ultimate function of prophecy is not to tell the future, but to make it. Your successful past will block your visions of the future.
Joel A. Barker



Monday, December 28, 2009

Software Globalization

Software Globalization is always a big deal and to be honest i do not know many software application with more or less shortcomings in this area. Globalization consists of Internationalization (preparing the application that they can be adapted to different locales) and Localization (translation of content for a specific locale).

you have to deal with locale specific
  • messages
  • dates
  • numbers and currencies
  • replacements
  • conversions
  • encodings
  • sorting / collation
  • test bounderies
  • layouts
  • .....
most of them seems to be easy for 95% of the use-cases but getting 100% done is at least tricky once you do not have the corresponding and suitable software infrastructure.

the best open source library in this domain I'm aware of is ICU. As always a software tool does not solve the problem itself it just gives you a solid base once you understand what needs to be done ;-)

related links:


Sunday, June 14, 2009

who has locked my account?

if you have to identify on which windows client / server a given account is currently logged on sysinternals utility "psloggedon" is your friend.

a simple "psloggedon account" identifies all computers the given account is currently logged on (and part of the same domain you start this command).

this tool is part of sysinternals huge amount of useful tools and command line helpers which helps to answer or identify common maintenance issues, like

  • does my application doesn't close all used handles
    Process Explorer
  • which resources (filesystem, registry, ...) does my application access
    Process Monitor
  • capture of debug output (traces using OutputDebugString, DbgPrint) without using a debugger
    DebugView
  • .....
and all utilities are free. the team creating and maintaining those utilities are now part of Microsoft. up to now this has any negative effect to utilities they provide beside there is no source code available anymore which prevents to see how certain information can be / must be retrieved to be on the safe side.

Friday, June 12, 2009

transform pdf to word / excel

online conversion from pdf to word / excel is available from http://www.pdftoword.com/. you have to upload your pdf and will receive the converted word / excel file as long as the result is smaller than 12 MB. result looks good for most use-case. of course you have to manual rework based on the intension you have with the result but content, images and layout is converted and accessable for subsequent tasks.

i like that kind of advertising - a easy to use subset of the functionality is available for free and if i like the feature and want more enterprise features i will probably pay the price.

ux tools for windows

useful unix tools (e.g. grep / find) for windows are available here
http://unxutils.sourceforge.net/
advantage compared to cygwin you can use them right from the windows command line without any additional layer.

make usage of command line much easier....

Sunday, June 07, 2009

(re)use of content

(re)use of content is a common topic in almost each domain has to deal with content. the rational is obvious and easy: use of existing content is faster and cheaper than creating new one.

there are two major requirements to (re)use content:
  • you need a business object the content belongs to
    otherwise it is impossible to identify existing content and determine if this content is worth to use
  • you need a well defined information type the content belongs to
    only if you know what type of content you have to create allows you to identify if it may already exist
based on those two trivial requirements you can define rules in which case (re)use is possible:

if existing content is created for the same business object and for the same information type as the new content you have to create.

to extend this scenario you can deviate your content from existing one if either the business object or information type is also derivate from the content you intend to use.

to derivate a test case from corresponding use case is obvious and valid as long as the business object both belonging to are the same. if a certain engine exists in three variants each derivate from a common building block the corresponding content is obvious also valid to use and derivate.

as you see usage of content requires both knowledge and connection to the business and to the content itself.
because of this many (re)use scenario fails in the real world (look into your own domain -- do you satisfy with your content (re)use?)

if you look at the two dimension enables usage of content you might understand that in many cases the usage of content between companies might be higher than the usage of content within one company. in many cases competitors dealing with similar business objects and information types beside different departments within one company might not.

this means that if the information types are not critical for a certain domain cross domain usage of content will become a possibility once the information itself is interchangeable (thats a topic for its own).

usage of translation is one of the most obvious scenario for cross company usage. because translation becomes more and more a cost center but is also a business driver the usage of common translation memories between companies working in the same domain is of course thinkable. content already translated for nokia might be used by sony as well, same is true for BMW and Daimler.

the "Language Data Exchange Portal" shows how this might work. each member provides content and funding and can participate from the complete pool of data available. as better the content is classified as better the results each company has......more to come?

Tuesday, June 02, 2009

Google Wave: backbone for real information collaboration

beside Microsoft still working on getting search on existing information done (last try http://www.bing.com/) Google tries to re-invent the creation, usage and collaboration of information with upcoming "Google Wave".

having a deeper look into the already available information the most interesting part of the design is that the complete architecture is based on hosted information transformation based on a group of humans and automated participants. the overall architecture looks clean and the demo provided here: http://www.youtube.com/v/v_UyVmITiYQ&hl=en&fs=1&rel=0 looks promising.

such kind of infrastructure has the capability to be used in all kind information centric workflows especially those happens in the "cloud". creation and further development of engineering artifacts from customer requirements to user stories to design documents and testing artifacts up to the usage of the same information in technical docs created for them. such workflow always requires a information object centric architecture and in addition collaboration feature sets.

we have to see if Wave will succeed, means if developer comunity contribute and use the existing extension points if so, i'm looking forward to see what can be done with this promising infrastructure.....

in my point of view the future of information goes away from document paradigm and end up in the a more message oriented paradigm where a group of people work on structured / semi-structured information objects (messages / topics) and assemble them in a final stage in each business workflow to a document, web-page, calculation sheet, ..... this means a document is "just one output for one audience" and describe just one usage of the information at a certain time.

in those days search is still essential but just as one way to navigate through the specific information pool and only if the hits are relevant for further usage (try to search for "Microsoft" on www.bing.com and see if the provided hits are relevant enough for you.....)

see also:

http://www.infoq.com/news/2009/06/wave
http://mashable.com/2009/05/31/google-wave-features/

CMIS resources

nice summary of background material about CMIS can be found here: http://wiki.alfresco.com/wiki/Draft_CMIS
especially the list of available provides and consumers are useful for those try to further investigate into this new standard effort. sample code says more than thousand words....

Thursday, May 21, 2009

Open Source TMS: GlobalSight

few days ago i stumbled over GlobalSight a open source TMS solution formally known as Ambassador.

the marketplace for TMS products are dominated by a few commercial vendors most of them doesn't make big money with those products.

why?

the translation / localization domain requires strong domain knowledge which isn't widespread especially the combination of IT knowledge and linguistic, translation and localization knowledge is hard to achieve.

in addition translation / localization today still means to process input files from pretty heterogeneous and in many cases proprietary file formats (e.g. HTML, Word, Framemaker, Quark, Excel, XML, software resources, .....), translate them and create output files using localized content and layout. that is one of the most appalling jobs you can think of as a developer.

in general XML can reduce the requirements for TMS but the majority of users are still not using XML based content creation and therefore are not able to use XML as data format for localization.

what does this mean for success of the solution GobalSight?

to be honest i do not expect huge developer community dive into further development or even contribution in this solution because of the reason mentioned above. only if additional companies (like those part of the mentioned Steering Committee) provide development resource to this project this can be more than "just another way to herald end of life of a not successful product"
different views?