scratch that niche!

CMS for WAYA

Customer: West Austin Youth Association
Problem: They were unable to update their old web site, which meant they spent a lot of time on the phone with their members.
Solution: We created an intuitive content management system for them.
URL: http://www.waya.org

The West Austin Youth Association (WAYA) is an Austin institution. Over the decades, it has served tens of thousands of families, providing affordable access to terrific youth activities like basketball, flag football, and soccer.

One of the main tasks faced by Courtney Houston (Executive Director) and her staff of program directors and volunteers is interfacing with nearly 3000 member families. Specifically, the WAYA staff needed an easy way to keep their web site content current so that their members could answer their questions by going there.

At the same time, WAYA realized that they also needed to refresh their online identity, as it had been a long time since the last design upgrade.

We proposed to build them a content management system that would allow them to easily create unlimited web pages, upload photos and PDFs, create streaming news tickers, and post calendar events. At the same time, we worked with Yellow Fin, Inc. to refresh their online identity and give them an exciting new look.

The result is a dynamic website that WAYA staff can easily update within minutes without having to know HTML markup. (This was the genesis for the TopDog CMS).

Online Testing System Saves Time and Money

Customer: Spinal Concepts
Problem: They needed a way to pre-test their sales reps before they got on a plane and spent time in class.
Solution: We built them a custom test-taking application.

Abbott Spine is a highly successful manufacturer of spinal implants–a division of Abbott Laboratories. The very nature of their work is highly technical. In order to succeed, their sales reps need to understand not only the technology behind the implants, but key medical and scientific data.

In the past, the training department at Spinal Concepts would fly in new sales reps and provide training. They found that a certain percentage of their new hires already had a firm grasp of the essentials, so they needed a web-based tool to help them save money and time.

They found that they could easily convert the first two days of material into a test, so all they needed now was a vehicle to give the test.

We built them an online testing application in PHP/mySQL. The testing application allows administrators to construct tests with different sections, each section containing questions with differing levels of difficulty. Tests could easily be created by mixing and matching the sections and setting limits on how many questions to give at each difficulty level.

Test takers were presented with random questions in three difficulty stages. Each question had a timer associated with it that would keep the test taker from making a mark after time was up. If an image was added to a question, the timer wouldn’t start until after the image was fully loaded in the browser. If the test taker lost their connectivity during the test, they would be able to log back in and resume where they left off.

Once they completed a test, test takers would be locked out of the system and an email with their test results would be sent to administrators. Because each test could be customized with a minimum passing score, administrators knew right away who had succeeded in testing out of the first two days of sales training.

The result is increased visibility into what their sales reps really know, which not only saves time and money, but allows the training department to focus their training efforts.

SQL Primer

SQL, or Structured Query Language, is a widely used and powerful language for
accessing database information. Although it is powerful and flexible, it can
be complex. The goal of this article is to provide an overview of the language’s
basic capabilities.

NOTE: Not all dialects of SQL are the same. Every attempt has been made
to use a common subset of the various SQL dialects. If an example in this article
doesn’t work on your system, refer to your database documentation.

Before discussing SQL, you need to understand databases.

Database Terminology

A database is a collection of information organized as a two-dimensional grid
of rows (sometimes called records) and columns. Each column
has a unique name and can contain a certain type of data, such as numbers or
words. Each row contains the values for each column. A particular intersection
of a row and column is called a field. Each field contains data, such
as a name, a phone number, or address.

A relational database system is simply a database whose data is split into
multiple tables. Each table in the database has a unique name, and together
they are related to each other with keys.

A key provides a unique identifier for a record. In the first example, the
EMPLOYEES table contains information on employees. You wouldn’t choose
the first or last name column as a key because there is a high likelihood that
more than one employee has the same first or last name. You also wouldn’t choose
the phone number as the key as there might be more than one employee living
at the same house. Instead, you would use the employee’s Social Security number
as the key.

EMPLOYEES
SSN (key)
first_name
last_name
home_phone
job_title

Using SQL to Retrieve Database Information

To retrieve information from the EMPLOYEES table, you would use the
SQL select command. There are many ways to use this command, for example:

To retrieve all records from the table:

	select * from EMPLOYEES;

This query returns:

SSN first_name last_name home_phone job_title
111-22-3333 James Miller 555-1234 Webmaster
222-44-3331 Kathy Jones 555-1393 CFO
444-33-1993 William Smith 555-1990 CEO
888-99-9999 Tom Smith 555-3991 Senior Developer

To retrieve only the first and last names:

	select first_name,last_name from EMPLOYEES;

This query returns:

first_name last_name
James Miller
Kathy Jones
William Smith
Tom Smith

To retrieve only those records for employees with a last name of Smith:

	select *
	from EMPLOYEES
	where last_name = Smith;

This query returns:

SSN first_name last_name home_phone job_title
444-33-1993 William Smith 555-1990 CEO
888-99-9999 Tom Smith 555-3991 Senior Developer

To execute the same query again, except this time sort the results by the
employee’s first name:

	select *
	from EMPLOYEES
	where last_name = Smith
	order by first_name;

This query returns:

SSN first_name last_name home_phone job_title
888-99-9999 Tom Smith 555-3991 Senior Developer
444-33-1993 William Smith 555-1990 CEO

To retrieve only those records for employees with certain digits in their
phone number:

	select *
	from EMPLOYEES
	where home_phone like '555-%9%';

This query returns:

SSN first_name last_name home_phone job_title
222-44-3331 Kathy Jones 555-1393 CFO
444-33-1993 William Smith 555-1990 CEO
888-99-9999 Tom Smith 555-3991 Senior Developer

Complicating Matters

To complicate the situation a little (and to show off the power of SQL), let’s
add another table, called TRAINING, to the existing database.

The TRAINING table contains a record of each employee’s performance
on training classes. Because the EMPLOYEES table already contains personal
information on each employee, there is no need to recreate that information
in this new table.

How do you take advantage of the fact that this information already exists
in another table? All you have to do is create a column called SSN
in the TRAINING table and make it the primary key. The values in this
column link the TRAINING table to the EMPLOYEES table. We’ll
show some examples of running queries on multiple tables (called joins)
later.

TRAINING
SSN (key)
word_proc
db
sprdsht
time_mgmt
html
internet

There are different types of queries you can run on numbers, for example:

To find out which employees received a score higher than 50 on the database
training course:

	select SSN,db
	from TRAINING
	where db > 50;

This query returns:

SSN db
111-22-3333 66
222-44-3331 86
888-99-9999 96

To find the lowest grade for the spreadsheets course:

	select min(sprdsht)
	from TRAINING;

This query returns:

min(sprdsht)
67

NOTE: Use the max function to find the highest score.

To find the average grade for the time management course:

	select avg(time_mgmt)
	from TRAINING;

This query returns:

avg(time_mgmt)
50.5

Retrieving Data from Multiple Tables

From the examples above, you can see that the query results are useful but
not very user-friendly. For example, it would be better to see an employee’s
first and last name instead of a Social Security number.

To achieve this, you use a join. Joins allow you to join information
from one table with information from another table. The most likely place to
execute the join is through the keys. In our example, you would use the SSN
keys in each table to create the join.

To list the names of each employee and their grade for the HTML training
course:

	select first_name,last_name,html
	from EMPLOYEES,TRAINING
	where EMPLOYEES.SSN = TRAINING.SSN;

This query returns:

first_name last_name html
James Miller 95
Kathy Jones 14
William Smith 55
Tom Smith 74

To list the names of each employee who received a score higher than 80 on
the Internet basics course:

	select first_name,last_name,internet
	from EMPLOYEES,TRAINING
	where
		internet > 80 and
		EMPLOYEES.SSN = TRAINING.SSN;

This query returns:

first_name last_name internet
William Smith 99

KM — Know your Users

Your company just spent a ton of money on knowledge management vendors who installed and configured a data warehouse. It is supposed to be the answer to all your employee productivity problems. You spent some more money on the web developers who built a custom web-based portal to hook into the data warehouse.

But after six months, you look at the records and the system has met only 10% of your target acceptance rate among employees. The only e-mails that IT gets about the system are complaints. "The screens are unintuitive. Why are there these 8 report options, but the 2 that I need—why are they not there?

And why can’t I link the data in the customer trouble tickets to the bug fix repository?"

The message from the knowledge management vendors was admittedly seductive. “Purchase our product, install it, set it up, maybe add a little web front-end to manage it all, and your employees will start generating immediate value for your organization. Your customers will benefit, and your organization will prosper.”

Alas, true knowledge management involves more than just a technical implementation. It involves people, business culture, and business processes as well. No amount of implementation can help an organization “manage” its knowledge if your company’s culture hinders open collaboration. Nor can knowledge management products, be they groupware or databases, actually contain knowledge—they can only contain information in the form of bits and pixels. It’s people that create and use the information—they alone can create knowledge.

There are better ways, of course, that take human factors and business culture into account first, and then apply technology. This approach is best summarized by Thomas Davenport’s general rule of thumb: “If you’re spending more than one-third of your time on technologies for knowledge management, you’re neglecting the content, organizational culture, and motivational approaches that will make a knowledge management system actually useful.”

What is Knowledge Management?

Generally speaking, knowledge management (henceforth KM) is about managing the information within an organization, wherever it may reside (databases, documents, e-mail, people’s heads), and distributing that information to wherever it can provide the greatest advantage. For example, a data warehouse that stores information on how your prospects navigate your site could allow sales managers to run reports that help them target pitches at these prospects and turn them into booking customers.

You can break KM into two main pieces. The first piece, which deals with data warehouses, data mining, performance, metrics and other hardware/software issues, is what most people think about when someone mentions KM. Although there are many technical issues around building or buying a KM system, this is generally regarded as the easiest step in implementing KM at an organization.

The other half of KM involves building a knowledge-oriented culture and changing the attitudes of employees who view knowledge and information as symbols of status—and therefore, targets for hoarding. In some sense, this part of KM is more like social anthropology or organizational psychology.

What kinds of information does KM target? Anything that resides in a document (support notes, white papers, meeting notes), in someone’s head (an undocumented shortcut for using a Java API), or in a business process (workflow surrounding the resolution of a customer trouble ticket), for starters.

So what is knowledge then? Knowledge is something that a person experiences when they come in contact with information or data and which leads to action. For example, just reading about how to use XML is not knowledge, it’s just reading. Taking that information and actually creating an XML document is knowledge. Only when information is made actionable can it become knowledge.

(Notice that I said that knowledge is something only a person can experience. Computers and databases cannot be knowledgeable about anything. They are merely repositories.)

So in essence, the path to knowledgeable action goes something like this:

Information > Knowledge > Action

The last step, action, is based on a person’s prior experiences, personal and corporate values, and any business rules that govern their particular circumstance. You could say that action is a filter or frame for what becomes knowledge in your organization.

When effectively combined, technical issues, such as a data warehouse, and cultural issues, like a dynamic, knowledge-centric organization, can reap massive rewards in many areas, such as competitive intelligence and customer care.

What’s the Problem?

Achieving KM transcendence is pretty challenging, if not impossible. Information is hard to identify and even harder to draw out, centralize, and deliver to others. Information may reside in legal contracts, white papers, support databases, people’s heads, and even people’s bodies (think about the biomechanics involved in the construction trades—this too is information). It may also reside in how a salesperson reads the facial expressions and body language of prospects, or in the one-to-one relationships between business development specialists and partners.

Furthermore, in some organizations, it may be difficult to get employees to record what they know into KM systems such as groupware or databases. Employees may be distrustful (”if I put everything I know into this system, then you are free to lay me off”) or resentful (”I already work 60+ hours a week, why should I spend more time entering data into a database?”). They may not have the time, or they may not have the skill to recognize what they do as knowledge. Even if they do create some information, there’s no guarantee that what they set down will actually be understandable by another person, if that other person even finds the information.

In short, the path from information to knowledge is fraught with obstacles and a lack of guarantees. To make things even more interesting, information and knowledge are both quickly depreciating assets. For example, a best practices white paper may never get updated to ensure that, when circumstances or markets change, it will still be useful to others in the new business reality.

