A long time ago I was given a bit of advice that has served me well over the years. An engineer with much more experience than I had at the time made the simple statement that "your company doesn't love you". What he was trying to say was there's only one person you can really count on to look out for your best interests and that's you. Over the years, I've refined that simple statement into a philosophy which has helped me make some small amount of sense of how engineering companies work.
1) Never trust head hunters. These paid recruiters have a list of jobs to fill. They'll always try to steer you towards their least attractive positions since those are the hardest to fill. The rare "dream jobs" require almost no work to sell. Recruiters will lie to you about lots of things, including what contracting rate is equivalent to a given full time salary. If you do decide to work with a head hunter, make sure you tell them you want to be informed before they submit you on any job. That will help prevent misunderstandings where you apply to a company only to find out the head hunter has also submitted you. This is especially important if you ever decide to work with multiple head hunters at the same time. Being submitted by several agencies may lead to disputes about which should get paid if you want to accept the job. Companies don't like dealing with that sort of ambiguity and may decide against hiring you altogether to avoid the potential conflict.
2) Rarely trust Human Resources. Their job is to hire and retain workers at the lowest possible cost to the company. The best HR representatives will realize that if they can keep employees happy, the company will benefit in the long run. That's as rare as a car salesman who realizes that if he works with you to find the car that best meets your needs instead of one which offers him the best commission for the least amount of work, he might be rewarded with your return business and referrals. In my 30 years in the computer industry, I've met just two HR reps who I felt were true advocates for employee satisfaction and as a consequence might work to see I was treated fairly. That's not a terribly encouraging percentage.
It probably pays to do some negotiating when you're faced with a job offer. They're probably walking the tightrope of seeing how cheaply they can hire you without being too insulting. That's why they look for hints about how much you were making at your last job. You would think that a job has a specific worth to them which would be easy to calculate which would dictate what they'd offer you but you'd be wrong.
3) Salary increases are almost never fairly distributed. Companies tend to pick company wide target percentages for raises and those percentages tend to remain unchanged as they pass down the line though the executive staff is almost never restricted to such tiny percentages. So the person in the mailroom who has precious little impact on a company's bottom line may have the same target percentage raise as engineers working extra hours. What's frequently worse is when they create a raise pool by giving a first level manager this same target percentage for all the employees who report to him/her. A manager with an outstanding team of workers will either be forced to give the same percentage to everyone or worse yet, to attempt to steal from some employees to correct past salary inequities. Meanwhile there's no incentive for managers to return part of their pool should they have mostly average or below average employees working for them. Keep an eye on what you're worth to other companies in the industry and always make sure your salary measures up.
4) You're only as good as how well your last project or assignment was perceived. The minute you're not viewed as contributing to the bottom line well in excess of what it costs to keep you employed, you're no longer an asset to the company. That puts you at risk of making the list for the next lay-off. Sometimes this is exceptionally unfair because the perception may have been caused by you getting assigned to a project doomed to failure by factors outside your control. Keep an eye out for signs of project failure and explore transfers if things start looking bad. Always keep your resume up-to-date because we've already seen that HR cares more about the company's needs than yours.
5) Strive to give the company good value for their money. It's really your best hope of getting glowing referrals from your manager and co-workers. Part of this requires that you make sure they know how good a job you're doing. Suffering silently doesn't serve anyone except for a boss who isn't interested in trying to reward good workers.
6) Network with former co-workers. No job lasts forever so it pays to always be thinking about what you would do if circumstances were to suddenly change.
7) (courtesy of my friend Chard) A company never treats you any better than they do when they're trying to recruit/hire you. So if they're unresponsive, evasive, or misleading during the recruiting and interviewing process, you should see that as a preview of how things will be when/if you're hired.