Who should say a number/percentage of a raise?
In the end it's the manager who decides, but ideally both sides are content with the result. So, as a manager you should do your homework and have an idea how much you think is reasonable.
You need to do your homework because some employees underestimate their own performance, and others overestimate it. But you also need an open mind to hear about the things they contributed that you didn't realize.
You should also do your homework with regards to market rates for the sort of job your employee is doing. You should know if they're earning more or less than typical. If your employee is doing good work and you want to keep them in the company, you don't want to fall too far below.
Should the employee present a progress or set some goals to achieve or is it a work of the manager?
It could be either, but for a good result, you need to work together to agree on good goals. Good goals should meet SMART criteria:
- Specific: is it clear what the goals are?
- Measurable: can you measure to what degree the goals were reached?
- Acceptable: are they worth achieving? Is achieving the goals good for your company? Are they acceptable to you and to the employee?
- Realistic: is is realistic that they can be achieved? Does the employee possess the skills, time, resources, authority to achieve them?
- Time-bounded: when should they be achieved?
Getting good goals requires an open discussion between you and the employee where you outline what would be valuable goals to you and the employee talks about what resources etc. they'd need to achieve them.
Should a company set some timelines for the raises (once a year or something similar)?
Yes, and it's good to be clear about that to the employees. You don't want people getting unhappy and thinking about leaving because they don't know if they have any prospects for growth in your company.
One of the main reasons for good employees to leave is because they feel "forgotten": they think the only way to increase their salary is to get another job.
This can be especially common in IT, where a lot of skilled people are also averse to the "confrontation" of themselves going and asking for a raise. But just because they haven't asked for one, doesn't mean they don't want one, so they become receptive to the sing-song of recruiters promising more elsewhere.
Is it worth to have grades system with some levels (junior, middle, senior etc.) and public rates which will be clear for all employees?
A system of grades and approximate salaries can be good. Especially if you also make it clear what is expected of people trying to advance to a higher grade. (Defining those criteria also helps you advance people on time, rather than them leaving for better growth prospects because you're too slow.)
Whether you want to publish what the ranges for those positions actually are is a whole other matter. You might worry that publishing the range for a position gives you a disadvantage in salary negotiation internally, or gives away information to business competitors. On the other hand, clearly defined responsibilities and rewards can help reduce ethnic or gender bias in salary. It can be good for morale if your employees feel that the salary structure is fair and based on merit.
Publishing individual earnings (rather than position ranges) should probably be avoided, since it's sensitive private information.