When you create business software, the database is usually the most critical piece of the system. But few business owners know to look for database skills when they hire a programmer.
All your software sits on top of the database, much like a house sits on a foundation. If the foundation is crooked, or the wrong shape, has cracks, or is made of inferior materials, you’re going to have problems.
No matter what you do, the house is not going to be stable over the long term.
Sure, it will work. You can sleep there. But you’ll be praying every night it doesn’t come crashing down.
If your database is poorly designed, you’ll have the same problem with your software.
It may work somewhat, but there will be obvious problems. It could be hard to use, it could lose data, or you may not be able to report on the data you want.
All of these problems happen over and over, because few programmers really understand the database side of software development. No matter how good the programmer is, you can’t build good software on top of a bad database.
It’s easy to open up a database system and build a few tables. But proper design is more than just creating a few tables that cover all your data fields.
A good database programmer understands SQL, stored procedures, relationships, indexes, and keys, as well as broader topics like security.
Ask your programmer if he uses artificial or natural primary keys, and why he uses one instead of the other.
You don’t really need to understand keys yourself, you just need to see if he has an answer. If he doesn’t know the difference, or can’t explain his choice, find someone else.
By the way, there’s no right choice between the two, although many database programmers are fanatically devoted to one or the other. Either is fine, but you should be able to get an answer for why.
To design an effective database, you need to consider both the data you want to keep track of, and the reports you want to see later.
If the design is too simple or too complicated, you may not be able to report on the data the way you want.
If you want to report on average task time per employee on an annual basis, the ability to do that needs to exist before the software has been built.
Changing the database design afterwards can be difficult. Like re-pouring the foundation of your house after it’s built.
I am creating a series of posts called “Tech 101” for business owners. I think it’s important to understand the basics of technology, so that when you hire a programmer, you’ll know what to look for.
One of the big problems I see in hiring programmers is confusing “tech lingo” with programming expertise. Too many businesses lose money hiring someone who can speak the language, but doesn’t really have the skills. You need to know what’s important, and what the right questions are.
Through this series of posts, you’ll learn the basics of databases, web security, programming techniques, and required skills that your programmer should have, but that many don’t.
My goal is to help you avoid losing money to a bad programmer. Like any other profession, there are a small percentage of truly excellent programmers, and they’re difficult to find.
Many people expect a good programmer to be able to come in and fix the mistakes the bad programmer made. Unfortunately, that’s usually not possible. You can’t build a stable house on a shaky foundation.
Programming is as much art as science, and every programmer has their own style. But regardless of style, the basics stay the same. If someone has created software without understanding the fundamentals, it really can’t be salvaged. It can be patched and maybe made to struggle along, but it will probably be a money pit, and it’s usually better to just delete it and start from scratch.
That’s why it’s important to do it properly from the start.
So learn the basics, and save your money. This series is designed for non-technical people, and won’t try to turn you into a programmer.