v0.1
This is a general-purpose problem-solving algorithm primarily designed for technical problems.
Before we get started, ask yourself the following questions.
- Have you ever found yourself stuck when faced with a problem, unsure of where to start or how to approach it?
- Do you believe problem-solving is a skill that can be learned and honed, or do you think some people are just naturally better at it?
- What challenges have you encountered when trying to teach someone else how to solve problems effectively, especially in a technical field?
- Can you recall a time when you successfully solved a problem by following a structured approach or pattern? Can you translate that success to other problems? Why or why not?
Hey there! So, I've put together this algorithm thing that's all about solving problems, especially in the tech world, but honestly, it can help with all sorts of stuff. It's like a roadmap for tackling issues, whether they're tech-related or not.
I came up with this during a workshop for new engineers who are eager to sharpen their problem-solving skills. The idea is to show them that problem-solving is a skill you can apply across the board, not just in coding or whatever.
Plus, it's great for experienced engineers who want to mentor the newbies but maybe don't have a structured way to do it. You know, those engineers who are awesome at fixing things but struggle to teach others how to do it.
And let's talk about schools for a sec. They teach us all sorts of stuff, but they don't really teach us how to problem-solve in a systematic way. It's like they're more interested in finding the natural-born problem-solvers instead of helping everyone become better at it. So, I put this together to level the playing field and help out those who need a bit more guidance in the problem-solving department.
The algorithm is written in pseudo code (primarily following the Ruby syntax). Please do not take the code at its face value. It won't execute, nor will it make perfect semantic sense. I just happen to find it to be the best vehicle to express ideas such as recursions, inheritance, and hierarchical structures. If you don't feel confident reading code, don't worry. I'm gonna walkthrough the code line by line. Explain in plain English. Elaborate the idea with examples.
- Overview
- The Problem-Solving Framework
- Identify Problem
- Build Solution
- Decompose
- Prioritize
- Test and Analyze
- Retrospect and Communicate
- Wrap Up
Here you can find the final code.
Along the workshop we will develop this pseudo code in an iterative manner, write it from scratch and growth it chapter by chapter. If you feel confident reading the code, feel free to go ahead and do so. If not, you can simply browse through the completed code without having to worry about understanding it.
Parts of this algorithm are inspired by a collection of related books and open courses. It's also recommended to read these books after learning this problem-solving algorithm to gain additional insights.
- Bulletproof Problem Solving: The One Skill That Changes Everything
- Object Oriented Programming in Java Specialization
- Problem Solving 101: A Simple Book for Smart People
- 一堂创业课
- Thinking, Fast and Slow
- The Pragmatic Programmer: From Journeyman to Master
- Code Complete: A Practical Handbook of Software Construction