Sunday, November 9, 2008

In love with my code

A problem I've been having for a long time is the fact that I "fall in love" with my code. I consider myself as an artist and my code as my art, the problem arises when I'm choosing a path based upon the code I'm going to write, usualy I find a certain technology more appealing to me and I use it but sometimes the time to finish that piece of code will be longer then it would if I had picked another "less sexy" technology. As I grew up and matured I looked back to the times I made choices which today looks like a complete waste of time, I don't regret these choices because I learned new technologies which I wouldn't learn otherwise.

As an army programmer and as a programmer working as an employee in another company which I was after my army service was over - making such "mistakes" doesn't cost you money, now that I own my own company these mistakes do cost money and avoiding them is a must.

I have many conversations with my friend: Zak Dechovich the founder and CEO of Reimage (http://www.reimage.com/) about marketing and time to market, as an ex programmer he understand where I'm comming from because he experienced it first hand in marketing his "XP repair" product. In a conversation we had a month ago I told him that I have a product that is 70% ready that can filter traffic based on keywords, he asked whether I can release something to the market right now? I told him that I can take the redirecting platform (http://www.komodia.com/index.php?page=redirector.html) and start to market this version within a week, and so I did, that was a good advise on this part and a wise decision on mine.

Today I made another decision, I have core functionality of an "SSL" hijacker which allows me to inspect and modify encrypted SSL data without alerting the browser, however the communication module I wrote which is based on shared memory and named pipes is too slow for me and it reaches a stage that it is so complex that finishing it would take three months. I sat down to see what are my alternatives and found a solution that would enable me to release it in two to three weeks, a good solution that will be more stable then my original one, it's a little "less sexy" but as the artists of the past, I need to walk the fine line between doing my art and pleasing my patron, my patron is the "bottom line" :)

I'm happy I'm able to make such decisions because using a simpler and cleaner technologies means a more stable product, which is easier to understand and maintain. My friend Zak quotes civilization IV: "A product is perfect when you can no longer remove features from it".

Barak

No comments: