Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> Objective – Increase Customer Retention

> Key Result #1 – Lifetime Customer value increase from $N to $N+5

> Key Result #2 – Decrease Customer Churn Rate by 10%

I'm a developer on a team. How am I supposed to know why customers are churning? I'm three levels removed from talking to customers when they cancel. I don't have a deep relationship to know how to add value to them.

Someone needs to do the research, analysis, and leg work of finding potential areas to exploit. And then someone needs to have at least some amount of vision or inspiration about how to solve that problem. Or do whatever trendy new "design sprint feedback loop" brainstorming session someone is tweeting about. This is the kind of stuff I hear designers and "product people" talking about wanting to do.

If you want to do that work and then loop in the engineering team to talk about feasibility and planning that seems fine, but the last time I worked in an environment with OKR no one seemed to have any brilliant ideas about how to, you know, actually achieve the Key Results.

(Until these questions can be satisfactorily answered to developers, OKRs are going to be perceived as a buzzword, flavor of the month process air-dropped in because someone saw a blog post about it)



I believe it should work like this

- Board to CTO : Increase Retention (decrease churn)

- CTO to DevLeads: * Build a daily report emailed to the board showing 30 day moving average of churn

* Build a business event log - every time a user does something on the system log it to a easily queryable system (customer signs in, customer raises invoice or customer deletes widget) This can get very deep very fast. Start with Graphite / carbon and get more sophisticated later.

* hire a data scientist / convert DBA into one and find correlations between customers who churn and events in the log. Not logged in for 30 days looks like a good start.

* Write split testing into the (SaaS) app such that we can randomly segment customers at risk of churning (indicates by event activity) and see if we can keep them

* also add in "have you tried this feature emails", or "holy crap what do you mean the invoice page does not align right anymore"

All of these things (for a SaaS app) are doable projects for any development team.

This is of course based on the idea that the Board has told the CTO "fix this thing as top priority". If they have not that's their problem. The CTO should then go to the board and say "I am going to fix this thing as top priority"

Then we start the fun job of actually monitoring what developers do work on compared to what we planned to work on. Most times priorities chnage, legacy weighs us down and friction burns is.


Or you could just fix all the bugs that are upsetting customers and causing them to flee.

I've been in the situation where the metrics were used at a detailed level. Net Promotor Score (NPS) was used by the company and I tried, somewhat successfully, somewhat unsuccessfully to use OKRs at the team level. I agree with everything that has been said in using these to set the overall the direction and strategy at a high/medium level but down on the front lines it's very hard to do anything that will move the needle in the right direction in a clear cause and effect way.

If you try and map tasks to strategic goal then you just up window-dressing everything to keep management happy and since the components of goal X are many any varied your chances of success are limited.


> If you try and map tasks to strategic goal then you just up window-dressing everything

If you don't understand how your daily work is related to management's priorities then probability is high that you are going to do a lot of work that isn't valuable to the organization.

So, either it should be a trivial exercise to rationalize how a task is related to the objective, in which case this is nothing more than a small overhead of working in an organization. Or if you find you have to make leaps of faith to make the connection to the objective then that's a signal that you need to consider why the task needs to be done at all.


>>> fix all the bugs that are upsetting customers and causing them to flee.

Well yes. I am just posting that it is possible to take a top level metric and build a backlog that represents sensible solutions to that metric.

But you first need

- a top level metric (preferably that measures what will make or break your business) - a way to determine what things under your control drive that metric.

But yes, the things you do in the trenches will probably not move the needle far. That is for two reasons

- at some point the code base is so big that doing "one thing" won't make impact (i think this is around the 100k SLOC) level which is still fairly small

- and even if you can affect the whole code base, the code is at the bottom of an inverted pyramid of "leverage to affect the business" - the CEO can chnage the business far far more be deciding to triple the price tomorrow than any bugs you fix.

But yes - in the end, if you have a working product right now the best thing to do is to go find real customers, work out why they are upset (either with clever telemetry analysis or just fricking ask) and go fix that bug / missing feature.

If you don't have a working product there is no telemetry so ... fricking ask.

But find what's not working and fix it is a good plan. If what's not working however is "the business model" we are in interesting territory

I think a non working business model is exactly the purview of software. I think that we shall replace all non-coding business people with coders who can business in a generation. But that this generation will see real opportunities


> How am I supposed to know why customers are churning? I'm three levels removed from talking to customers when they cancel.

