PASS Summit Unite 2009 Speaker Tip

The commander shouts out the commands: "Ready!" then waits for the gunner to acknowledge readiness; "Aim!" and only after waiting for the "Yes, sir, we are aimed" signal; "Fire!"

In any other order, the commands make a lot less sense. "Ready, Aim, Fire" was achieved only after early attempts were wildly unsuccessful. For example, "Ready, Fire, Aim" was used in the first battle ever fought with cannons on ships. After "Fire!" the entire fleet was sunk while the opponents looked on with confused glee.

The best tip I can give any developer is to follow that simple order of operations: 1) Ready—know what the target is by having solid requirements, and understand your tools, 2) Aim—design to make sure you understand the target, and 3) Fire—start coding.

At the core of my book Pro SQL Server 2008 Relational Database Design and Implementation and my PASS Summit 2009 post-conference seminar with Paul Nielsen is to teach the concepts of database design and how to apply those concepts to realistic scenarios. Many programmers think design seems boring, but design really should be fun because it’s just an abstract version of coding. By running ideas through your mental compiler, you iterate toward a possible solution considering all obvious problems you can think of. Remember that too often, you won't be able to undo mistakes in your design after coding has begun.

What do I mean "won't be able to undo"? Too many people remind me that while there are great ways to solve their problems, the reality is that their database is stuck in the 1980s. And although they’re building their 200th pretty user interface using cool new techniques, it’s either too costly or too dangerous to change the data structures. So when building a new database, think about the future, and design for it.

Read more from Louis about his & Paul Nielsen’s Nov. 6 PASS Summit 2009 post-conference seminar, "Advanced Relational Database Design."

Editor's Note: SQL Server Magazine would like to thank PASS for providing this technical tip.