What separates a principle from a best practice (if anything)?
The practice will usually be specific and concrete where examples from the article would include source control, unit testing, continuous integration, and other ideas that while the concept may be abstract, there are specific tools that could be used to demonstrate this is being used. For example, Subversion can be used for source control, nUnit for unit testing, Cruise Control.Net for continuous integration.
A principle on the other hand, would be more nebulous and thus not as tangible. The Agile Manifesto that lists these four ideas:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Thus, while one can take a specific example and look at whether these are being applied, there isn't quite the tool to pull out to show, "Hey, we have working software over comprehensive documentation because we use X!" whereas the practices I noted above have tools that could be a litmus test.
How can you distinguish between the two, and how can you determine
when it's appropriate to ignore either?
To my mind it is a level of detail. How specific does one want to get in applying an idea? At a high level there are principles and at a lower level there are practices.
As for when it is appropriate to ignore either, this is where you have to look on a case by case basis. For example, if I'm writing a script that will be used to generate some test data that I'll probably use once, is it really worthwhile for me to spend hours planning it, building unit tests and applying a lot of extra overhead when what I could do is spend the half hour writing the script, run it and then commit my data when I'm done. This focuses a bit more on practices as those are easier to see where it is worth applying things since sometimes on small things, it may not be worthwhile to set up various practices that would be useful in other environments. Principles can be a bit harder to give a specific example.
How to Win Friends and Influence People is referenced in the article as having principles and here is something to consider in taking the ways to win people to your way of thinking:
Twelve Ways to Win People to Your Way of Thinking
- The only way to get the best of an argument is to avoid it.
- Show respect for the other person's opinions. Never say "You're Wrong."
- If you're wrong, admit it quickly and emphatically.
- Begin in a friendly way.
- Start with questions to which the other person will answer yes.
- Let the other person do a great deal of the talking.
- Let the other person feel the idea is his or hers.
- Try honestly to see things from the other person's point of view.
- Be sympathetic with the other person's ideas and desires.
- Appeal to the nobler motives.
- Dramatize your ideas.
- Throw down a challenge.
While this is a good list, it is worth noting that some ideas here can be a bit conflicting. For example, is there a friendly way to throw down a challenge? Perhaps there are friendlier ways but in trying to get someone to rise to a challenge there is something to be said for getting the person to stretch themselves. There is another set of ideas in the book that may be worth reviewing here too:
Be a Leader: How to Change People Without Giving Offense or Arousing
- Begin with praise and honest appreciation.
- Call attention to people's mistakes indirectly.
- Talk about your own mistakes before criticizing the other person.
- Ask questions instead of giving direct orders.
- Let the other person save face.
- Praise every improvement.
- Give the other person a fine reputation to live up to.
- Use encouragement. Make the fault seem easy to correct.
- Make the other person happy about doing what you suggest.
Notice how some of these are similar. Number 7, "Give the other person a fine reputation to live up to," is similar to number 12 in the first list, "Throw down a challenge," which may demonstrate a principle about how most people have an inner fighting instinct that can be used at times. Similarly, notice how the number 3 of each list is about admitting one's mistakes that may be about a principle around humility.