I'm always amused by where one job ends and another begins. It seems strange to me that every web software company in the world is looking for "full stack engineers" -- you need to be an expert at everything from CPU instructions up to the CSS3 color module and its implementation in the browsers that our users are using -- but doing research and analysis of user behavior is off-limits. That's where we're drawing the line?


It comes down to allocating resources. If your developers are tasked with doing research on churn what are your product/ customer success people doing? Obviously depends on the size of the team on the product.


Because we're too expensive to waste on something another employee could do. The bitter irony is we're so expensive largely because being siloed leads to wasted effort and rework.


Yeah, this wasn't at all what I thought it would be about, which is the difficulty (impossibility?) of measuring developer impact against key results.

When you're a salesperson, you don't have to agonize over how to illustrate that you've "Decreased Customer Churn Rate by 10%". When you're an assembly line worker, you don't have to find a way to figure out how you contributed to "produce 15% more widgets". You either accomplish these things or you don't - they are literally descriptions of your performance in your job. Either way, nobody cares how you did (or didn't) do it.

When you're a developer, how are you supposed to show that you've helped "increase customer value from $N to $N+5"? Because "shipped the new version of the message queuing system" is not in anyone's list of key results.

OKRs feel like "organized SMART goals", and so I have the same criticism of them as I do of SMART goals: they're just another way of conceptualizing goals around things that are already easily and directly measured. No one has made any progress in quantifying the contributions of roles that don't have direct percentage impacts on dollars earned or dollars saved.


If that's what your OKRs look like as a developer, then your company is doing them very wrong. They're supposed to be hierarchical, becoming more concrete as you go down the line. Your examples sound like top-level OKRs; mine are usually something like "internationalize feature x, launch in Y locales" or "Implement feature Z, measure effect on meric A".

Which is not to say the OKR system doesn't still have issues, they just look more like the ones discussed in the OP.


Yeah, if that's how it supposed to work, then I've not been anywhere that does it right. We're always working ones like what I mentioned in the post.


Yep, this would be good feedback up the chain. People above you should be working on breaking the company level goals into team and role specific ones.

Edit: just to note that I have some other criticisms of OKRs, but having them be way too high level, broad, and not actionable should not be the problem.


Please share your criticism. I would be happy to get as much perspective on the topic as possible.

The problem I encountered was having, or the notion of wanting, a product roadmap which is produced from stakeholder, C-level, product- and IT team input parallel to OKRs. I feel this is an anti pattern. You have OKRs and they make your quarterly roadmap or you don't apply OKRs at all to the producing team.


That would be nice. My intuition is that this doesn't happen because the person in the hierarchy who translates "improve customer value by x%" into "internationalize feature x, launch in Y locales" is effectively taking responsibility for showing that the latter impacts the former, which is the problem I find to be intractable.


If you’re not making some effort to measure the value and impact of what you’re doing, then how do you know if it was the right thing to allocate your effort on? Presumably the new message queueing system had some effect on customer experience or developer velocity - can you try to measure that?

It doesn’t have to be perfect, but most teams would have a lot more impact if they spent some of their time getting at least very rough estimates of the impact of their current and future projects.


As a concrete example here you should be able to translate a new queueing system into something that has business impact.

Maybe the new system requires 75% of the servers the previous one did, leading to increased revenue. Maybe it’s quicker, resulting in customers experiencing better service, and so churn is reduced from the pool of people who said “I like it, but it’s too slow”.

A queueing system in itself isn’t of any value to the business as a whole.


Yes, but at some point there's serious diminishing returns on having every layer of the organization forced to rationalize their behavior this way.

If you're an average developer at a non-startup you've likely been asked to put together a queuing system. You didn't decide to do that work, and you probably shouldn't be spending weeks trying to gather the information you might need to justify that work.

Your job wasn't to figure out 13.2% of your customers opt out of your paid reporting services because they experience slow responses and unrecorded data.

Your job is usually much closer to -

PM - Can we make this service faster? We're losing customers on this feature because it's slow.

TeamLead - Probably, we can re-implement our queuing to be quicker and more reliable.

Dev - Ok, I'll investigate [x] queuing library or service

Then you should be spending your limited time and energy on actually producing that result. The technical task is usually quite complicated (ex: here's just the table of contents for RabbitMQ https://www.rabbitmq.com/documentation.html).

The justification for the work wasn't your job to put together (although asking sane questions is usually a good call). Your justification was simply "My PM/TeamLead asked me for it".

----

I sure as hell don't want every junior dev on my team going out and trying to tease out the intrinsic business value of every task I give them.

That's a waste of my resources. That doubles up the effort that I already expect my PM to be doing. That leads to disagreements about priorities when those junior devs don't have the context about why a business decision was made and either infer it incorrectly, or spend lots of time asking when it really just doesn't impact them all that much.


OKRs are normally set at the team level and above. IMO individual OKRs are an anti-pattern, unless you’re using them for individual development goals (complete this training, etc.)

Determining the business value of your team’s various goals should be your PM’s responsibility, with input and help from your team.

In your example interaction, the only missing piece is a more specific impact estimate. Rather than “We’re losing customers on this feature because it’s slow.”, you’d want your PM to say “If this feature was X% faster, we estimate that it would reduce churn by Y% per quarter, which is worth approximately $Z/quarter to the business.” Your team can then estimate eng cost to make that improvement, and see where the benefit/cost ratio falls relative to the other things you can be working on.


> I'm a developer on a team. How am I supposed to know why customers are churning? I'm three levels removed from talking to customers when they cancel. I don't have a deep relationship to know how to add value to them.

I hope no one is expecting every individual developer to know the numbers on churn, but I do think it's important that someone on the eng team would know that number. In my experience, some combination of the product manager and the tech lead for the team should have some insight into how the changes the engineers are making affects the customer.


If churn is a priority from leadership (and it should be, for any decent sized product), I would expect everyone to understand the factors that play in. You need all your engineers to understand the strategic goals, they are often the best positioned to suggest ideas for fixing them (or can prioritize fixes that are higher impact to priority areas).


And then you have to do the hard thing, which is listen to the engineers (which is why most business folks are fine with keeping the siloing as is.)


A lot of engineers talk about how business people should listen to engineers.

A lot fewer engineers talk about how they like to listen to business people.


Well, if they dont they get fired :) and I dont like to talk about the business doing things, just working this weekend because they didnt listen for the last six months.


Engineers think (sometimes incorrectly) they could do the job of the business people, in a pinch. Business people know they can't do what an engineer does. This dynamic contributes to why business people respect engineering on engineering decisions, and why engineers don't respect business people on business decisions.


I love listening to my engineers. They usually know how to solve something faster and more elegantly then I do.

But I'm someone who will learn enough Node/React/python to understand what can, and can't, be done.


“I'm a developer on a team. How am I supposed to know why customers are churning?”

OKRs are designed to exist in levels, “trickling down” in a way that narrows them down more and more as they reach specific teams and individuals[0].

A goal such as “Increase customer retention” could be a legitimate higher-level objective. From key results on that objective, we get objectives for specific teams working on various aspects of the product.

(For example, “Reduce churn rate by X” likely isn’t going to be just about engineering; copywriters and others may be involved. Down the line at some point there may be an engineer’s personal key result such as “launch customer feedback collection system by X date”, or something else specific to circumstances.)

I believe that wholeheartedly adopting OKRs in this multi-level fashion is helpful even to companies with a just a few employees, and how objectives and results are translated across levels is a good measure of management health overall.

[0] Rick Klau talks about it in “How Google set goals” https://youtu.be/mJB83EZtAjc?t=1951 (2013)


To be honest, I've rarely seen this work well outside of Google.

Part of it is how the goals are translated. A business outcome trickles down to a specific technical one -- and a specific team and person -- which on the face of it makes sense, but it's surprising how often pursing that that derived outcome totally loses sight of the big picture.

It's similarly hard to map backwards, which can lead to a lot of the company feeling "mission accomplished", when the objective was still a total miss. That's a painful disconnect to have happen.


That’s a huge problem with the whole idea of providing value to the business. Some people can show real metrics but a lot of us are several layers away from anything quantifiable so either you have nothing to show or you have to make up some bullshit metric as I often see in resumes.


Slightly off, but the whole "business value" in IT resumes is proper a US thing. Cross the border and you're good with just mentioning what you did, sans the (often imaginary) "impact".


> I'm a developer on a team. How am I supposed to know why customers are churning?

One approach is to keep in touch with customers and find out what their pain points are. Everyone should be interacting with customers to some extent. This could entail helping out with some support requests (escalations), or joining customer calls, going to conferences, etc. Listen silently to sales calls, or support calls with important customers - or be a named and introduced participant. If you have a mailing list or forums, keep tabs on that and help people. You can usually get an intuitive sense of what’s important to customers by interacting with them.

Sure, maybe it’s “not your job” to do these things, but a bit of time spent more than pays off in insight most of the time. If this is difficult to arrange, then the next best thing is to talk to the people who themselves speak to customers, and listen to what they have to say.

This isn’t a replacement for surveys and analysis, but I find it useful to have my own intuition as a human based on interacting with other humans.

It’s also good to be a customer or user of your own product. I strive to be in the position to use the things that I’m working on first-hand myself. If your product has an involved onboarding or setup process, then ideally everyone on the team should have gone through that setup themselves personally.

Most of the product design vision that I’ve developed for products I’ve worked on has come from a studied understanding of the customer problem and interaction with real customers. I think the best way to stay customer-obsessed is to ensure you’re interacting with customers, or are one yourself.


Also what's the point of arbitrary numbers like "10%" and "+5"?

You should obviously increase lifetime customer value to the optimal value (after accounting the cost of increasing it) and likewise for churn rate.


I think OKRs are intended to mitigate the lack of customer awareness exhibited in this post. If you’re having that hard of a time linking your efforts to your paying customers, that sounds like a problem.


I once worked somewhere that had in-house customer service, and they gave developers the opportunity to spend a couple of days every few months working with a representative to respond to tickets and other first-line support stuff.

It was very valuable. It turns out that listening to people is a good way to figure out what they are frustrated with and what they want to see. Who'da guessed?


If you are a good developer you understand the customer a little.

You are the first line of defense against things that seemed like a good idea, until they are implemented. You should pay attention to what you are building, once in a while (not every developer will have this happen) you will see something and go to your boss with a "stop, look at this, it we should cut our losses now because it is bad for the metrics".

You as an engineer know what is possible. I've seen several projects go from ideas that management/marketing thinks are too difficult so they don't bring it up to the top must have feature when an engineer who understands the customer sits down and writes it in a couple days thus making them realize their idea was actually easy if only they had asked.


Aside from transparency and common goal, the most beneficial side of OKRs is to allow any individual to ask "does what I'm currently doing move us closer to the KRs?" and "is this the most important thing that I can do to contribute to the KRs?"


Inspired by * I will elaborate a bit on what I think would be an OKR-approach for that. It could be a goal like "How am I supposed to know why customers are churning?". Then your key results would be, not the metric that says "Working on that", but the metric that helps you with answering the question in a way that proves or solves the puzzle ideally. There are many things that are solvable and for these the OKR recommends "Committed OKRs" while for things that are unclear there is the "aspirational OKRs".

Say, for the above: KR A being test the hypothesis for churning using XYZ analysis method and KR B bring peer review that with specialist named Klopvital, Tartirius and Mochalatet. Then, once you improved an answer, I would think you have achieved a partial goal - and if that is data to someone else then it comes the choreography of things.

. . .

The whole reason of a system of goals is to have one work and what OKR helps relates to accountability - what is a measure that validates the goal. Of course, the complexity comes when one goal system is chained with the other - the orchestration.

Your case "Someone needs to do the research, analysis, and leg work of finding potential areas to exploit." partially opens the door to it for the idea of Committed OKR (the kind of OKRs that one can do, solvable).

On your point "And then someone needs to have at least some amount of vision or inspiration about how to solve that problem." this seems to be about the idea of Aspirational OKR. In this regard, I agree that many things in the entrepreneurial outset starts with a north and not a precise thing. Certainly OKR is not a system to work on requirements - do it and that is that. The OKR approach is influenced by short feedback reviews for goals — that is derived or inspired by Andy Grove insights about MBO vs feedback vs planning that goes on like a) point to a roadmap b) work on it with a temporary plan in an accountable transparent way c) review the plan and review the roadmap.

