Give More. Get More.

As SDL Tridion MVP Selection Panel chair, Nuno Linhares has called others in the Tridion community to action and has recently blogged about the the art of knowledge sharing . He offers some reasons he's had to not share (knowledge = organizational value, faster to solve than teach, and fear others will steal) and compelling reasons to share (recognition, ability to scale, job/career mobility). I've seen both sides and share my background with sharing below. I'd like to add that sharing can be scary, especially when you're not sure of how a message will be received or confident in what you know.

I've enjoyed everything from mentor roles to being seen as "the guy who does too much" to being called arrogant and immature, so take the following from the perspective that I've done okay so far, I believe in the value of sharing in your chosen interests and industry, and I have a lot more to learn and grow.

I've found career and personal satisfaction from creatively contributing in authentic ways (yes, I'm a fan of Seth Godin's Linchpin). In terms of knowledge transfer and sharing, I've been "rewarded" with bigger and better projects the more I gave old projects away.

As a Web-development-intern-turned-researcher, I've reported on everything from software development tools to industry news to competitive assessments. From screenreader software that read websites to blind users to enterprise-level content/workforce management systems, I received bigger and more interesting prompts the more I put into the research.

Gave away Roles. Got new Roles.

Also known as "I killed my previous job" through sharing or intentionally making myself obsolete.
I helped train other interns, explaining everything from laptop setup to who's the right person to ask what question. I eventually helped the development team select their Web Content Management System (WCMS). Fascinated by the chosen solution (Tridion R5.3) and eager to learn, I effectively killed my previous job of manual Web content updates, HTML edits, and SQL scripts; I still apply these skills but in somewhat more interesting situations.

I got a new role as a business analyst (BA) to support the WCMS and continued to help end users and developers. I learned from, and then contributed on, the Tridion forums (enough to win a nifty, sharp, and deadly-looking SDL MVP award).

I documented everything from user guides to system diagrams to requirements and encouraged others to update and share their own write-ups. I offered expertise when requested (and sometimes when it wasn't!). This coincided with another shift in responsibilities towards vendor/partner implementations and a promotion to a (cross-functional or "weak matrix"... just so you understand I wasn't directly leading teams) project manager (PM).

As a PM, I was able to leverage vendor evaluation skills learned from WCM in a WFM (workforce management) assessment and eventual implementation. I've enjoyed the role, but missed the collaboration with the solution and community that helped shape my career.

Sharing your way into New Ventures

In terms of that intersection of skill, will, and motivation I've found a sweet spot between these various "jack-of-all-trade" roles of BA, PM, and resident Tridion subject matter expert; I've applied for, and accepted a new position as a functional consultant with SDL Web Content Management Services (professional services) (My site disclaimer still applies; this blog does not reflect the views of my current/past/future employer unless otherwise stated. I've accepted an offer but don't start for a few days.).

I owe so much to my previous roles and will always have love for American Specialty Health, but I'm looking forward to learning, growing, and sharing with my new team and helping other SDL clients.

