HACKER Q&A
📣 dmos62

How do you solve big, complex problems?


My process is to:

- put all the problems/insights/concerns (that I am aware of) in front of me;

- stare at them until I have a broad-strokes solution;

- then, refine the broad strokes solution, and see if it still works;

- keep doing that until I feel like the only thing left to do is to implement the solution.

I find that the "stare at it until I see how to solve it" part tends to be very slow and incompatible with collaboration.

How to approach problem-solving better? Any recommendations? Books?


  👤 zenbryo Accepted Answer ✓
Saw a great link here on HN recently with different tricks for decisions making or problem solving: https://untools.co/

Also if its about personal problems that involves your own values or considerations, I would suggest the WOOP method. Read "rethink positive thinking"; its a slow read but important to fully understand the purpose.


👤 fuzzfactor
I think you've got a good approach, and realistically collaboration can be accomplished after you reach a stopping point, with other individuals having their own diverse approaches too.

There's something to be said about mindless increases in observation and familiarity even when focused mindful action is fairly urgent.

Either way you will often come to the same conclusions but if not, the relatively mindless session will sometimes yield ideas that you could not come up with any other way.

>How do you solve big, complex problems?

The most direct thing I try to do is have straightforward simplifying solutions that are no more complex than necessary. And that will lead to further simplification if possible.

Looking at all the variables at once may make things seem unsurmountable, but there is no other way to get the big picture even when nobody will ever fully understand it at first glance.

Edit: this is basically what AI is supposed to do, come up with worthwhile conclusions by just staring at the data. If you're also a living breathing subject matter expert and you do this in parallel that should be even better.


👤 lostdog
The "break it down" approach is good,but sometimes it does take too long. What I have seen work is to just start implementing a partial solution that struggles with some of the corner cases. Your team is no longer stalled waiting for you to finish, and can jump ahead to other problems while you stick with continuing to look for the full solution. Plus, seeing a suboptimal solution in action can help make the best solution pop out andlook obvious.

👤 disadvantage
I take a stoic approach. Everything has to be in line with natural law, otherwise what you create is an abomination. To give an example: if I'm not physically or mentally capable of programming, I won't do it. Some people just do it anyway regardless of circumstance, but end up creating buggy half-baked pieces of crap, and deem their work a masterpiece, but when peer reviewed, it's not all that great. It also won't stand the test of time, since it's code that is high maintenance and subject to tech debt. So get yourself right and everything else will follow.

👤 thorin
Generally by hacking them into smaller, less complicated problems. Note, I didn't say microservices!

👤 PaulHoule
See Livingston’s Have Fun At Work and Friends in High Places.

👤 ElevenLathe
Very carefully.