But I hear your strong statement that "but the last time I worked in an environment with OKR no one seemed to have any brilliant ideas about how to, you know, actually achieve the Key Results." and would love to talk with you to understand more your experience. From the book I read I came upon cases that some of the success cases too years to fix their OKR system.

* Some of the ideas here I was inspired by the Measure What Matters book by John Doerr. But of course it's my limited interpretation.


> How am I supposed to know why customers are churning? I'm three levels removed from talking to customers when they cancel. I don't have a deep relationship to know how to add value to them.

Most design decisions you make as a developer affect the value users get from your product, and therefore the churn rate. Sure you can get more useful data by talking to customers, and you should seek it out. But even lacking that, it's up to you to put yourself in the place of a user and make the most practical decisions available for their benefit that your powers of intuition allow. You don't get to say, I don't have the best possible data for that choice therefore it's not my problem. It's still your problem.


I think there's a dual problem here.

First, a developer putting themselves in the place of a user still may not be able to see all of the issues with their product because they are (not sure how to put this better) "too close to the work". It relates to something we talk about here on HN every now and then, namely that "technical people" often miss things that are hard for others because they just can't fathom that x thing that's easy for me could be hard for someone.

Second, I think that, in a lot of places, management makes it super hard for developers to get any data on problems other than general, abstract numbers with zero specifics included. I seems quite unreasonable to expect a developer who is being stonewalled on data or access to users by another business area to work with "our overall churn rate is x%, fix it" and actually figure out what's wrong and what needs improving.


It's the right attitude in spirit. But like how am I supposed to know how to decrease no-show rates at a clinic? How can I figure out how to increase harvest yields from autonomous tractors? Convert more enterprise sales accounts?

I know that the answer is: spend lots of time talking to customers, doing research, empathizing, etc. But then who is going to write the code while I'm doing all of that? It needs to get done, but I'm not sure why that is the job of the "development team".


One thing with OKRs is that the key results are supposed to be in your control and responsibility. You don't have control over the no-show rate, but someone has responsibility to improve that as part of their own role. If that has made it to your team, then something is probably broken. Most likely that no-show rate is part of an OKR for clinic managers or someone else. They'll come up with ideas (or consult with you for ideas) and your team is responsible for implementing the improvement or running experiments to see if it actually achieves the desired improvement.

That means your OKR will have to do with responsiveness to your customer or addressing the things your customer believes are associated with the poor no-show rate. Is your "patient reminder" system broken and failing to contact patients? Do you lack such a system? That's something you can address and control, so the OKR will have to do with that (server uptime, quality of service, features of the service, timeliness of changes to the service).


But you can potentially help the no show rate.

- Send an email to the person 2 days before their appointment

- Text them the morning of their appointment

- Build something into the CRM of the front desk that reminds them to call people the day before an appointment

