Saturday, June 13, 2009

Database Design - Customers

Most business applications have a customer table. As a developer it is all too easy to create a customer table and tie it to sales or orders. This approach can be short sighted. Before jumping in to table design ask yourself and the business some questions:
  • What is the life cycle of a customer?
  • When does a customer become a customer? When they place an order? What if you have the contact information before that? Is the customer still a customer or is it a lead?
  • If a customer hasn't purchased anything for 5 years are they still a customer?

Something else to consider- customer contact information becomes outdated very quickly. The Sales & Marketing institute found that by surveying attendees at seminars, 70.8% of the attendees business cards had at least one piece of information that was out of date.

While not all customer information can be validated, addresses can. Customer addresses should be routinely validated and the date and result of the validation should be stored.

Before you design that next customer table, think about the business process and what data might be in the table several years down the road.

Thursday, June 4, 2009

My Experience With Outsourcing...

There seems to be a ravenous trend to outsource just about every part of IT that can be outsourced. This appears to save companies money in the short term, but I wonder how much it really saves them in the end. For the sake of this post, I will only speak from my 3 meager consulting experiences (totally close to $60,000 in rework) with companies that have outsourced. All 3 were negative for the companies involved. For me, however, they turned out to be quite positive.

For about 7 years I ran my own software consulting company, DevAmerica. For the most part, I grew my company from small businesses needing a resolution to some IT issue they didn’t have the resources to resolve themselves. In this case, though, a large local business that had an IT department (we’ll call them Ben Seagar) had a tool written in C that compiled to about 500kb. They put the tool on a floppy disk to install it on all of their new computers to align them to their network. Yes, I know I’m dating myself. They needed to upgrade the tool and they outsourced it to another country. The off shore company decide the best solution would be to rebuild the application in VB6 and spec’d it out at about 4 months. Six months later the well-meaning people at Ben Seagar received a version of their floppy disk tool that was about 20mb. They put it on a CD and proceeded to attempt to use it to add new machines to their network. Unfortunately, the thing was chocked full of errors. After another 2 months of fixes that introduced new errors, they called me on a referral from another client.

Now, I have to tell you, I tried with all my might to fix this application, but after tracing the twelfth variable named something like a, or j, or variable3, or IHaveNoIdeaHowToCreateMeaningfulVariableNames, I gave up and rewrote the thing, with Ben’s permission, in C. Three weeks later, they put it on a floppy disk and were happy for the next year or so, until Dell stopped selling machines with floppy drives.

This is one of 3 similar contracts I had with 3 different companies, specifically because of outsourcing. I know 2 other consultants with analogous stories. While scenarios like these have provided my friends and me with good paying contracts after the fact, they’ve also put many other friends out of work and caused bigger problems than they’ve solved for many companies. Don’t get me wrong…they were outsourcing when they contracted me to fix the app, but they also paid for something twice that their IT people could have done properly and done quickly.

I realize that all outsourcing incidence do not end up this way, but all told, it’s better for companies and the economy to user their internal IT resources if they have them, and let IT do what they love to do. Trust your IT departments. I’d be completely satisfied to spend the rest of my consulting days contracting only to smaller businesses that do not have IT departments.

Tim Hall is a Software Engineer, Graphic Designer, IT Manager, and SEM Consultant. He builds your websites for you through Alien Head Software Web Development. He runs this blog to help others be inspired by those who have inspired him.

Tuesday, June 2, 2009

Welcome to DevAmerica's Blog...

I have had the great fortune over the past 20 years as a software developer, to work with some exceptionally talented developers and engineers; a few of whom I would consider experts. The things I have learned from these few have been invaluable to me professionally and personally. Because I recognize what a contribution those people, and their knowledge, have made to my career, I have started this blog in hopes that others might learn as much from my karas as I have. The bloggers herein represent some of the brightest minds, and interesting personalities, that I have had the opportunity to work with. This blog represents my trust, admiration and thanks to them for the help and inspiration they have been to me over the years.

Tim Hall is a Software Engineer, Graphic Designer, IT Manager, and SEM Consultant. He builds your websites for you through Alien Head Software Web Development. He runs this blog to help others be inspired by those who have inspired him.