Friday, September 11, 2015

Yikes! Our Database Program Won't Run on the New Computer!

Have you been in this situation?

Your business has been running on a nice customized database program for about ten years that someone developed for you.  The program fits tightly with how the business operates.  It was developed by someone in the past who had a full time job and did the work during his off-time for a good price.  You just replaced a computer with a newly bought one, with the latest version of Windows.  Now nobody can install or run the program on the new computer.  The guy who developed the program can't be reached for support.  He went on to other things and can't be bothered with your problem.

Now what?

Time to go looking for someone who can fix the problem.  You're not sure what language the program was written in, and you don't know anything about its database, except you think it's called something like, XYZ.  You ask your computer support person if she knows anything about it.  No - she can't figure it out.  She doesn't do databases.  You ask around, but nobody you contact knows how to deal with it.  It's some old system nobody uses anymore or has never heard of.

If you search long enough you should be able to find someone who can provide some sort of solution, so you'll be able to have new computers when you need them.  This problem could happen again.  But it could have been avoided, and can be avoided in the future.

Was the decision to use a custom program instead of a commercial one the issue?  No.  Although commercial software is really good and can meet a lot of the needs of a business, it's often not enough.  Each business and organization has unique processes.  Many times the uniqueness calls for some customization.  When you decide it would be beneficial to have a custom application you should follow these guidelines in order to avoid being left in the lurch some day.

To control costs you should use a consultant who will use a standard, popular, rapid development platform.  The following are current good platforms for putting together custom database programs quickly and economically:

Microsoft Access

This is the desktop version.  You would need a license or copy of Access for each computer the custom program will run unless the consultant uses the Runtime Engine.  The Runtime Engine will let you run the program free on any computer.  An Access program will only run in Windows.  There's no Mac version.  An alternative to Access for the desktop is using Office 365 with Sharepoint in the cloud.  Microsoft has tried to make the pricing for this arrangement attractive to all businesses.  However, development costs for a custom database program are likely to be higher than for the desktop.

OpenOffice Base

This is also for a desktop version of a program.  It's free, open-source.  So you can run the program on any computer for free.  The OpenOffice suite is available for Windows, Mac, and Linux.


FileMaker Pro

This is a robust platform that allows the creation of applications to run on desktops, through the web, and on mobile devices.   This solution is not free.  You'll want to use a server with this.  Filemaker offers a cloud server alternative.


Alpha Anywhere

This is another platform that allows a developer to create applications for desktops, web browsers, and mobile devlices  It requires a server, and has a cost structure too.


For any of these platforms be sure that the agreement with the consultant gives you complete ownership of the program and data files.  Also be sure that no matter what tool a consultant uses to create a program, that you have a copy of the source code.  The source code is the form of the program in human-readable format.  If the source code is unavailable, and you need another consultant to take over support it will be much more difficult to do anything with the program.

The above platforms are likely to be around for a while, and there is a large community of developers who have worked with them.  This means that if your developer drops support you shouldn't have difficulty finding someone to step in and take over.  However, things can change suddenly.  One of these platforms could go out of style in the future.  This means that as soon as your developer loses interest in being around to support you, you need to find a replacement ASAP.  The replacement can let you know when the platform is losing poplularity, and when it's time to think about moving to a new platform before it's too late.  

Monday, August 17, 2015

My Painful Experience with a Web Hosting Service


I want to share my experience and thoughts about having a website on a shared hosting account.

Several years ago I was looking for a hosting service to set up a website for my business.  At the time there was already a large number of companies to choose from.  I didn't do any real research.  I just chose one of the first ones I came across.  The name of the hosting company is Action Web Hosting, and I've stayed with them for a long time because I've experienced really great uptime with my site.  I learned later that Action Web Hosting is a reseller for GoDaddy, meaning the computers running websites are run by GoDaddy.


Another thing that kept me with Action Web Hosting was their 24/7 phone support.  I've never experienced any bad wait times.  However, not all has been rosy. In the last couple of years I've experienced frustration getting technical issues resolved.