- send a pre-generated google directions result to the patient N minutes before the appointment

I could go on for hours here. The job of a developer, at least in the startup world, is to understand the objective of their team and contribute to figuring out ways to reach their objective. It is not just to code up tickets that are put in front of them.


Interesting that this often doesn’t go both ways, in startup culture. I mean in terms of the non technical team members picking up enough technical skill to better understand the technical side.


I guess?

But I, as an engineer, don't know accounting, or how to setup a healthcare plan, or the intricacies of VC funding documents, etc. Thinking about how people use what you are building and how to make it better seems like table stakes for engineers in the startup world.

Thinking about the product and users is the job of engineers. So is coding a solution. And so is not coding a solution when there is a better option.

I guess if you get to a later stage startup, where you are working on very specific technical problems, you might be forgiven if you don't know what it means to the larger organization, but I can't imagine working in that environment and being happy. A fancy algorithm is cool I guess, but if I don't know how it's moving the business forward it's basically meaningless to me.

YMMV


Those are system requirements and are not what you do with OKRs.


Are they?

I would imagine the Objective is something like "Maximize the number of people we can help at our clinic". And a key result would be "The number of no-shows for appointments is below 5%".

It then follows that the product development teams (product and engineers) would get together and say something like "Great, we can think up 14 projects that might help us reduce the number of no shows. Here they are in order of easiest and/or highest likelihood to succeed to hardest and/or least likely to succeed".

How else would you use OKRs?


You build a mental model of the domain that guides the code you write. Often it amounts to "what would I want in that user's position?" aka the golden rule. As uninformed as that model may be it's better than none, and a place to start iterating on the model. In design it's usually better to be wrong than vague or random. And every line of code you write embeds a freight load of design choices, often as durable as concrete.


"Most design decisions you make as a developer affect the value users get from your product, and therefore the churn rate."

Yes but probably not in a way that matters.

Churn will be decided by a few small, hopefully well targeted issues (including price and switching cost) and so it's really Product Marketing/Managements job. The Eng. should be to meet the expectations of Product.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: