Just F-ing Do It

(I worked up this image a while back intending to write this post in response to something going on at the time, but I was lazy and never did it.  Seeing the image again prompted me to, well, just f-ing write it, so here it is.)

Often times, especially in the open source community, we all want to make a contribution by doing something that is, perhaps, outside of our area of expertise.  So we come up with an idea, investigate how to bring it to fruition, adjust our original designs as we learn, then finally share our contribution with others.

And then, all too often, someone chimes in to say that you shouldn’t be doing in the way you are doing it.  They’ll tell you either you should use a different design, or a different technology, or something.  In the Open Source community you often hear this if your solution uses any non-open source technology, be it survey monkey, twitter, etc.  Other times you’ll be told that you should use LibFoo instead of LibBar, or Ruby instead of PHP, or any number of other technologies the person has taken a specific interest in for one reason or another.  And you know what, those people just might be right, their solution might be better than yours.  If you’re out of your area of expertise, there’s a very good chance that their solution is better than yours.

But here’s the thing, if you already have something, and the people telling you to change it aren’t willing to help you change it, then just fucking do it, do it your way, even if it’s the wrong way.  Because in practically every case, doing it your way will be immensely better than doing nothing at all and, more often than not, doing it their won’t actually make it all that much better.

Remember that even though you’re volunteering your time, it still has value.  If someone wants you to hold off and re-do your solution, you need to consider how much value will be lost, both in terms of your time as well as the time the community will spend without any kind of solution, and then decide if the changes are actually worth the cost.

One last point to consider, whenever people start talking about the “best” solution, what they really mean is “the best solution I can think of”, which as history constantly informs us, is almost never actually the “best” solution possible.  In fact, the distance between their solution and the optimal solution is likely to dwarf the distance between their solution and yours.  So it’s not a question of a good solution vs. a bad solution, it’s a question of a good solution that exists vs. a slightly better solution that doesn’t.

This entry was posted in OpenSource, Programming and tagged , . Bookmark the permalink.

12 Responses to Just F-ing Do It

  1. g.. says:

    That’s what engineering is all about. We need a solution that works now. Not the “best” solution in a not-so-close future.

    /g..

  2. Nigel says:

    Iterations are good! I’m so doing the node.js solution I’ve been thinking of for the past few days. :)

  3. Martin Owens says:

    Minus perhaps political damage done by subscribing to a sub-optimal solution which has a radically different production model.

    Too many people have this naive view that Ubuntu has no politics, or that when it does, it should be removed. Our community is built on positive narratives, weaving an inviting tale about the effectiveness and honesty of free and open source development and that Ubuntu is not just good to use, it’s virtuous too. We hurt the community’s trustworthiness when we have to admit the failings of the system to provide for it’s own community’s function.

    So we maybe can’t do some things without ceding to using proprietary tools, but we can at least be courteous enough to admit it’s a real issue and accept the political damage it does.

    And then of course, get it done.

  4. Noone says:

    Collecting ideas from others is part of the brainstorming and investigation. Just because someone comes in to the conversation late doesn’t mean you should disregard them automatically. The “amount of time already spent” just becomes one more factor in your equation. We should always be searching for, and weighing, our options and their cost/benefits.

    This is what engineering actually is, not what “/g” claims. Proper engineering requires a closed loop system.

  5. Awesome post, Michael. I absolutely live by JFDI ;-)

  6. Just wanted to chime in and say this article could have been written better in Iambic Pentameter.

  7. Completely agree. We innovate best by just trying ideas using the tools we’re most familiar with. The first solution often isn’t the one that ends up being used but that’s not a problem. As you point out we’re not going to get that elusive optimal solution, but every thing we work on brings us closer.

  8. Oy vey! Gods be blest we’ve got not just a good post on pu, but an EXCELLENT one.

    YES YES YES and three times more times three or something to this post man. Too many persons simply don’t get that sometimes, we’ve got work to get done now. We won’t be waiting for them to decide to help next year.

  9. Pingback: Pick: Just f-ing DO it | mynethome.de

  10. Pingback: Charming Django with Naguine | Michael Hall's Blog

Comments are closed.