Understand simple engineering patterns that deal with construction, structure, behaviour and asynchronous problems. Be familiar with the machine, memory alignment and how caching works.
Know your algorithms and understand computational costs. A crude understanding of big-O notation will help you a lot when you are dealing with large sets of data and need to be performant.
Know your floating point precision and know how to deal with large numbers.
Understand garbage collectors and where you might hurt them. Count your references and remember to clean up after yourself in the cases were you have no garbage collector.
Understand the software you are using and the APIs you have to use. Take note of recommended use and examples of use.
Don’t abuse language features just because you can.
Recognise where you are failing so that you push to improve.