Some programming principles I have been living by
Do it inside a module with a clearly described interface
No modules bigger than 150 lines or so. They should read like a chapter in a book
Prune data structures as much as possible at interfaces
Code is deployed with a realtime editor
Don't break the debugger
Stick to functions and literals. If you want to use a fancy control structure, it's fine, just do it behind a function with an understandable name and a clear interface
Address the widest possible market, and use whatever backwards technology you must to make it possible
Try to keep things imperative, even if you have to reorganize your functions so it reads well. Only use declarative interfaces where you truly need meta control, like composing things that can't just be concatenated, or optimising a pipeline