I ask my team on a daily basis to solve problems. We solve problems by putting code into our apps. The more I do this, the more I realized we all approach and solve problems differently: some try to fix things as quickly as we can; some contemplate on the problem for a while before acting. Do it too quick without thinking and you get inferior code; do it too slow with too much thinking and you might never get any code.
It’s about putting ideas into action – what I call Conceptualization. There’s a balance in learning to keep looking versus give up thinking/searching and do it. It is an art.
Sometimes I find myself talking to myself, “I have no idea what I’m doing.” That means I don’t have a plan, I just improvising as I do. This usually happen when I cook.
At work, I used to have these four words posted as a big sign in the meeting room:
Analyze
Plan
Implement
Review
It reminds us that there are these four phases to solving a problem. Knowing the four phases not only help us organize, they also remind us we should move on from one phase to another. It also doesn’t just stop at Review, because we’d start over if we have enough time to revisit the same problem.
Am I spending too much time analyzing/planning/implementing/reviewing? If any of these phases are taking too much time, it means we have not put enough time in the other phases. There is an imbalance.
Someone once told me I take too much time to analyze. My response: we are always stuck during implementation. During implementation we often find what we built doesn’t actually solve the problem, so we have to rejig the plan and improvise. Our problem is that we didn’t spend enough time and effort analyzing the initial problem.
Why don’t we spend enough time and effort analyzing? Most of the time it’s because we aren’t experienced enough to foresee problems with our designs. Other times, we are just lazy. Sometimes, it’s both.
Over-simplification of the initial problem is a common culprit. “Think of the edge cases,” I would remind my team. “Now you have the sunny day scenario, start understand the rainy days.”
Not simplifying the design can also be a culprit. Simplifying user experience is a difficult task. Making the complicated simple is an art. At the end of our analysis, is what we have too complicated? As Charles Mingus famously said, ““Making the simple complicated is commonplace; making the complicated simple, awesomely simple, that’s creativity.”
Someone once told me that the Agile methodology is to be fast and nimble. He’s implying that there’s no time to analyze. But just because you can “fail fast, fail often”, it doesn’t mean you have to fail many times to get something right, if you can just do it right the first time!
How do you get your ideas to action? Do you get your designs implemented smoothly, or usually aren’t very smooth? I would like to know your thoughts.