When was the last time you thought hard about something for…
These are tremendously valuable moments if you get to have them at all.
When was the last time you felt confident about trying to do something you’ve never done before? And what do you think it takes to become confident doing something you’ve never done before?
The step before, “Go do it.” is an important step and we don’t spend enough time and energy on it. We are definitely suffering in quality because we don’t spend enough time on Analysis and Design.
To simplify — Analysis and Design is about identifying the problem and accessing our proposed solution in terms of whether or not it solves our problem.
We should be solving problems. We should not be building features. There’s no guarantee that the sum of features is going to solve anyone’s problem. Or that they aren’t going to introduce new problems. Programming is about solving problems, not building a list of features.
Avoiding problems != solving them.
Solving problems require understanding, recognizing, and stating them.
Problem solving is a Skill. Book recommendation: How to Solve It
Humans get good at what they practice. If you practice problem solving, you will get good at it.
How To Solve Problems
The first step is to state the problem. Say it somehow. Out loud in conversation or write it down.
Next, understand the problem. What do you know?
What don’t you know?
Are there related problems? Go find some other solutions to similar problems. Looking at other solutions to similar problems is a great way to get up to speed on a problem and start working ahead of the best known solutions in the space. Because, what you have to do is just an incremental step above what the last guy did instead of starting from scratch.
Write it all down.
Find the problems in your solutions. Solve those too.
Look for the tradeoffs.
Write these down too.
You can’t connect things you don’t know about. Get a lot of different inputs
Read in and around your space.
Look critically at other solutions.
Everyone says design is about tradeoffs but, you need to look at at least 2 possible solutions and you have to find out the good and bad things about those things before you can say, I made a trade off.
You might want to write that down!
On the hammock, no one knows you’re not sleeping.
The computer is a prime source of distraction.
You can’t do everything, you will drop things — calling people back, and things like that. You should communicate to people that you care about about this process. Let loved ones know you are going to be ‘gone.’
The process involves 2 parts of your mind.
Waking Mind and Background Mind
Good at critical thinking. Extremely analytical and good at tactics.
Looking at the short term decisions, look at what’s right in front of you and make a decision based on that.
Prone to finding local maxima.
Use the waking mind to assign tasks to your background mind. Think hard about something and create work for you background mind. Also use it to analyze things that the background mind came up with
It’s good at
Solver of most non-trivial problems. Unfortunately you can only feed it, not direct it.
When we’re sleeping, we’re processing the information we have learned during the day.
Sleep makes memories stronger, and it even appears to weed out irrelevant details and background information so that only the important pieces remain.
Most importantly, it finds hidden relations and solves problems we’re working on while awake.
You have to work hard, thinking about a problem during the day, so it becomes an agenda item when you’re asleep.
Loading It Up
Our mind has a 7 +/- 2 limit
Write the proposed solutions down — with pictures maybe.
Go over and over it, in different orders. No more input, now just use recall.
Hammock time is important thinking time.
Wait for it
At least overnight, sober
Sometimes, it takes months. It just does. One way to get around that is to work on more than 1 thing — not within one day, but over the course of time.
Switch when stuck
Wake up Working
Eureka! You solved a hard problem.
If you have the answer to something else, at least capture it.
Eventually, coding is required.
Type sparingly, and with confidence
Feedback loop is important but, don’t lean on it. “Test Driven Dentistry” is a bad idea.
You Will Be Wrong
You will think of better ideas.
Also, the facts change. When the facts change, do it over again. And don’t apologize.
Do not be afraid of being wrong.