Enemy of Good Thinking – Confusion

The big enemy of good thinking is confusion.

Unfortunately, the more active the mind, the greater the risk of confusion

From Edward De Bono in “Six Frames – For Thinking About Information”

Notes and quotes from the Chapter – Introduction:

  • The aim of all good thinking is clarity
  • Clarity is no good if it is at the expense of comprehensiveness
  • The main cause of confusion is trying to do everything at once

When you are trying to start a new venture, how do you get clarity? There are lots of thoughts and ideas buzzing around in your mind. Every time you talk to some one about your idea, you may get even more ideas.

You are told that you start with a problem that people have. But the reason you want to do your startup is because you firmly believe that your idea can make a difference to the world. You don’t know how, but you are convinced that you can make things better.

How do you get clarity?

There are lots of startup questions, you may be asking yourself.

  • Should I bootstrap or get funded?
  • If I decide to bootstrap, how much money do I need before I start generating income?
  • If I go the funding route, what do I need to do to get funded?
  • How do I validate my idea?
  • How do I pick one out of many ideas?
  • If I can serve different types of customers, how do I choose one? Is that a good thing to do? Should I go after a couple of different types just to hedge my bets?
  • Should I start with a team? How do I pay them?
  • How do I attract people to join me and work with me for no pay till we start generating revenue?
  • Should I start a service company or product company?
  • If I am techie, should I learn marketing/sales before I start?
  • If I am a marketing/sales guy, should I get a tech co-founder?
  • If I need to get a tech co-founder, how do I go about finding one?
  • Is it a good idea to start a business with my friends? If not, why not?
  • I am passionate about helping X. How do I find out whether it is a good business idea?

These are just a fraction of the questions people have before they start a company. How do you go from this mind fog to clarity? What are the first few steps?

Solve the meta-problem

I keep getting links to cool articles, blogs and essays. Sometimes I just mark them to read later. Some times I just dive in, sample them a bit. What excites me, may not excite you. But if you are in the software industry and share some of my interests, you may just want to take a look.

My sources of essays are links on Digg, doggdotus, slashdot, reddit. There is a bit of overlap there (doggdotus is an aggregator of digg, slashdot and del.icio.us). Here is an essay that got me started for the day.

How To: Be More Productive

Aaron is accomplished. Long before I read anything he wrote, I knew him for his software contributions. He describes himself as an Activist, Writer and Hacker. I knew about reddit and web.py and his contributions to semantic web and Python communities. I recently started reading his Raw Thought

This blog post is a gem. Like many other posts of his, it makes you reflect. If you are a software developer/software entrepreneur you can relate to this essay . For me, there is one thing that stands out more than anything else:

Another way to make things more fun is to solve the meta-problem. Instead of building a web application, try building a web application framework with this as the example app. Not only will the task be more enjoyable, but the result will probably be more useful.

Yeah. That is what it is all about. If you are a software developer, you can be an order of magnitude more productive, if you can take the approach of solving a meta problem. Some times this method of solving produces a tool. Some times it produces a design pattern or a framework. But almost, always, it produces one of the most elegant, reusable solutions.

Here are a few meta problems and the solutions that software pioneers invented. Some times they are so beautiful, you are sit in amazement at the mind that created them.

  • Parse different formats – Build a way to describe a parser and build a parser-generator (lex/yacc)
  • Find a way to describe a database – Recursive use of the concept of relationship to describe themselves. The metadata in an RDB are just tables like any other (with some special privileges)
  • You need a way to build different markups – Build a makup meta language (like XML)
  • You need to describe a set of resources and relationships and make statements about them – Create RDF/RDFS

Need I say more?