"A generalization that is accepted as true, and that may be used as a basis for reasoning or conduct." -- WordNet
In other words (now from ethics), a principle is a very general rule that one can use when deciding how to act in order to pursue some goal.
A principle is what initiates some action, while the action is executed to achieve or maintain some value, which is the end goal. Thus, a principle is the beginning, actions (practices) are the means, a value is the end.
Constantly assess whether one is stuck or making progress.
Unblock oneself; one has options.
Ensure stakeholders are aware of setbacks and progress. See how we communicate.
Be aware of the expectations of stakeholders about scope and time. Assess whether they can be achieved. Adjust expectations with stakeholders as needed.
Before getting started on any activity, clarify and validate your assumptions, and the assumptions of the stakeholders.
Assess whether one is trying to do too much at once. If so, divide work into milestones in order to conquer the results incrementally.
Assess how long some activity should take. Revisit its worthiness if taking too long. Limit time allocated to activity by reducing its scope.
Ask for help when stuck. Look for other solutions. Change goals or compromise if needed to unblock oneself.
Assess whether the current task is the most valuable action one should be executing right now.
Assess whether one is working on planned tasks, and if not, whether the task will contribute to delivering a release.
Make sure the acceptance tests have been defined before getting started on any implementation.
Analyse the problem. Understand architecture and design constraints of the solution. Find the critical path of implementation tasks.
Encapsulate the components that change often. Define clear, stable interfaces between the components. Remember that the team that writes the code needs to maintain it later.
Look into scope-cutting if that will help us maintain quality and schedule.
Break down work into small, easy-to-implement steps. Each tested step should build on top of the previous ones, allowing continuous progress.
Start testing; finish testing. Test-drive your implementation whenever possible. Consider the code "done" only after all the tests are passing on all environments.
Don't repeat yourself (DRY) when writing code or documentation, or even when designing the software.
Use the SOLID principles as a guide when designing and implementing software.
Some inspiring references for the principles above: