edit: I say this b/c of the state of hyper-focus one can maintain, whether for the better or not.
If I write code so that other people can use it I strive for coming out with the best API possible (for whatever definition of "best" makes sense for the project) if I write for experiment or fun I just want to get thing done and see if it works so I write in the most fastest way possible, if there is some change that I need to work again with the code I try to write it in the most maintainable way possible.
Simple means both easy to understand APIs, healthy internals and judicious use of abstractions (no overkill).
Producing a complex solution for a complex problem is by my standards mediocre engineering.
When you focus on simplicity everything follows (and your technical skills skyrocket because it requires to be extremely skilled to make things simple).
Simplicity and readability of my code, my tests, and the notes that accompany my code. That way someone (including my future self) can understand the system.
And writing tests first. I've become convinced that there are very very few cases when I can afford the luxury of not insisting on writing a test first.
Clear, clean (simple, compact, readable, etc, while still being correct and complete), elegant, efficient, well-formatted, properly separated and grouped, optimal (no unnecessary or premature optimizations), etc.