visit
I am strongly biased in favor of developmental goals for software engineers. The reason is that I find that most engineers are highly motivated to grow and are also intrinsically motivated to perform in their roles and are just fine without “the boss” telling them how to perform. In fact, after working with cca. 200 engineers, I’m yet to find a single one who doesn’t want to perform well in their job.
Helping your engineers with good growth goals and coaching/mentorship can add a lot of value for them, though. It helps them focus since there are always just too many things to learn next, it helps them feel they’re progressing, it helps with the alignment with the company’s expectations of their career – which is ideally what the market wants already – and last but not least it makes them feel they’re at the right company. I find that growth opportunities are just as important to engineers as an exciting product to work on, great colleagues, good company culture, and of course, fair compensation. I had engineers leave solely because they felt they’re not growing anymore.There are some rate situations in which performance goals do make sense. One I can think of is when there’s already a gap between your expectations and the engineer’s performance. Closing that gap might require very narrow, outcome-focused goals, but note that this should only be temporary (until closing the gap or deciding to part ways). An example for a place for performance goals is a PiP (Personal Improvement Plan).I’d also like to have an argument against ‘by default’ performance goals. Setting performance goals will feel like micromanagement and mistrust for your engineers. General expectations should be set by the levelling system you hopefully have in place, your company and team culture, and your shared values. If none of these inspire and define good performance, then you have a problem there. Setting individual or team performance goals is a band-aid solution.
Your HR department might try to push your goal setting agenda towards performance goals for your engineers for multiple reasons:OKRs
The best way to describe this framework is with this ‘formula’:I will (Objective) as measured by (this set of Key Results).You start out with high level Objectives which might be hard or impossible to measure by themselves then you come up with multiple Key Results. Key Results are like milestones but they don’t align on a linear timeline necessarily. They might or might not build/depend on each other.Objectives are memorable qualitative descriptions of what you want to achieve. Objectives should be short, inspirational, and engaging. An Objective should motivate and challenge the individual.Key Results are a set of metrics/milestones that measure your progress towards the Objective. By definition the success of each key result needs to be easy do decide. It’s also OK not to achieve all of the key results! There’s usually not a 1-1 mapping between objectives and a set of key results.Let’s see an example: you want to get better at programming in Go. An idea for an objective would be “I want to get confident at Go programming”. A set of potential Key Results for goal setting could be:
KPIs
This is not a goal setting method! This is just a way to structure measuring things, usually performance, usually on the company/departmental level. E.g. for engineering you could have some of these KPI candidates: number of deployments per day, MTTR (Mean Time To Recovery), Cycle time. On a company level some examples are burn rate, profit margin, NPS (Net Promoter Score).
The most important thing about KPIs is which differentiates them from any other metric/indicator is that they measure the most important aspects of performance. You can have many supporting metrics but KPIs should be few and represent the performanceIn a developmental goal scenario, KPIs sometimes come in handy, mostly for making sure we focus on the real important things and not some vanity metrics. KPI targets are nice Key Result candidates sometimes. Such an example would be an engineer who wants to improve in code quality identifying e.g. mean pull request back-and-forth cycles as a KPI and then setting a target for it as a Key Result.SMART goalsThis is another framework that can be combined with others for goal setting. This talks about how an ideal goal should look like:Make sure they have enough actual support for achieving their goals, such as time and mentorship during working hours!
I hope this article was useful for some of you out there, most things are trivial here, no great revelations but I sure could have used it a few years back 🙂Previously published at