My most recent incident began on August 4, 2015.  On that date I received a preformatted email from Action Web Hosting congratulating me on an update to my hosting account.  The email indicated that I had a new server for my website and I could start using it.  I had never requested a change to my service, and had never received a heads-up from them that any change was going to happen.  Nervously, I checked my site to be sure it was still showing up.  I discovered that pages that connect to a database on the site could no longer connect to it.  I immediately called customer support.  The rep informed me that my site had been moved to a new server because the one it was on was now too old and unsupported.  The rep had no idea how to correct the database problem, so she conferred with someone else.  I was then advised to try making a change in the connection information on my pages.  The suggested change had no effect, so the rep escalated the ticket.


As of August 14, 2015, the issue was still unresolved. On August 10 I received an email from customer support stating the issue was resolved.  But it wasn't, so I contacted customer support again on August 11.  I was told the problem was still being addressed and I should get a resolution in about three hours.  On August 15, when the issue remained, I once again called customer support.  The rep told me to try deleting my database and then recreating it.  He acted as though this wasn't really his problem, and I got the impression from his attitude that I was wasting technicians' time working on a problem they couldn't figure out.  The rep claimed I was the only customer experiencing this issue.  Finally, on August 15 I gave up and tried deleting the database and replacing it with a new one.  After I did that the connection worked for the new database.


Understandably, I started looking for another hosting service.  As I said before, this wasn't the only issue I had experienced with customer support, but I don't have time to go into those issues now.  I can say that I know a little something about website technology because I'm a database developer who has created web pages and was the one who set up my business site and database.  When I contact customer support I often feel as though I'm talking to an idiot.  But that's a harsh judgment. Customer support reps don't have the resources at hand to address these issues quickly, and they are not technicians - they're more like customer relations people.


In researching other hosting services I've found lists of recommended ones based on number of customer complaints vs. praises.  My experience with Action Web Hosting (GoDaddy) and my research into other hosting options have left me with the following thoughts.


First - no matter how highly ranked a web hoster is, you can find customer complaints about support.  Plenty of diatribes can be found related to broken sites caused by the hoster and the frustration of dealing with clueless customer support reps.  In addition to my own problems, I've witnessed a couple of my web developer colleagues' struggling with incompetent support reps when their clients' sites ran into trouble.  One client's site was down for at least two weeks.  They finally moved to another hoster. The troublesome web hoster was IX Web Hosting, by the way.


Second - customer support is not really technical support.  When you contact support you're probably just getting a customer-relations-and-sales rep.  These people are cut off from the technicians, or have poor communications with them.  With Action Web Hosting, it's as if the support reps are even more in the dark about the situation than I am.


Third - things are great only when things don't go wrong.  When things do go wrong, and the fault is on the hoster's end, the support reps want to blame you for any issue you report.  They like to suggest that you've done something incorrect in a configuration or script file, when in fact there's nothing incorrect and the site was working for months without a glitch with the same configuration and scripts.  It can be nearly impossible to get though to anybody there that there's a problem with the server they need to troubleshoot.


So I've decided on this course of action:


I'm going to look for another hosting company which is high on the ranking lists, and is not a reseller.  Then I'm going to copy my website onto the new hosting account.  I'm not going to end my account with Action Web Hosting.  That's because I intend to maintain two duplicate websites in case one runs into trouble, and because the GoDaddy servers do indeed stay up and running most of the time.  Finally, I'm going to set up a failover service that will redirect traffic to one of my duplicate sites whenever the other one encounters a problem.


In summary, my solution is to use redundancy.  I'm going to assume that sooner or later a hosting service will fail me, no matter how high its ranking or how reliable it's been for me in the past.  Fortunately my site's issue with my database was not a critical one this time.  But I want to ensure future glitches won't hurt my business when my site's uninterrupted functionality is critical.



Saturday, February 21, 2015

Steps to Successfully Changing Your Business Software Part IV: Implementation

You've selected and purchased your new software, or signed up to a cloud-based application.  Now it's time to implement it.

