In my opinion, the most important principle is the reduction of complexity by creation of good abstractions.
This includes
- understanding the problem to be solved,
- designing an appropriate solution for it and
- implementing it,
- preferably in a way that keeps the code understandable and maintainable,