Proper Programming Practices

Ted Roche, MCSD, MCSE, MVP

Ted Roche & Associates, LLC

If you've coded that routine once, you've written it a million times. But are you doing it right? In 15 years of xBase development, much of it as a consultant, Ted has seen (and done) nearly every mistake that can be done. This session covers Ted's Top Ten Developer Mistakes, ideas on development methodologies that improve code quality, and resources on testing, coding tools, peer-to-peer support, and books, articles and web sites worth keeping up with in order to improve your programming.

Continuing Education

You can never know it all. In hanging out with many top-notch developers over the year, there is one consistent topic of conversation I hear over and over again: something new the developer has just learned. It may be a new notation for object-oriented design, a new book on database normalization, or a new web site on component development, but the lesson is clear: the best developers recognize the need for continuing, on-going education.

Continuing Education

Books, magazines, journals, forum

Check out the book lists on or for nearly every book I would recommend. There are new books coming out all of the time – watch web sites and magazines to find out about new ones.

There are many magazines you should consider. Industry specific magazines, such as FoxPro Advisor, FoxTalk, UT Magazine, and CoDE, are required to stay up on what is happending in the FoxPro world. Consider also more general magazines such as Software Development, Dr. Dobb’s Journal ( or general computer magazines such as PC Magazine.

An online presence is nearly required to keep up with everything going on. Consider the FoxPro Wiki (,,, CompuServe (, the Virtual Fox User Group ( and the latest entry, FoxCentral (

Certifications: Microsoft, ICCP

Certifications can serve many purposes. You can use them to self-validate your level of learning, You may need them in your work environment to establish standards for your workers. Some programs you get involved with, such as the Microsoft Solution Provider program, may require a certain level of certification. And, finally, you can use a certification as a marketing advantage over competitors who lack the certification.

Degree program

Degree programs can offer similar advantages to an industry-specific certification, with the added benefit of being recognized outside of that industry, as well.

Lawyers, doctors, nurses, EEs, plumbers and other professionals have regulated CE – it’s coming.

In light of the many security problems that have occurred because of programming glitches, and a growing body of evidence that failing to follow commonly accepted practices of good software development leads to expensive and sometimes dangerous failures, it is likely that governments will consider starting to regulate or license the practive of software development. If you have already started a program of continuing education, and have achieved industry certification or a university degree, it is possible that you can be “grandfathered” into the program without as much effort as someone who had not documented their educational efforts.

What’s Out There?

It’s impossible to keep track of everything going on the software development world. Here are a few items that have really caught my attention over the past year.

Extreme Programming

Extreme Programming (“XP”) comes from a zealous group of Smalltalk programmers, who have spent nearly 10 years refining a methodology.

Kent Beck is the ringleader of a group of programmers who developed a major software application for Chrysler Corporation. These programmers have gone on to write a half-dozen books for Addison-Wesley with the “XP” logo.



Martin Fowler was also a member of the C3 project at Chrysler, and contributes to some of the Addison-Wesley books. In addition, his own book, “Refactoring” is the equivalent of design patterns for performaing maintenance on existing OOP code. The idea is that there are ways to “refactor” – modify, merge, rename, reassign – method code that works, and there are other ways that are problematic. This book covers the most common pattersns, when they apply, the problems they can cause, and the step-by-step instructions of how to start with working code, taking small steps to convert it, testing along the way, and ending up with better, more reliable working code.

The Agile Alliance

The Agile Alliance was a great excuse for a business expense. Held 11-13 Feb 2000, at Snowbird Lodge, in Utah, US, leaders in the development disciplines for many of the major methodologies came together and set forth these declarations:

Manifesto for Agile Software Development

We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on
the right, we value the items on the left more.

Kent Beck
Mike Beedle
Arie van Bennekum
Alistair Cockburn
Ward Cunningham
Martin Fowler

James Grenning
Jim Highsmith
Andrew Hunt
Ron Jeffries
Jon Kern
Brian Marick

Robert C. Martin
Steve Mellor
Ken Schwaber
Jeff Sutherland
Dave Thomas

© 2001, the above signatories
this declaration may be freely copied in any form,
but only in its entirety through this notice. is the Original Wiki. What’s a Wiki? A Wiki is a web site with a clever piece of software, often a database and versioning repository, that allows visitors to the web site to change the content. As an interactive web-based bulletin board system, in the hands of the right community, a wiki can develop phenomenal collections of knowledge and wisdom. An entire community can capture its knowledge and wisdom on a web site! Cunningham & Cunningham are the two C’s in the web domain. This wiki has tons of material on programming, Extreme Programming, links to great sites on patterns, wiki software and many other topics.

Unit Testing

Testing modules is nothing new, and the term Unit Testing has been around for many years as a description of testing individual modules. Unit Testing, as used in XP involves a framework that can support test each or all units. The key with XP is that you write the tests first, then the code. In the process of writing the tests, you discover all the “What if…” cases rather than when you are writing code. When you have completed developing your modules and it passes your unit tests, you integrate your tests into the main testing matrix, and then integrate your code into the main code stream. By having a machine set aside to do this integration, you can immediately test then you can use all tests to verify your code didn’t break something else

Crystal Clear

New Tools

New Techniques

Putting It All Together

Read The Fine Manuals

Be One With The Fox

When you choose to ride the tiger,
you must go where the tiger goes

Get A Support Group

Sharpen The Saw

Top Ten Mistakes

  1. It ran fine on my system!

  2. It worked great with ten records!

  3. I could write that in a week!

  4. We’re just converting an existing system – two weeks, maybe four weeks, max!

  5. Our situation is unique…

Top Ten Mistakes

  1. We don’t have time to document it now…

  2. I know how the system should work…

  3. Upper management has no idea what we do.

  4. But, what if….

  5. Those who fail to learn from the past…

… will be past by those of us who have!