When I was 22, I found myself working for an Internet company that IPO’d to 4 billion dollars of value. It seems like eons ago. I was fortunate enough to get myself into a niche that allowed me to be the manager/software engineer of one of their greatest cash cows – search. I didn’t get all the information on the back-end deals, but I want to say that a company paid $8 million dollars to put a custom ad on our site for a year. It took me all of 5 minutes. I was hooked on the Internet.
One of the great benefits of being a manager was that people treated with respect and I was invited into meeting with the big-wigs. Typically, I hate meetings. It seems like 99% of the time, they waste time and nothing gets accomplished. It was one of these meetings where an executive uttered something so simple and profound that it still echos in my head today… “Perfect is the enemy of good.” I can’t remember if anything came out of that meeting, but those six words were profound.
For those who have read yesterday’s post, I left a little cliff-hanger about why I had done nothing towards my new business venture in 2 months. The problem was simply that I was trying to be too perfect, getting everything right on the first try. The biggest case of this was choose Java for a development language. It’s great and I work with it every day at work, but it can be tedious and repetitive to do everything the right way. The last two months, I had been postponing it because doing something repetitive is just not interesting or challenging to me.
I was talking with a friend the other day and he suggested that I look into the Python programming language. He says that he can build things in 100 lines that can take 2000 in Java. I argued that Java is so much more efficient than Python and that neither one of us could name a company that bases it’s stuff on Python. His response was that processor time is cheap and it’s getting cheaper every day, while developer’s time is expensive. I couldn’t argue, he was 100% correct.
He then showed me an example of what Python could do and I was floored by the functionality he squeezed out of 100 lines. For those in the software industry, they were readable lines too. I looked at this new-to-me language and complete grasped each step of what he did. I’m starting to learn the language and developing my game at the same time. One would think this would be difficult, but I’ve already completed 50% of two major parts to the baseball game – creating players, and simulating an at bat. It took me about 4 hours last Saturday. There’s a ton of stuff left and I’m betting that it’s over 200 hours to get the basics of what I want in there, but it’s exciting.
So if you take one lesson away from this site on entrepreneurism, remember this, “Perfect is the enemy of good.”
I am big believer in the 80/20 rule… Similar…
I don’t think I agree with you choice of python in the long run, but if you are teh only coder then maintainability might not be a problem as you will have written all the code.
Yahoo’s retailer/shopping engine uses Python.
I’m going through this right now with my moonlighting efforts. It’s a tough line to walk because you wonder if it’s going to be good enough if it’s not perfect by your own standards. So the question is: What is good enough?
Incidentally, what company did you work for? (if you don’t mind sharing).
MossySF: Thanks, I’m a fairly surprised by that decision. I’m sure there are plenty more examples out there, we just couldn’t think of much off the top of our heads.
Fin_indie: I’m taking the evolutionary approach. The first version may not be very compelling at all because it’s trivially simple with few features. For a baseball simulation game, I might not include in-game substitutions, pinch-hitting, pinch-running and things like that. In a perfect game features such as these would be in there. For a beta release, I’m just looking for the basics.
As for the company I worked for, I purposely left that out. ;-)
Yahoo’s shopping engine was produced by a few programmers in a garage and after they continually beat the competition, Yahoo bought them up.
> neither one of us could name a company that bases it’s stuff on Python.
Google uses python extensively. See: this article
Yeah I think Developer cycles (especially at the point in your business life) are way more important than CPU cycles, although I’m starting to drink the Agile RoR kool-aid lately.
I never read this the first time around. It sounds incredibly interesting. I remember when I was a kid I wished there was a game that you could play Jose Canseco, Mark McGwire, and Roger Clemens against Mickey Mantle, Willie Mays, and Warren Spahn. Of course, I didn’t know much about steroids then…
Maybe that can figure into your new version? ;)