Comments Explain Why
Good comments explain: business rules ("Tax is calculated differently for EU customers due to VAT regulations"), workarounds ("Using setTimeout because the library has a race condition - see issue #123"), non-obvious decisions ("We use insertion sort here because n is always small and it's faster for nearly-sorted data"). Don't comment what is obvious from the code itself.