5 ms·
Anybody knows how to solve that third meta skill, of "solving hard problems"?
by petra 9y ago
Anybody knows how to solve that third meta skill, of "solving hard problems"?
- drdrey 9y agoSome tools that can help: * break the hard problem into smaller problems (e.g. "make a car that drives itself" would really benefit from considering smaller components) * reframe the problem. Sometimes changing the perspective on a problem lets you leverage tools or techniques from related fields. For instance, there isn't much good literature on techniques for understanding obfuscated programs, much of it gets bogged down in low-level details and has a very short shelf life. But there is one field that has a lot of good literature on understanding and transforming programs: compilers. Realizing that was transformative in my own research. * go bottom-up: are there special cases that are easier to solve than the whole? Can you generalize from there? * go top-down: pretend that you could use some off-the-shelf components that would automagically solve parts of the problem. See if you can compose them into something that looks like a solution, then see how to implement them.
- smaddox 9y agoGreat response! Reframing the problem is an especially important and well-known technique in applied mathematics and physics. And the others can arguably be generalized into "solve the easiest part first". If the easiest part is at the bottom, start at the bottom; if it's at the top, start at the top. Keep solving the easiest part remaining until there's nothing left to solve. This inherently requires breaking the problem into achievable sub problems.
- todd8 9y agoFirst, keep solving problems. Mathematical brainteasers got me started problem solving when I was in grade school. I really like Martin Gardner's books[1] and those by Robert Smullyan[2]. These kinds of problems develop the flexibility of thought that helps find creative solutions. Actual, specific approaches to tackling tough problems are taught by the famous Hungarian mathematician George Polya in his classic book How to Solve It [3]. Discrete Mathematics is a field that covers a number of areas, but especially in counting problems (from combinatorics) and graph theory there are a number of results that are not hard to grasp but lead to beautiful solutions for real problems. There are many powerful theorems and principles in discrete math that will unlock seemingly impossible problems. Unfortunately, the books for this subject are mostly written for math majors that are interested not only the application of these results but how to prove them and consequently the books may not appeal to everyone. Perhaps something like Schaum's Outline of Discrete Mathematics would suitably cover the way to apply some of the important theorems without bogging down in the proofs. Finally, I think there is value in doing small interesting programming projects. Two older books, available used, with interesting projects are Etudes for Programmers by Wetherell [5] and Software Tools in Pascal by Kernighan and Plauger [6]. Etudes has my favorite exercise for trying out new programming languages, building an interpreter for the simple TRAC programming language; Software Tools has a number of programs in Pascal that do interesting things, try implementing the programs in your programming language--they cover a range of difficulties and the book has a nice discussion for each that explains why the programs are structured the way they are. A more advanced book, Structure and Interpretation of Programming Languages, available as a downloadable pdf [7] is a classic book for those wanting to become better programmers. [1] https://www.amazon.com/Martin-Gardner/e/B000AP8X8G/ref=sr_tc_2_0?qid=1514351370&sr=1-2-ent https://www.amazon.com/Martin-Gardner/e/B000AP8X8G/ref=sr_tc... [2] https://www.amazon.com/Raymond-M.-Smullyan/e/B000AQ1NF0/ref=sr_tc_2_0?qid=1514347266&sr=1-2-ent https://www.amazon.com/Raymond-M.-Smullyan/e/B000AQ1NF0/ref=... [3] https://www.amazon.com/How-Solve-Mathematical-Princeton-Science/dp/069116407X/ref=sr_1_1?s=books&ie=UTF8&qid=1514347695&sr=1-1&keywords=how+to+solve+it https://www.amazon.com/How-Solve-Mathematical-Princeton-Scie... [4] https://www.amazon.com/Schaums-Outline-Discrete-Mathematics-Revised/dp/0071615865/ref=cm_cr_arp_d_product_top?ie=UTF8 https://www.amazon.com/Schaums-Outline-Discrete-Mathematics-... [5] https://www.amazon.com/Etudes-Programmers-Charles-Wetherell/dp/0132918072/ref=sr_1_1?s=books&ie=UTF8&qid=1514350387&sr=1-1&keywords=programming+etudes https://www.amazon.com/Etudes-Programmers-Charles-Wetherell/... [6] https://www.amazon.com/Software-Tools-Pascal-Brian-Kernighan/dp/0201103427/ref=sr_1_1?s=books&ie=UTF8&qid=1514350254&sr=1-1&keywords=Software+tools+in+pascal https://www.amazon.com/Software-Tools-Pascal-Brian-Kernighan... [7] http://web.mit.edu/alexmv/6.037/sicp.pdf http://web.mit.edu/alexmv/6.037/sicp.pdf
- gspetr 9y agoThank you for this list, greatly appreciated.
- raldu 9y agoCome up with the worst, most ridiculous and outrageous approaches possible for solving the problem and turn those "bad" ideas into "good" ones. Beyond the straightforward approaches of chunking the problem to sub-problems or what have you, which you will apply anyway, sometimes a little brainstorming can surprisingly help you with that "spark."
- stevenwoo 9y agoIf you haven't read it, this is a short book that explains a methodology is applicable to a range of problems outside of the author's expertise in mathematics. https://en.wikipedia.org/wiki/How_to_Solve_It https://en.wikipedia.org/wiki/How_to_Solve_It
- ak39 9y agoI walk away for a while. This helps me in 2 ways: 1) it helps answer if the problem is worth solving in the bigger picture 2) it allows me to approach the problem differently. (A new approach compared to head banging against walls)