/home/dkramer

David Kramer's high-entropy blog

Knowledge Management Tips

I ended up talking about knowledge management quite a bit at Agile Games 2018 and Mob Programming 2018.  I don’t have a lot of formal training in this area, but it’s something that I’ve focused on a lot, and I’ve learned a lot from people who have studied it a great deal.  Rather than respond directly, I decided to add a blog post about it, to benefit more people.  This is an unordered list of these tips.  I would love to hear your additions or feedback on it.

Push vs Pull Communication Channels

There are two different general ways of communicating information: Push and Pull.  Push is when you send information out to recipients and they get notified (email, Twitter, Slack, etc) and Pull is when the recipient seeks out that information that was published earlier (Website, wiki, CMS, documentation).  Using the wrong type can prevent the recipients from having the most recent information in a timely manner.  The main deciding factor is, is it more important that people know about this information as soon as possible (changes to policy, status/availability updates, issues), or that people have the information when they need it (requirements, specifications, resources, environment details).  Many tools can do both, like wikis, which allow people to get notified of updates).  Email doesn’t work nearly as well as you would think at either push or pull, because most people in technical fields get so many emails that they find it hard to both notice and respond to timely emails and categorize those emails so they can find them later.

Lower The Barrier To Information Sharing

Creating and updating documentation is rarely the most favorite part of anyone’s job.  It’s rarely prioritized when the work is planned out, if it’s budgeted at all.  Starting to write documentation seems to be much harder than adding to it, so making it easy to get started is a big deal.  A little bit of good documentation can be a whole lot better than no documentation. There are several ways to make it easier:

  • Create a culture that values knowledge management at all levels: If the culture from the top does not value knowledge management, and time spend “not coding” is seen as wasted or overhead, then knowledge management will never get the time, resources, and attention required to do it right.  If team members know that time spent on sharing knowledge won’t be appreciated, they are less likely to focus on it.  It’s also important to convince the technical community of the benefits to them personally, like not getting stuck being “the database guy” or “the owner of the Therblug component”.
  • Create templates: You can either create generic templates for the kinds of documentation or information sharing you expect, or identify an existing one as an exemplar. “This is what a component documentation home page should look like”.   “Here is an example release communication”.  “Stories should have a format like this”.
  • Use a tool that makes it easy to iterate and easy to find information: If your way of creating documentation is to write a word document or PDF and upload it to a shared drive, it’s not very likely you’ll see a 1.1 version, let alone a 2.0 version.  In part that’s because a word document is not a very good collaboration tool, and shared drives don’t make it easy to find things.  I am a huge fan of wikis.
    • Wikis let you truly collaborate (some in real time)
    • Wikis allow endless hyperlinking, instead of forcing one path to each document like a shared drive, and dynamic links in the text to other pages and people.
    • Wikis make formatting very easy so the writer can focus more on the content
    • Wikis usually have subscriptions to topics to notify interested parties of changes and additions
    • Many wikis allow enough security that some sensitive information can be published to a limited audience
    • Many wikis are versioned, allowing everyone to see changes over time, and revert undesirable changes
    • Wikis often let you export pages as HTML, PDF, or DOC if you need to distribute the information externally
    • Creating a new page in a wiki is usually as easy as referencing the name on an existing page
    • Wikis have built in search engines
  • Maintain distribution lists: Recording the information is only half the battle. It needs to be delivered to the right people.  Relying on people to keep track of everyone in each group, and even which groups are interested in which topics, is error-prone, especially in a growing organization.  Mailing lists can be helpful, but the best tool for maintain distribution lists is something that can be used by several channels, like Active Directory/LDAP.
  • Divide up the work: Sometimes there’s only one subject matter expert in an area, but it’s often the case that different people know all, or different parts. Instead of putting the burden on just one person, you can have different people work on different parts, or have reviewers contribute to the initial effort.

Read on…

Agile Games / Mob Programming Conferences 2018

Agile New England is once again holding the Agile Games and Mob Programming conferences back to back.
Register here for either conference while the Early Bird rates are in effect while the Early Bird rates are in effect!

  • Agile Games 2018: April 9-11, 2018
  • Mob Programming 2018: April 12-13, 2018

 

Read on…

Looking for Software Engineering Manager position

I am looking for Software Engineering Manager position in the Boston area, leading a team of (preferably) Java developers in an Agile environment.  My strengths are my diversity and depth of experience, perseverance, ability to learn new technologies quickly, and communication and organizational skills.  I’m happiest when I’m collaborating on hard problems, mentoring others, establishing best practices, and improving software.  I’m a strong believer in the Agile philosophies and principles, and valuing quality and teamwork.

If you are looking for someone like me, or know someone who is, please contact me at david@thekramers.net.

Software Development vs “The Business”

This article is about The Dev group in relation to other business units in the company.  In this article, “the Dev group” is shorthand for whatever business unit the software development team is in (Technology, IT, …).

Many times in a company, the Dev group is seen not as a consumer of requirements and a provider of solutions, but as somehow subservient to other groups, like Marketing.  The Dev group has to be very careful not to challenge their statements in meetings, and just accept that they know what they’re doing, no matter how little it’s based on actual customer feedback, or how SWAG the finance estimates are, or how much of their input is colored by personal bias.  I’ve been taken off of meeting invites because I dared to challenge the statements about the Dev group and defending them from other business units.  We even say things like “Let’s find out what The Business thinks of these features” as a short hand for “the other business units”. But phrasing it that way implies that the Dev group isn’t a separate but equal business unit.

Read on…

The Importance Of Team Composition

I think a lot about process, process improvement, productivity, and efficiency vs effectiveness (believe it or not the difference is not universally understood).  Lately I’ve been thinking a lot about team composition and how it affects the productivity of the team.  In part I’ve been thinking about it because of the teams I’ve had in the past; in part because I’m currently hiring and having to make trade-offs like salary level vs skill level and overlapping skill sets, but also because I’ve been playing the game Overwatch a lot, where team composition essential.

Read on…

MVP is a VIP (Very Important Practice)

MVP stands for (in this article) Minimum Viable Product. It’s not an Agile concept.  It’s not even a software-specific concept, though it’s certainly easier to do with software, since upgrading software is usually easier than upgrading hardware.  The concept is simple: Instead of building every feature under the sun into your product then releasing it, build the least you think people will buy and release that, following up with more feature-rich versions.  There are several good reasons to do this. Read on…

Next Page »

Site info