Saturday, March 23, 2013

Build it the wrong way first

Like I've said before, learning as an activity that blocks coding is annoying.  I want to Get Things Done, not browse unanswered Stack questions trying to figure out why your API returns an error.  I've also noticed as we continue working on that there are plenty of times where a library might come in handy (templating, for instance) but a vanilla implementation just works for now.

I'm sure we will eventually see the light and move to a proper system.  Until then, what we have works.  The crazy thing is, I think that this is the right way to do it because we learn the basics.  Writing a faux template system may lead to difficulties as we expand, but at that point we can move to an established player.  Until then, we're learning more about the language we use, instead of yet another API.

So try and build something, and fail.  Think of it like ablative shielding.  The purpose is not to make something brilliant out of the gate, it's to help the craft as a whole arrive in one piece.

A word of warning: don't do this with anything involving security.  Rule #1: don't roll your own crypto.


  1. First of all, congrats on releasing. I don't know if you have released right now or you had released it earlier, but this is the first time I am seeing this.

    I love the way you think about using (or not using) others' APIs, and the way it relates to one's learning of a language.

    In addition to not trying something like cryptography or security in general, I would also like to point out that one should not (normally) play in domains they do not possess knowledge in, unless the purpose of playing is to learn the domain itself.

  2. Man oh man am I seeing the "difficulties as we expand" in my own startup. I rolled my own ORM to begin with, and it doesn't handle many-to-many in any sort of elegant fashion. Looking into learning Zend to compensate (and re-write a layer below my own ORM).

    It's definitely a good way to learn, though. Awesome post.