Commercial Software and the Useful Salespersontiistaina, toukokuuta 27, 2008
It’s the Friday before Memorial Day and most of it was spent evaluating a commercial ECM’s (Enterprise Content Management) API. It has been a very long time since I’ve been able to bang away at a commercial API and see how it does. It was really nice, exhilarating may be pushing it, but it was really nice.
It was nice simply because the API and the samples were documented. Most of my friends and colleagues love OSS but we all have the same complaint: the documentation sucks. I end up particularly annoyed whenever I have to use a new OSS major component framework at the scale of Mondrian or Jackrabbit. They are big, powerful, really useful and the documentation can be pretty weak. Even established platforms, like Liferay, have terrible documentation but they are cheap so developers use them.
I sometimes think I use OSS platforms for a different reason: I don’t like talking to sales people. I don’t like talking to really any salesperson. It doesn’t matter if you are an articulate, friendly, genius of a salesperson who is really trying to solve my problem rather than fill a quota, I still don’t want to talk to you. It’s the adversarial nature of the sales process where I must negotiate the price or go through an extensive evaluation process such that I get pinged every few hours about how it is going. I don’t want that kind of contact.
It turns out that I needed all that contact. There were areas of the documentation and the API that were not as thoroughly described as one would hope. The salesperson, while it felt invasive, actually got me the information and made it easier to evaluate his platform. All that contact kept me from banging my head against the desk or getting frustrated that the documentation was weak in those few areas.
As I said, I was looking at a big ECM package and had spent a lot of time trying different applications both commercial and OSS. The OSS ECM platforms had an advantage that they were initially inexpensive: no licensing cost but I could get support services. The downside with all of them was that the documentation was always weak. This is especially problematic if you plan on using the ECM has a content repository for a website.
First, why would you ever use an ECM for a website? Some people have systems that require an elaborate editorial workflow that has many people editing and reviewing content until it ultimately gets published. A good workflow system makes content available to the appropriate person as soon as the upstream person finishes his task. A writer finishes some content and passes it on to the tech editor who makes some adjustments and then passes it to the copyeditor. The active editor relinquishes control of the document and then the next person gets notified and takes over. Its not very different from a bug tracking system and changing a bug from “open” to “fixed”, which may result in control of a bug moving from the developer to a QA person, who automatically gets a notification. The workflow streamlines the publishing process.
Great ECM platforms provide a long list of features like security, which I hate writing because it’s a subject packed with pitfalls related to performance. Security almost always negatively impacts performance. It’s a gate between you and the content so its going to slow you down much like the TSA guy making sure you have a boarding pass.
Security is often not at the front of everyone’s mind when working with an ECM. Most people have a hard time figuring out what content needs to be simply published or shared. Complex security models deal have a variety of security domains or contexts which determine the access to the content item.
Here’s a good example: let’s say you are building a course management system like Blackboard and you need to build a system that allows a user to be a Teacher’s Assistant in one class and a student in another. The two courses may share content items. In one case the user should only see the content item according to the rules for students while in a different simultaneous context the rules are different and maybe more permissive. Writing a context sensitive content security layer is not difficult, however, writing one that performs well and works with search is challenging and time consuming.
Back to the evaluation process. The salesperson kept bugging me and I was busy looking over documentation and building test cases. I was losing time conversing with him rather than evaluating the ECM. So I decided to write a long list of technical questions that only a consultant would know the answer and thus give me some free time to work.
No dice: he got back to me in an hour letting me know that a consultant would be sending me the answers. Two hours later I had the answers along with sample code. So I wrote a follow-up, something deep and long winded like “given the following requirements, show me the code that would implement the corresponding security model.” Ha HA! I had him now! It would require design now and that was pretty time consuming. I now had plenty of time to finish my evaluation.
Yeah, that turned out to be a pointless attempt. These ECM companies have done these system a hundred times over. A boilerplate implementation showed up two hours later. It had everything, even really nice queries and documentation references. I was annoyed because now I was being distracted with code that I had asked for that would make my life remarkably easier and let me evaluate the product faster.
Wait, did I just say that? Am I really annoyed that they actually went off and wrote a very large portion of the code I would need to integrate the ECM into my product following my business rules? Does my evaluation still matter?
Ten minutes later I was beaming. I still had some evaluation work, like testing how much content can go into the system and how long before it will become available. The big benefit was that I had a clear template on how to do the integration. I could just make the minor changes to their layer and try it in the product itself. Shaved off weeks of stumbling around hoping that my implementation was right. That was hugely beneficial to the product and the company.
The evaluation process was clearly streamlined thanks to the salesperson that I didn’t really want to talk to. I feel a little conflicted.