There are two major challenges to implementing new software.  One is change management, and the other is data migration.  The new software should be as close as possible to what you documented when you were analyzing your needs during the business analysis phase.  However, the new software's design might require you to make some changes in your processes that you wouldn't have made otherwise.  If you involved all your employees in the design and selection phases,  change management will be easier because they will have had the opportunity to participate in decisions about the new system and be much more likely to be positive about making changes.  If you intend to import data from your old system into the new one you'll need to plan how to do it.  Data migration is often not given the consideration it should when implementing new software.  Lack of planning and appreciation for the difficulty of this task leads to frustration with getting a new system running and working right.

You should follow these guidelines when implementing a new software system:

- First, you should expect, and accept, that things will go wrong.  If you expect that unplanned problems will crop up you'll be much better prepared to deal with them.  Almost any new system implementation requires more work and time than can be foreseen.

- Be careful about setting deadlines for implementation.  Don't base deadlines on arbitrary dates and wishful thinking.  It's good to have a ballpark date for final implementation, but you should be ready to adjust this.

- Avoid the temptation to do a complete cutover from the old system to the new all at once.  This places your business at risk.  You can manage risk by following a staged plan for transition from the old system to the new.

- Include a testing phase in your plan.  You should schedule testing the new software with sample data to be sure it works as expected.  Testing can reveal problems you can get corrected before committing to the new system.  Break up the testing for vaious parts of the software.  Be sure you do thorough testing.  Don't assume everything will work without a hitch in the new software.

- Don't try to migrate all the data from the old system before testing the new system.  You should import only enough sample data to test certain parts of the new software at a time.  Importing small sets of data will reveal issues with data migration which you can address when doing a complete migration plan.

- Be sure to include data cleanup in your data migration plan.  Usually the data in an old system lacks consistency, which makes it difficult to import correctly into another system.  For example, a data field in the old system may have been used to record phone numbers at one time, but then used to record emails at other times.  But the new system has separate fields for phone numbers and emails.  Or perhaps the old system had a field for a phone number which could be entered in any format (with or without parentheses and dashes, with or without long-distance prefixes), but the new system uses phone number fields that require a certain format and number of digits.  You'll need to identify data that's entered inconsistently or incorrectly in the old system and get it corrected before trying to import it.  This might require hiring data entry temp help.

In some cases a business can adopt a new software system without migrating any data from the old system.  In such a case you'd be using two separate systems without the need for any sort of  data synchronization.  In most cases a business will require running two systems in parallel with some kind of data synchronization until the old system can be dropped.  In the latter case it would be wise to plan for a phased transition from the old system to the new one.  This means using only parts of the new system in stages.  This helps to mitigate risk, and affords a fall-back strategy in case issues are uncovered with the new system.  By keeping the old system running and up to date you can fall back to using the old system for everything until issues uncovered in the new system are resolved.  

Keeping data in sync between two systems can be a challenge, and must be carefully planned.  It might require doing double data entry, or  running data synchronization software, or a combination of the two.

Of course, there should also be time planned for training on the new system.  But training should not be used as a substitute for early employee involvement in the software selection process and testing it to be sure there aren't issues you didn't anticipate.


Sunday, February 15, 2015

Steps to Successfully Changing Your Business Software Part III: Software Selection

Before you've reached the stage of selecting your software, you've thought through and documented what you're looking for.  Therefore, you should already know what you want.  When weighing choices you should follow the guidelines below.

Rely on your own needs analysis.  You should have done a thorough job developing a design for your ideal system.  Software salespersons don't know your business, and they can't do a better job than you in the selection process.  They only know about their own software, and can't know how well it will meet your needs.


Avoid basing your selection decision on canned demos from salespersons.  Ask if you can get demos based on your own specifications.  The pre-developed demos that salespersons present make their software look great, but they almost never tell you anything about how well it will work for you.


Make sure you understand the software you are looking at.  If anything is confusing, that's a warning sign.  Don't assume training is the answer.  You should be selecting the software that comes closest to your ideal design concepts.


