Wednesday, March 24, 2010

Am I buying a data silo? Ten questions you need to ask.

Let's say you're interviewing a vendor that offers Project Tracking software. Is it going to communicate with the software you already use? Here’s a list of questions that help determine whether software will “play well with others.”
  1. If our Project Manager changes her last name, will your software use our Human Resources database, or will we have to enter the change every place her name occurs?
    In other words, do you even INTEND for your software to interact with other software?
  2. What is the name of the table with our basic project data? Hint: if the answer is anything but "projects," watch out.
  3. What is the name of the column that holds our latitude data? Again, any answer but "latitude" should make the hairs on the back of your neck stand up. Keep checking.
  4. How do your web pages perform in http://validator.w3.org/ or some other html/css validator? "What web pages?" -- Wrong answer. People expect to “mash up” our data as needed. In fact, we do, too. 
  5. Would you please show me how easy it is to make a Google map of the projects? Any data that has a location on the earth needs to be mappable in the open-API mapping services.
  6.  What would be the URL of a typical project's HTML representation? Good answers look something like, 'projects/1234' or 'projects/show/1234' or 'projects/59th-street-bridge' -- something readable, anyway. Bad answers like "script.nnn?object=project&id=234x_guid_lsdlkjfll0980089" aren't going to make you happy for very long.
  7. How do we add a field to our 'projects' data table? Obviously, “we don’t recommend that” is the wrong answer. If the answer doesn't mention a common database manager like pgAdmin or MySQL GUI tools, then you'd better thoroughly review what's possible inside the program. 
  8. Would you show me how you structure your HTML? Your CSS? Your JS? Even if the language of the program is hidden (Closed Source), the outputs should be in well-structured open formats, so that you can use them elsewhere.
  9. What language and what other software (typically a database) does your software use? If it uses off-the-shelf, but obsolete technologies, even the vendor can’t hire programmers to make changes when needed.
  10. How do I make an ad-hoc query against my data? Again, if you can't use common database management tools, you need to be very specific in your questions. "Canned" queries never cover all the questions people dream up.
  11. (Bonus) Show me your source code (if it’s not proprietary.) Some people write good maintainable code, others obscure their code intentionally with weird names and spaghetti-logic. It runs, but no one else can read it. If you need a change, or a fix, you can’t write it yourself. You’ll have to pay for the next upgrade, and hope it's included.

No comments:

Post a Comment