This is a brilliant question Shantanu.
I have seen this done in various ways. Not commenting on which is an ideal way, that depends on your org context.
Tech (for performance):
1. Features delivered (Epics & Stories on Jira and Bugs for QC teams) - this measures volumes of output
2. Quality of features delivered - this is very nuanced as it takes into account the quality of the code. If you write code which needs multiple QCs, then ideally, you are not doing a good job! [this is tough to measure - have seen products who help do this]
Product (for performance)
1. Did the product deliver the outcome it was supposed to? Eg, increase DAU by 5% through feature X.
2. Product feature delivery - this will discount business outcomes and just focus on delivering the product (exercise caution here as it may lead to a corba head problem situation)
Blended, works well for PODs - PMs and Enginners who work together - did the Team/POD deliver the outcome? Measure against the KPI.
For feedback - I have seen Great success when you get feedback immediately after you launch a feature. Ideal to get feedback from everyone who worked to deliver this feature. Note -> in this case, get feedback on the "how they did what they did", ie, competencies exhibited in their work.