Take advantage of free trials.  You should never purchase any software, whether cloud or installable, without first giving it a test drive, if possible.  A lot of software comes with a free trial.


Be sure to weigh the pros and cons between cloud software and software installed in-house.  


Check the scalability of the software to see if it can keep up with possible changes and growth in your business. 


Carefully check the support agreement.  Is 24/7 phone support available?  Will any user support involve a cost?


Try to estimate the true cost of ownership for a package you're looking at. If in-house, how often will you have to upgrade?  How long is a given version supported?


Find out what integration capabilities the software has.  Does it have an API?  An API - or application programming interface - allows anyone with the right programming skills to create custom applications that can interact with, and augment, the software.  Does it have good features for exporting and importing data from various sources?  Does it have built-in integration with such popular office software as Outlook, Excel, and Quickbooks?  If you don't have your own programming expert to help you evaluate these capabilities you should seek a consultant who can do this.  


How much will implementation cost?  Do you plan to migrate data from your existing system into the new one?  How big a job will this be, and how much could it cost?  Moving data into a new system is often overlooked and grossly underestimated in the selection process.  Don't rely on the salespersons for the new software to advise you on this.  They will want to minimize the difficulty, of course.  If you don't have someone working for you who can evaluate this, you should seek the advice of a consultant.


Avoid basing your selection on what other similar businesses use.  Remember every business has unique processes.  Even if another company is in the same industry as yours, it will likely be using a given software package differently from the way you would.  The software might be a good fit for the other company, but not yours. Stick to the ideal design you developed when you analyzed and documented your needs.


While you shouldn't base your selection on what similar businesses use, you should get references or find others who are using a package you are looking at.  Ask them about their customer satisfaction experience.


Always consider combining more than one piece of software.  Any single package has strengths and limitations.  People often look for a single package that will do everything.  It's possible to select two or three inexpensive pieces of software, with different sets of functions, and integrate them.  This way you take advantage of the strengths of each piece.  This combination can be much more powerful than relying on a single piece of software that performs some functions well, but is weak or lacking in others.


Avoid brand new software or a brand new version that hasn't stood the test of time.


For cloud solutions figure on implementing your own data backup scheme.  Also consider what to do during outages.  Always assume you'll have outages.






Monday, September 1, 2014

Steps to Successfully Changing Your Business Software Part II: Interaction Design


As I said in the previous article on business process analysis, there are four steps to follow for successfully changing your business software:

1. Business Process Analysis
2. Interaction Design
3. Software Selection
4. Implementation

In this article I discuss interaction design.  Interaction design focuses on the user requirements for software.  There are three sets of requirements that have to be addressed in choosing a new software solution:

Business Requirements
Technology Requirements
User Requirements

Business requirements include analyzing the needs of the business and how to fulfill them.  These requirements should be identified during the business process analysis phase.  Technology requirements identify what is technologically feasible and affordable, given the current computer systems in the business and its budget.  User requirements identify what is needed in software to help staff accomplish tasks and goals in order to fulfill the needs of the business.

Identifying user requirements and using good interaction design is vital for successfully changing your software.  It's critically important for the people who will be using the new software to be involved in the process as soon as possible.

When it comes to purchasing software for businesses it's normally the case that the people who make the purchasing decisions are not the same as the people who will actually use the software.  Usually it's the business owners, executives, and managers who make the purchasing decisions.  These decision makers would normally not be using the software the way regular employees would.  Executives and managers don't always do data entry and produce reports.  For smaller businesses, they might have to, but in larger businesses they focus on management.  This situation contrasts with consumer purchases, such as personal software, or automobiles for personal use.  For these purchases, the buyer is the same as the user.  In a business of any appreciable size, the buyer and the user are not the same.  This means that the buyer has to have intimate knowledge about the users of the product.  In other words, the buyer needs to know all about how employees perform their daily tasks and how software can best meet their daily goals.

