Uncategorized

Getting over the “not invented here” mentality

I’ve gotta be honest: for a long, long time, I was a Do It Yourself kind of guy. Not the, like, installing a new toilet in the bathroom or putting up sheetrock kind of DIY; I was the kind of DIY where, when I built a website, every component I used had to be written by me. There were a few reasons for it, not the least of which were my own hubris, and fear of the learning curve when acquiring ninja skills with new software.

Thankfully, I’m better now. I still like to write things that already exist elsewhere, just for the experience, but I leave the mission critical stuff to people who make it their jobs to write software libraries. In learning to bite the bullet (or RTFM, as the case may be), I’ve made a few discoveries. If you’re a DIY person too, then pay attention: this is for you. Here are a few reasons to leave behind the mentality that says “If I [or my company] didn’t write it, it’s not worth using”:

1. You’re in the business of writing application logic, not software libraries

Unless it’s you are actually getting paid to write an ORM or a logger or a request dispatcher or whatever, or unless you have the free time on your schedule and the passion to write one of those in your spare time, then you’re wasting your time. I said “time” three times in one sentence, because that’s pretty much what it amounts to. Every minute you spend writing a half-baked authentication system or what-have-you is a minute you could be spending developing features. You know, features? The things that will (hopefully) actually make you money? No? Oh well. That brings me to my second point…

2. Yours probably sucks

No offense, man. I’m sure that you’re a coding wizard and everything, but you are most likely working under deadline, just like the rest of us. The client or your boss or the devil or whomever you answer to for your productivity has expectations. Remember those features we talked about in the first point? That’s what they want to see, and you know it. They don’t really care about the user authentication system you wrote (“big deal, every site has one of those”), or the logger you so cleverly scripted that will shoot you an email every time someone farts too loud and the server goes down for the fifth time today. They want to see features, the cool flashy stuff that they can wow their golf buddies with.

The point of that outburst was that, because the people in charge of signing your pay checks want to see cool features, you don’t have the time you need to spend on writing stuff that’s not mission critical if you’re rolling your own. Check out this Stack Overflow post called “The Definitive Guide to Forms based Website Authentication.” It currently has eight sections, just about the best practices for providing users a way to log in to your website (extra credit if you read through it and figure out how many points your banking institution’s website is violating). Do you really have all that time to burn making sure you get it right, when you really need to be finishing up the feature that lets the CEO simultaneously turn this month’s sales numbers into a PDF and email it out to all those golf buddies we were talking about earlier so he can brag about profit margins all the way through the back nine? Didn’t think so.

3. Knowledge is power

Unless you’re absolutely, positively, deliriously happy with your job (and maybe even then), you’re probably not going to be at the same place for the rest of your life. Things happen. And having skills in industry-standard technology (whether it’s a framework, a collection of libraries, or whatever) looks a lot better on a resume than vague references to a bunch of projects that you’re too ashamed to showcase because you spent all your time and energy in the wrong places.

I could keep going, but those are the Big Ones. That’s not to say that there’s never a time or a place where writing your own solution is a good idea, but at least take it into consideration.

6 thoughts on “Getting over the “not invented here” mentality

  1. You forgot “Someone else has probably already solved this problem”
    When I look for libraries, I try to look for open source or industry standard libraries that have withstood scrutiny and testing in the field.
    If I’m going to purchase a library, I investigate the track record of the publisher: how long they’ve been in business, how satisfied their customers have been, how often they tend to publish updates, and what their customer support looks like.

    1. I’d hoped that was the tone of the article, but I guess it does bear mentioning explicitly. In the realm of free and open-source software (which PHP usually, but not always, is), I find that the most popular libraries usually got that way BECAUSE they were worth using, which saves a lot of legwork in looking for stuff that Just Works. And then I use that. It’s a great little system, really.

Leave a Reply