Semi-final, random thoughts on sharing

  • Though I've played various roles, there is nothing wrong with becoming an expert in any given role. I'm not advocating leaving your existing job and the intention shouldn't be to "jump ship" as quickly as possible, but to transform our roles to include More Great Work (Michael Bungay Stainer).
  • Think big! There are lots of after-school activities where a single coach or instructor will attempt to help an elementary school. But what about a program that teaches teachers instead of a single classroom? How can we scale from classroom to district? From one company to several?
  • I've helped a development team, an IT department, a medium-sized corporation, and a community of Web content management customers. My long-term knowledge sharing goals include either contributing to an industry or combining current and past interests to offer something new.
  • I didn't plan or think I'd be qualified to join SDL. I believe knowledge sharing works better when you're authentic and genuine ("white hat" sharing preferred--I don't believe my specific "path" and approach would work if I only shared for personal gain). Daniel Pink's Drive confirms that rewards and incentives are more effective as "now that (you've done something good)" surprises rather than "if (you do this) then (you'll get rewarded)." I agree with Nuno--it only took a kind word or encouraging email to feel appreciated for sharing.
  • If you give a man a fish he eats for a day. If you post fishing video on YouTube you can reach thousands of viewers.
We share, teach, or advocate because we love a product, solution, or idea. If we're lucky and find that right intersection of an appreciative audience and fascinating topic, we can feel like the bee girl at the end of Blind Melon's No Rain. Well, at least that's the closest popular-media-metaphor for how I feel when collaborating on interesting projects or talking Tridion with other consultants.

Well, that's what knowledge sharing, teaching, and contribution has meant, and continues to mean to me. I'd love to hear your successes and challenges with your own attempts and sharing, advocating, and being an ambassador for whatever fascinates you.

Key-Value Lookup Example (Tridion R5.3)

The following is adapted from a post of mine on the Tridion World Forum (an account required which is available to Tridion clients). Key-value "lookup tables" can be stored in xml files to manage Tridion-related information such as identifiers (tcm ids) or  other not-so-friendly key names and their corresponding friendly values. For example, rather than hard-coding unique Tridion identifiers for each environment, we can output a text-based configuration file. This simple example highlights re-use, separation of layers, and ease of content (re)creation.

1) Ordered Pair - embeddable schema Consisting of two items:
  • key (text)
  • value (text)
Description can be first and second item, with mention of "key" and a friendly name. This could even be localized to match the needs of a given publication and/or (end-user) language.

2) List of Ordered Pairs - schema Consists of one item: ordered pair (the embedded schema above, allowing multiple values) (also give this a useful namespace such as: 
http://www.example.com/schemas/listorderedpair)


3) Key Value XML Output - Component Template (XSLT)
(match the namespace above, the names space will differ in different versions of Tridion)

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:tcm="http://www.tridion.com/ContentManager/5.0"
 xmlns:xlink="http://www.w3.org/1999/xlink"
 xmlns:tcmse="http://www.tridion.com/ContentManager/5.1/TcmScriptAssistant"
 xmlns:listorderedpair="http://www.example.com/schemas/listorderedpair"
 exclude-result-prefixes="xsl tcm xlink tcmse listorderedpair">
<xsl:output method="xml" indent="yes" omit-xml-declaration="no" />
<xsl:template match="/">
  <values>
    <xsl:apply-templates select="/tcm:Component/tcm:Data/tcm:Content/*" />
  </values>
</xsl:template>
<xsl:template match="*">
  <xsl:for-each select="//listorderedpair:orderedpair">
    <value>
      <xsl:attribute name="key">
       <xsl:value-of select="listorderedpair:key" />
      </xsl:attribute>
      <xsl:value-of select="listorderedpair:value" />
    </value>
  </xsl:for-each>
</xsl:template>
</xsl:stylesheet>

4) Ouput Generic XML - Page Template (VBScript, but any templating language can work)

[% 'this outputs a physical xml file
'component and corresponding component template that outputs actual xml via XSLT is required
 for each comp in page.componentpresentations
   writeout comp.content
 next

%]

To create the lookup XML file after setting up the embeddable schema, regular schema, and templates, first create a component based on List of Ordered Pairs. Then create the page, add the component (+ template = component presentation), and publish. The resulting file will look like:
<values>
 <value key="1">First Value</value>
 <value key="2">Second Value</value>
</values>
This example can relate  friendly names to their programatic equivalents. This can work in other scenarios and can serve as a general content-to-physical-xml file example.
If you've ever needed to make a quick and robust interface for this type of configuration data (or any content), a WCMS like Tridion can easily handle anything from the node and attributes values in an XML to rich-text, multimedia, and more complicated sets of content. 
Other use cases:
  • states and state abbreviation list
  • departments and abbreviations or codes
  • Tridion items and their tcm-ids (ids would be hardcoded, but example could be adapted to link to items directly)
  • other mappings for external databases or information
A few of these could be handled via web services, custom code, or other Tridion integration points. However, a lot can be done with Tridion's out-of-the-box functionality. Please feel free to leave suggestions, clarification, or questions. I'll likely overhaul this with a Tridion 2011 treatment as well.