When decision makers select a new software solution they make assumptions about how the interface should work for the employees who will be using it.  These assumptions are almost always wrong.  Or they might not put any thought into how the interface should look, and assume that the right training will make employees efficient in the use of the new system.

In order to avoid this mistake you'll want to use at least some techniques of interaction design.  If someone in your company has the skills for doing this, that's good.  However, you'll probably want to seek out a consultant who has these skills.

Interaction design involves these basic steps:

1. Document how employees currently perform tasks to accomplish goals - both with and without software.

2. Sketch out new ideas for improving efficiency.  Sketch out new software interface ideas.

3. Present your ideas and get feedback for improving your design.

Iterate through these steps until you and your employees agree you have a good design.  Note that interaction design is done before software selection.  That is, you develop ideas for your ideal software interface before you shop for new software.  Also note that this stage involves conversation with the employees who will be affected by the new software purchase.  This stage uses their feedback to help select the best software for your business.  If you get the users for the new system involved in the decision making process early you're more likely to get their buy-in.  When employees are kept out of the decision making process until after the new software is selected they are more likely to be resistant to the change.  If employees feel they have a voice in the process they will feel empowered, and can bring invaluable insights to the table.  If they have a good idea of what's coming and feel they have a voice in the selection they will willingly work with you to make the implementation a success.  One of the big reasons for software project failures is lack of buy-in from the very people who will be using the software, and who are a vital component to its success.

Thursday, July 17, 2014

Steps to Successfully Changing Your Business Software Part I: Business Process Analysis


Whether you do everything in-house or hire any consultants, these are the steps to follow:

1. Business Process Analysis

2. Interaction Design
3. Software Selection
4. Implementation

In this article, I begin with business process analysis.


Shopping for commercial software, a cloud application, or a programmer to create software, should never be the first step you take.  You must first be sure you have a clear understanding of your current processes and the changes you intend to make.  If you don't have processes and people's jobs documented already, now is the time to do it.


But before I go any further, there's a fundamental item to address, which is the reason why you are looking for a new software solution.  Is it to fix broken business processes and employees?  If it is, that's the wrong reason.  See if any of these statements ring true for you:



  • If feels as though you and your business are always playing catch-up.
  • You keep having to fix problems, sometimes doing the work yourself that you had delegated to an employee.
  • You have high employee turnover.
  • Important items too often fall through the cracks, causing upset customers.
  • You have multiple prices for the same items for multiple customers.
  • You have individualized processes for catering to the desires of several, or many, of your customers.
  • You experience many bad and stressful weeks, dealing with crises, emergencies, or some bad news.
  • You continually make changes to  processes and workflow in an attempt to resolve problems.
  • You call unscheduled, on-the-spot, meetings to address and resolve issues.
  • You are often upset and angry with one or more employees, and lecture them for problems when they pop up.
  • Work in some areas is always behind.
  • Employees routinely or intermittently make mistakes in their work that have major negative impact on customer fullfilment and satisfaction.
  • Your employees routinely experience issues and downtimes with computer equipment and software.
  • You lack documentation for procedures, processes, and job positions.


If much of the above describes what your business is like you should seek out the help of a business management advisor or coach.  These statements are indicative of a business that is badly managed from the top.  As a business owner, it is often difficult to see that the root cause of many issues lies with you, and not with the people who work for you, or the software they use.  We all tend to think we know what's best.  An outsider like a business coach should be able to help you see where you can make changes in yourself and the way you run your business.  From there, processes can be improved, and you'll be better able to assess what changes in software you should make.  When new software is purchased and implemented in businesses that are not well managed from the top the results are often not good.  It usually just introduces more problems to solve.


No matter how small your business is you should have your jobs and processes documented before attempting to make any significant changes in software.  If you're interested in replacing the core software your business needs to operate this is critically important.  The process of working through documentation will reveal inefficiencies you may not have noticed before, and details you need to consider for process automation. You should then have a clearly written plan for process improvement, which includes what improvements you want to make in software. If there's nobody in your company available to create the documentation, or you need help or guidance, you can call on a business consultant who specializes in this area.