Notes on seeking wisdom and crafting software

Don't look for existing solutions

During the shower, you had an awesome idea, what if you know; I could just speak out code instead of typing ;)

With all the world's information a click away, you immediately type away the keywords. Since you're awesome and have done this for half decade now, within minutes you find a couple of research papers and an implementation on Github. Next task: grok through the papers, download and try out the implementation. Well, the papers lead to more papers (it's a tree, the dependency hell we all have come across :P). The tool may create value for you, feature requests, bugs and patches for the implementation.

So far so good. Couple of days later, you have a good understanding of the method proposed in the paper. You have a rough idea of the pros/cons. *Only of that particular method or implementation*. Unconsciously your world is now limited to that particular process. Or god forbid, you probably gave up the idea based on (your premature understanding of) someone else's judgement.

The unfair part - you didn't give your grey matter a chance at solving the vanilla problem. You robbed yourself of the pleasure of creative process. And who knows, the world lost a significant breakthrough because you were biased :-/

Don't look at existing implementations!

At least until you understand the problem deeply (to reach there, you need to scratch your head enough to have potential solutions ;)) and the challenges surrounding it. This will help evaluate existing solutions with greater clarity. You will know what separates your proposed thought/solution from other solutions. You will develop your thought, contribute to other implementation. World will be a better place. Even if you may end up with something which somebody else already did, the awesomeness of creating that is always yours :)