Look at what they have done previously. If you hire a coder: Look at the quality of their code and the problems they have solved. Then figure out exactly what they will do in your company. And make an agreement what that might be worth, considering the quality of their previously work.
For me it takes less then five minutes of reading someone's code for me to decide if I want to hire them or not. I also already know what I need and what that will be worth.
You can repeat this every year or six month because of the constantly changing requirements of what needs to be done. And then it will be even easier, as you have access of everything the employee has done.
To keep them: Constantly give them attention when they do something good, like solving a problem, suitable for their skill level and competence. Remember that you can praise different ppl for different things. You will get away praising junior developers for doing things at their level while at the same time praising senior developers for solving serious hard problems.
Remember that praising, celebrating and thanking people do not cost any money!!
Some people just want to come to work and do exactly what they have done the last ten years, while others get bored if they do not face any challenges. The later category will need management, but they will also be valuable as they will be able to adapt to changes and advance your company.
For those that want to, let them go to conferences and learn new stuff. The stuff they learn will add value to your company.
Identify every individual's skill and good traits, then take advantage of them!
Never, ever fire anyone unless there is a very serious problem, like stealing or fist fighting.
Do not allow ass kissing, bullying or politics in general. Encourage a professional attitude, but keep in mind that "everything is personal", so try to be fair.
It's only when people feel safe and at ease they can go outside their comfort zones and achieve great things!