Wednesday, June 23, 2004

Passion, Success, and the Bootstrapping Acorn

by Asim Jalis

1. While most highly successful people are passionate about what they do, it does not follow that everyone who is passionate about his work will be highly successful. Passion about one's field might be a necessary condition but not a sufficient condition for success. 2. How can you know that you will not enjoy or feel passionate for some activity without trying it out? For example, I don't enjoy programming, but I really enjoy test-driven development. But I could not have reached TDD without first subjecting myself to the unpleasantness of non-TDD programming and getting burned at it a few times. 3. I might not enjoy skiing as a beginner but I might enjoy it a lot when I become an expert. How can I predict if I will enjoy something as an expert? 4. I was speaking with a friend who owns a small copy shop. He asked me: How do you know you won't enjoy running a small copy shop. It is so different from anything you have experienced that you cannot know whether you will enjoy it or not without experiencing it. Imagining is not a substitute for experiencing. 5. An acorn essentially bootstraps itself into an oak tree. It's startup capital is the proteins stored in the acorn. It uses that to grow small roots and a small stalk. It then uses its small leaves and small roots to grow some more. At each stage it reinvests its capital into becoming bigger, which allows it to accumulate more capital (size). It's rather remarkable how small it starts. How can this metaphor be applied to a passion. 6. Let me elaborate on that. Suppose I am passionate about writing news. I am currently an acorn. How do I become an oak tree? How do I figure out a path that takes me from where I am now to where I want to be? What can I do to prevent stagnation? How do I look for opportunities for growth and how do I select from the opportunities that are open to me at any given time? 7. I was thinking of the importance of the biological metaphor during a personal programming exercise a few days ago. I was writing printf for Java (as a way to play with Eclipse). I had a complicated algorithm that was failing a test. Fixing it required rewriting it from scratch. So I spent some time thinking about a way to break "rewriting it from scratch" into small steps. Here is the solution. Keep the old algorithm and add the new algorithm before it as a preprocessing step. Initially the new algorithm does nothing. It runs an empty loop. This break no tests. Gradually the new algorithm does more and more work. Eventually it does everything and by the time the old algorithm gets the string all the replacements have already been made. At this point the old algorithm can be safely removed. There is a biological pattern here. Sometimes instead of trying to retrofit a poor solution into a better solution you just grow a new solution next to it that gradually makes the old solution redundant. For example, the umbilical cord does not evolve into a mouth -- it shrivels up as its work is taken over by other channels. 8. This might be a good way to refactor one's life in a particular direction. Keep the old and add a second parallel part that will eventually grow to replace the old. Create some redundancy for a while. 9. What other biological metaphors are there that might be useful? 10. In life-refactoring (refactoring of life), what is the equivalent of a test-list? In programming a test-list allows me to keep moving. As long as I can keep adding tests I have work to do, new things to learn about my problem and about my system. When the tests stop coming the system can stop growing. 11. Money is a special kind of asset or capital because it is the most measurable. Happiness, satisfaction, social capital, these are all great, except they can't be measured. 12. The connection between money and passion is important. If there is no money you might not be creating value for anyone else.