Yesterday I came across a quote from George Patton (via), which stuck me as really insightful, but later something burned the quote directly into my brain.
“A good plan, violently executed now, is better than a perfect plan next week.”
It's a quote which rings quite similar to the commonly-said open source phrase, coined by Eric S. Raymond in his article The Cathedral and the Bazaar.
"Release early. Release often."
The thing which burned these ideas into my brain is the discovery of djangoplugables.com. Simply put: this is an excellent site, which follows the ideas that I mentioned above completely. The premise behind it is essentially to list all of the available django reusable applications on google code, and to display a bit of information about each app.
A group of about 5 people, including myself, have been silently working on a very similar site for the past month or so (the bulk of our work took place during PyCon), but we utterly failed to follow the above sentiment. We debated for hours over how users would be able to submit applications, claim them, and how we could ensure that those claims were accurate. We had tagging, voting, comments, voting ON comments, graphs detailing how "hot" each application was (based on a frequency analysis of the votes over time), and OpenID integration.
But all of this functionality took time, and we implemented it behind closed doors, in a vacuum--without ever seriously focusing on the user interface. I don't know yet what will become of all of our work, but I have a feeling that it will be discontinued in favor of the much better-looking and simpler djangoplugables.com. Maybe we'll see parts of it resurface again, but that's not really the message behind this post. The real message to take away from this experience is that we should practice what we so often preach. In the case of web development, execute the good plan now and iterate, versus trying to perfect everything before release.
The upside of all of this is that our goal has been achieved. What we really wanted to accomplish is what now exists: an excellent resource for finding reusable django applications, and no matter who implements it, that's a win for everyone!
All Content


Hear Hear! I can't tell you how many times I've had that "killer idea", but either took too long or didn't start on it... then someone rode it to a few million dollars. It makes me sad to be a procrastinator. Viva RERO!
I tend to do reasonably well at that philosophy when it comes to software, though I don't do so well on the "often" part. For some reason, though, I'm terrible about it when it comes to releasing sites. I've got a few things that I've been working on for ages, and I do keep waiting for them to be "perfect" before I release them. Or, worse yet, I wait for them to be perfectly planned before I even start coding.
That's my problem too. I code it all up but am unwilling to release it until I feel like it's perfect. That's something that I'll have to address sooner rather than later.
Great article, Eric. Although this is indeed painful I'm also looking forward to see some of the functions in djangoplugables.com. Bryan signalized the chance to incorporate our code so it's not written without cause. It should not be abandoned, IMO.
Eric, you've just summed up many projects perfectly.
I've got so many minor projects underway right now, there is a good chance none will see the light of day this side of the apocalypse. If I were to tone down what I _think_ is important, and focus on the more simplistic functions that do a complex task beautifully, launch would be so much closer and so much more exciting.
I was working on a Django application repository but abandoned it as your project was much more complete, much more usable, and made mine look like mush. That said, what you are offering and what Pluggables is offering is different IMO. You're offering a detailed index of applications, with user interactivity. Pluggables seems to be more of a no-crap listing that shows projects, their recent activity, and a summary. For anything else you follow the link to the Google Code page.
Perhaps both websites can co-exist, each serving a slightly different need without either of them being over-done.
eric, once we stop learning we stop living, (deep stuff I know). All your hard work on your project should be seen as a few additional levels of knowledge not gone to waste, and the hard learned lesson of competitive ideas is a lesson better to learn now.
like you said before - you gotta love open source. maybe the best part about this - it never hurts to throw the code up on google code and maybe help a developer learn something new by combing through your work, and it appears there's even a chance for code reuse on this new pluggables app.
win win indeed.
I said: Let us release right now, even if not everything works, even if there are certain use-cases we currently can't support.
"Let it roll", I said.
But goal was achieved, even if it wasn't the way I expected the problem to be solved. Maybe something interesting to read in addition to Patton:
http://gettingreal.37signals.com/toc.php