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.