Note: as I’m currently evaluating and interviewing for product manager opportunities, I’m publishing many answers to the product, behavioral, business, and life questions I’m researching/practicing publicly rather than keep them private in a Google doc.
What do you do when you need to solve a complex technical problem?
The first step is to fully understand the technical problem you’re facing.
In Horizon’s case, the largest technical challenge we have is that for users with many friends, friends of friends, and groups on Horizon — the calculations for “counts” are extremely slow because they are checking every single user against their “visibility” field. Those calculations are being done on the fly, rather than loaded from a cache / pre-calculated results table. Further, the app totally crashes if more than 3 or 4 people use it at the exact same time.
In order to understand the issue, I spoke to all those with technical expertise and knowledge of the codebase. Gathered multiple perspectives, documented those viewpoints in a Google doc, and then compared among several engineers. To dig into the issue further, we looked at data — specifically, API response times and error rates.
Once I have all the information needed to understand the technical problem, potential solutions, complexity of those solutions, and time required to implement — then I weigh priorities, resources, long term vs short term customer impact, as well as financial costs.
Finally, a decision is made — and then communicate that decision to everyone working on the project.
PS: We actually haven’t yet solved Horizon’s problem of simultaneous users and server timeouts (for users with many connections). That said, we have a very good idea of what the exact technical issue is, and a plan in place to re-write all the APIs powering our iOS and Android apps.