Bridging the gap to Fusion through our PeopleSoft Solutions Extenders
Grey Sparling PeopleSoft Expert's Corner
Oracle Blogs
 Subscribe Now!

Friday, February 17, 2006

Why give out free information???

Over the past week, I've had discussions with several folks who have been surprised at our willingness to help companies for free, seemingly asking nothing in return.

"This is good information you can't get anywhere else. You should charge for it."

"Why would you do this? Don't you have a business to run?"

So, I decided that it was time to explain why we think it's a good idea to help companies without charging them.

What Grey Sparling gets out of helping companies for free

The short answer is: it's the right thing to do. Chris Heller and myself have looked many people in the eye as we convinced them that purchasing and using Peoplesoft products was a wise thing to do. As old fashioned as it sounds, we both value our reputations, and believe that in many ways, this is the most important thing we have.

The reason it's a good business decision (versus personal one) is as follows. The information we give out to help PeopleSoft customers, whether in the form of Blog entries, emails, or conference calls, allows us to improve the way we market, sell, and build our products.

Sales

Let's start with sales, since giving away things without charging for them seems contrary to heping with sales, especially since we realistically could charge for this advice. So, how does this help with sales? It's all about relationship building. When our free advice helps a customer, several things happen:

  • We've proven to them that we know our stuff.
  • We've given the prospect/customer a reason to talk with us. Hey, even if they realize that our products won't work for them, we haven't wasted their time
  • We've kept the door open for future discussions. Just because there isn't a match today, doesn't mean that there won't be one in the future

From a sales perspective, this is all very powerful stuff.

Marketing

Okay, now let's talk about marketing. In many ways, giving free advice is our secret marketing weapon. Marketing is all about getting yourself known and recognized. How do you raise awareness of your company and products?

Providing free quality advice helps us market in the following ways:

  • The Experts Corner drives traffic to the website, which also ranks us higher in Google searches. In addition, we have a lot of folks who hit our website periodically to see what's new. Very powerful from a marketing perspective.
  • Helping PeopleSoft customers without asking anything in return causes them to want to say good things about you to others. Most purchasing decisions are driven by word-of-mouth, so giving away advice that helps customers today helps your brand. Anybody who buys from us is putting his own reputation on the line for us. The more we do to prove that he isn't going to get burned by trusting us, the more likesly we'll be able to successfully sell to him.

Product Planning

The effect of helping customers without charging them in product planning is the same as in sales: it keeps the conversation going. From a product planning perspective, it's extremely valuable to get your feedback from people where your products aren't a good fit today. The challenge, however, is to get non-customers to be interested enough in you and your products to take the time to provide this feedback.

From our perspective, if we can help them and make them willing to spend time talking with us, we can get the following information to help us set our product direction:

  • They will be more willing to tell us their software plans for the next year and and what pain points they have.
  • They'll be more willing to tell us what marketing events they're attending and who else is going.
  • They will be more willing to evaluate our products and tell us what we need to do improve them.

The real reason we do it.

Okay, the real reason we like to do this is that it was a major part of our jobs when we were at PeopleSoft, and it's something we really enjoy doing. By nature, each of us are problem solvers, and we really enjoy finding ways to solve different and unique problems. Each company has its own set of issues, and we learn a lot about business, technology, and ourselves through the process of helping them.

Labels:

Monday, February 13, 2006

Enhancing the Usability of PeopleSoft Applications

This entry is about how to enhance the usability of your PeopleSoft applications.

PeopleSoft always did well against competitors when comparing user interfaces, but there is still plenty of room for improvement. I don't know of any PeopleSoft users that would disagree with that. Let's take a look at one example of how we can improve the user interface in existing PeopleSoft applications.

It's common in PeopleSoft applications to see lots of grid controls on the pages. One issue that grid controls have is that they don't provide great keyboard navigation for power users. There are hotkeys that you can use to insert and delete rows from a grid (alt-7 and alt-8) as well as more advanced things like searching the grid, toggling between showing all rows of data or just a subset. You can see a list of the system hotkeys by pressing Control-K on any page in PeopleTools 8.4x applications.

If you'd like to do something like move through a grid like you do in a spreadsheet (up key moves up a row, down key moves down a row), then you have to do some work. So, that's what we're going to do. Along the way we'll also show how to highlight the field with the cursor in it. I did that to help make the demo video (see below) a little more obvious, but it's a useful tip in and of itself.

