Negotiation is an adversarial game played between humans. Therefore there can't be any simple advice except to get better at the things that make you more competitive at negotiation itself. Instead of subscribing to basic rules like, "never give the first number!", put yourself in a position of being well networked, well informed and experienced. Then you can decide how to negotiate well on the fly according to the context. You will probably earn vastly more by focusing on those areas than you will by diligently following simple rules of thumb.
For example: I received an offer from Stripe and got them to add a $100k sign on bonus to it even though I previously gave the first number. Which party gives the first number doesn't matter.