And then there are the bean counters. You see, only some benefits of KM are perceived as beneficial to an organization’s bottom line. Other benefits are harder to quantify. An intranet that allows employees to access HR forms and update their contact data may make them more efficient, thus making the savings measurable. But a team room environment that allows employees to work together regardless of work style, continent, and department may be harder to measure.

Because these cultural and organizational issues are so difficult to deal with, many vendors either ignore or downplay them. Vendors want to sell products, not get ensnared in lengthy and politically charged KM consulting gigs.

What to Do

If you need to kickoff a KM project at your enterprise (or untangle the one you already have), you need to start worrying about your users and your business goals first. All the geeky stuff, like database installs and hardware configurations, should grow out of the original requirements.

Here are some other points to remember:

It’s about people. People have jobs to do. They’re busy talking to customers, fixing problems, going to meetings, and writing code. If you don’t address their needs and pain points, then guess what? They won’t use the KM system.

Businesses require measurement for success. You need to track how the system is being used, how often the information in it is being accessed, where and when it is being used, who updates it and how often, plus a myriad other data points. It would also be useful to track how a troubleshooting tip about a 15-cent light bulb saves the company thousands of dollars in service repairs, for example. Sit down with your users to flesh out these requirements.

Information depreciates quickly. Just because someone entered a best practices note into your knowledge base doesn’t mean that it’ll still be valid 6 months from now, especially not if your market or product changes radically. Build systems that allow users to easily validate and update information.

Information tends toward balkanization. Information gets tucked away in different departments, data repositories, access areas, and file formats. If you’re not careful, users searching in one database won’t be able to find related items in other databases (they may not even know there are other databases). Centralize, centralize, centralize. And if you can’t easily centralize, then allow systems to look at each other’s data (XML is a good bet
here).

People respond to design better than they respond to rules. A good design can channel the behavior you want, whereas rules will just make people skeptical and irritated. For example, at a company I worked for 10 years ago, executive management had rolled out a vast KM program. Their approach, however, was pretty dogmatic. “All employees must enter their job functions into the system. All employees must provide details on their work tasks.” Problem was, this rollout came in the wake of a substantial layoff. The general reaction
to this was, “I put my information in the system, then I get canned.”

On the other hand, a good design, such as a system that rewarded users with prize-redeemable points every time they browsed the system, created information, or validated someone else’s information, may have fostered some trust.

Information delivery is the killer application of the knowledge economy. Most websites and other information sources either deliver too much information or not enough. Search engines return 10,000 hits or nothing at all, it seems. Users need the right information at the right time in the right context in order to be effective. Lean on your usability and content teams to create smarter search results based on smart document metadata (again, XML is a good bet).

Resources for Further Reading

“12 Principles of Knowledge Management” by Verna Allee
“Share…and Share Alike” by Meg Mitchell
“When Bad Things Happen to Good Ideas” by Eric Berkman
“Defining Knowledge Management” by Steve Barth
“Managing Customer Knowledge” by Tom Davenport
“Known Evils: Common Pitfalls of knowledge management” by Tom Davenport
“Does KM=IT?”by Carol Hildebrand
“Know what you know” by Tom Davenport
“The Basics of Knowledge Management”

Ecommerce for Bilingual Translation Cards

Customer: CommuniCard
Problem: Communicard needed ecommerce to sell their bilingual translation cards.
Solution: We provided information architecture, usability, and ecommerce consulting.
URL: http://www.thecommunicard.com

Sylvia Acevedo, CEO of Communicard, had a terrific idea–one that grew out of a definite need. Every time any of her friends needed to say something to Spanish-speaking maids or house contractors, they would call her.

Eventually, she struck on a solution: why not print up cards with illustrations on them depicting different kinds of tasks, with both English and Spanish phrases?

The idea took root, became a business, and then needed a great design for her print and web materials. Tina Hudock of Yellow Fin, Inc. provided incredible art direction and information design.

When the time came to turn all of these designs into a working ecommerce web site, Communicard turned to us, and we walked them through the entire process: information architecture, ecommerce usability, search engine optimization, and HTML development.

We selected Miva Merchant as the shopping cart because it provided a lot of base functionality, including handling different kinds of credit cards, providing good coverage for shipping, and integrating with a third-party fulfillment house.

« Previous Page