Step one is to capture the up and down keystrokes in the grid. PeopleTools has a delivered keystroke handler that gets inserted each page at runtime. Unfortunately there's no support for you changing how that works. You do have access to the code for the generic keyhandler, but I'd recommend against changing it. It's a little bit complicated to understand, and there's an easier way to insert our logic.

For the purposes of keeping the demo fairly simple, we'll insert our logic into to the page by placing an HTML area on the page definition. There are better ways of getting your logic into PeopleSoft pages without touching the delivered PeopleSoft definitions (which is the only way that we at Grey Sparling build our products), but those are beyond our scope today.

Note that in this demonstration I attached this to the USER_ROLES page, but it will work on any page with a grid control in PeopleSoft 8.4 and above. I've attached the code that goes in the HTML area as a separate file. Here's what the code inside the HTML area looks like:



We start off with a little CSS that defines how the field with the current focus looks. Here we're just setting the background to yellow, but you can do anything that you want. This gets turned on and off in the onfocus and onblur events for the fields.

Next we define a couple of helper functions (getEvent and getEventSource) to smooth over some browser differences.

Then comes our main function for handling the up and down keys, gridKeyHandler. We want this to get called everytime a key is pressed. The code looks at which key got pressed (38 is the keycode for up and 40 is the keycode for down). If it's not something we're interested in, then we don't do anything.

If it was an up or down key, then we use a regular expression to see if we're in a grid field. Grid fields have IDs of the form RECORD_FIELD$row_number. On the user roles page, the grid control is for the record PSROLEUSER_VW, so we see fields like PSROLEUSER_VW_ROLENAME$1, PSROLEUSER_VW_ROLENAME$2, etc. in the generated HTML. Our regular expression looks for some text followed by a dollar sign, followed by some digits. If we find that, then we add or subtract one from the row number (depending on whether up or down was pressed), and then try to move to the appropriate field.

The next two functions (oninputfocus and oninputblur) exist as event listeners for when focus moves between the fields. This technique comes directly from the HTMLDog folks Suckerfish series. Go check out some of their demo pages. Great stuff!

So how do we get these functions to execute at the proper times? The addEvent function from Scott Andrew LePera. PeopleTools attaches it's key event handler by directly assigning the PeopleTools JavaScript key handler function to the onkeydown and onkeyup properties of the document object. That works, but only for mapping one function to the event. addEvent allows us to "attach" additional functions to these browser DOM events independent of the PeopleTools function. For those are interested in using this technique more extensively, be sure to read these follow up articles that explain why this technique isn't the end-all, be-all method for doing this. It suits our purposes well enough though, so we'll use it here.

The last little bits make use of the addEvent function to wire things up. We can hook up our grid key handler right away, but we need to delay the attaching of our field level handlers until the page finishes loading (otherwise we might not have all of the fields even defined in the DOM yet) so we put that logic in a separate function and use addEvent to call that at page load. Alternatively, you could just make sure that this extra logic that we're adding always gets put into the HTML page after all of the fields that are having handlers attached to them.

I put together a short Flash demo of this code in action. This was my first time using the Wink tutorial/presentation software. It lets you record what you're doing and then lets you go back and do things like add text boxes, etc. highlighting what is happening in the demo. The lack of artistic ability in the demo is definitely due to me and not Wink!

There's lots of things that I would do to beef this up to make it production ready.
  • Don't use an HTML area to get this code into the page.
  • Move the CSS for the current field focus out of this code and use a regular PeopleTools style sheet definition.
  • Add some unit tests for it with Selenium or JSUnit.
  • Add some code to handle "wrapping around". If someone is on row 1 and presses the up arrow, then this should wrap around to the last row in the grid. If they are on the last row in the grid and they press down, then they should move to row 1.
  • Beef up the regular expression test to handle the add row/delete row buttons. If you do a view source on a PeopleSoft page, you'll see that these buttons don't follow the same naming standard as the rest of the fields in a grid.
  • Do some more testing on pages with grids at level 2 and 3.
As you can see, there are ways of enhancing the usability of existing PeopleSoft applications without too much effort. The grid navigation enhancement is just an example of what is possible.

Let me know if you end up implementing this in your PeopleSoft apps and how your users like it.

P.S. That picture of me on our company "About" page? That was Larry's way of letting me know that I should have been in attendance when we were getting pictures taken :-) I'm tempted to leave that picture up though.

P.P.S. I still haven't put up a new picture, but I delete the reference at the top to some conferences that have come and gone.

Labels: ,