What’s with the obsession over building every component of their application themselves, nowadays? I can’t tell you how many times I’ve seen people building their own analytics service. It’s crazy! This problem, and many like it, has been solved a million times over.
Building every part of your application yourself is almost always a bad idea! It creates a maintenance nightmare, takes a ton of time, and your customers (or users) almost never care.
There’s a better way.
Unless what you’re working on is absolutely core to your product, don’t waste your time. There are awesome API services out there that solve almost every aspect of the development problems for you, in a much better way than you can do yourself.
With API-services like Twilio, Stripe, Sendgrid, and Stormpath, you can remove thousands of hours of development and maintenance. Gone. Forever.
By building your applications using API services — literally driving your development process by relying on third party APIs – you can dramatically speed up development AND improve your application’s quality!
Don’t Write Code, Destroy It
As a programmer myself, I love writing code. But as much as I love writing code, I love destroying code more.
DESTROYING CODE IS FUN. RAWR.
There’s no feeling quite as good as taking a few hundred lines of code and ripping them out of your codebase, right? It’s a great feeling because when you do that, it usually means you’ve either abstracted some messy problem away, removed redundancies, or found a clever way to get something done with much less code. Less maintenance, less worry, and generally fewer bugs! Let’s be honest here — most code that gets written is buggy in one way or another. So the less code there is, the less chance for bugs!
Less code also means that the next time you dive into your project to add a feature, or rewrite some application logic it’s going to be much easier — there’s a lot less to keep in your mind. Less is more.
The point I’m getting at here is this: by utilizing third party APIs, you greatly reduce the amount of code YOU have to write, making your life that much easier. Instead of spending however many hours building something that’s already been built before, you can focus on building the important, core aspects of your application.
You’re Not As Smart As You Think
Ok, you (specifically) might be. If you’re reading this article, you’re most likely a great developer. You obviously care about programming (or you wouldn’t be reading this), which already puts you into the top 1% of developers worldwide.
But again, the reality is that even if you’re a totally amazing programmer, you still write code with bugs. It’s unavoidable!
You’ll write code that runs fine for a while, but then crashes unexpectedly. You’ll write code that works, but is slow. You’ll write code that is incredibly efficient, but takes you months to perfect. And of course, you’ll write code that other people have already written a million times, just because you want to.
If you think about it — that really isn’t the best use of your time, is it?
BE HONEST WITH YOURSELF!
The best use of your time is to not reinvent the wheel with every project you work on. A much better use of your time would be building cool stuff that you love, and which (coincidentally) makes your users happy.
I guarantee you that instead of writing your own log aggregator, Loggly has already done a much better job than you could ever do (even if you spend 3 full years of your time working on it 24x7!). And although I’m biased, I highly doubt you could write a user management and authentication service as awesome as Stormpath, even if you had a ton of free time. But even if you did have the time, money, and expertise, you would still have to maintain, secure, and host those services yourself.
What it comes down to is this: for almost every problem you run into when building your app, a group of extremely smart and motivated individuals are currently building an amazing solution that you can easily drop in and trust. Their solution will not only be faster, cheaper, and more powerful than whatever you make yourself, but it will likely save you hundreds (if not thousands) of hours of work over the lifespan of your application.
If you have the opportunity to replace some of your code with an API that someone else has built: you should take the leap.
Be the Best
Look, if you’re not the absolute best at what you do, you’re doing yourself a disservice. Do you want to be average? Do you want to build a project that makes people say “meh”?
I didn’t think so!
If you’re going to build a great application, people will need to LOVE it — not just like it. The only way to make applications people LOVE is for every single part of your application to be the absolute best. Users expect every portion of your product to work well, be beautiful, and solve their problems. Gone are the days of hacked-together web apps with broken billing systems, and geocities-esque home pages.
Every single piece of your application must exceed user expectations – and the only way to do that with limited resources is to outsource the critical but non-core parts of your applications to experts. You, in turn, stay focused on your core business logic and deliver greatness.
Let’s be honest for a moment: there’s no way you can build the best possible product without help. If you had to build your own billing system, monitoring system, user management system, etc. – for every project you worked on, you’d be constantly busy, never having time to build the core parts of your product!
The only way to build the best possible product is to outsource all non-core parts of your product to the people who CAN DO IT BEST. Need to build an amazing payment system? Just use Stripe! Need to deploy your application quickly and painlessly? Use Heroku!
Be the very best at what you do and get the best to help you with everything else.
As you read this article, time is slipping by. You’re slowly edging closer and closer to death. Your product / project is slowly becoming outdated. You need to move faster… Much faster.
Don’t waste your time doing things you don’t need to do! I know I’ve said this above, but it really is that important. If you can utilize someone else to handle the messy jobs: do it! Not only will you be able to move faster, write more code, and make your users happier — you’ll also remove the 24x7 burden that comes along with doing everything yourself.
If you’re spending 1 day a week working on deploying your infrastructure, you’re spending that much less time doing what you need to be doing! If you spend a week writing your own user authentication or dealing with Facebook integration — you just wasted an entire week. Sorry! That time is never coming back. It’s gone — for good.
Do you think your competitors are wasting their time rebuilding every non-core component?
DON’T COUNT ON IT!
They’re probably outpacing you, building a better product, and winning more people over.
So — if you have problems that someone else can solve, why not let them?
Tools and Solutions
Although my job title says “Developer Evangelist”, I’m honestly not trying to sell you on anything here. Below is a list of services that not only make developing applications a lot easier, but will also save you a ton of time, energy, and effort.
Before joining Stormpath as a Developer Evangelist, I was co-founder and CTO at OpenCNAM and used many of the solutions below. These services have saved me tens of thousands of hours of work, and allowed me to be a truly happy programmer while constantly launching products and features.
NOTE: These aren’t affiliate links, just API companies (and services) I find incredibly awesome to use in most of the apps I build. I have no affiliation to any of them.
Authentication / Authorization
- Stormpath – Stormpath makes the entire user portion of your project dead simple: store users (and user data) securely, handle user permissions, handle all the email verification / password reset stuff instantly. (OK: I am trying to sell you this, sorry!)
- Keen.io – Great API for building out custom analytics.
- CloudFlare – CDN + DDoS protection! It’s what we use here at Stormpath.
- Fastly – My favorite CDN. Amazing API. Very fast. Super customizable. Makes your website fast — really fast.
- Intercom – A great customer CRM. Really easy, handles all sorts of customer communication channels — so amazing.
- Ducksboard – I love these guys. Beautiful design. Straightforward API. Makes visualizing your project data simple.
- Leftronic – Nice dashboard, great design. Great API. Better for geolocation stuff, in my opinion.
- Bonsai – A great ElasticSearch provider.
- Heroku Postgres – The best PostgreSQL hosting service ever created. Period.
- MongoHQ – My favorite MongoDB database provider.
- Open Redis – My favorite Redis provider. I’ve been using them forever — they’ve never gone down, or lost any data. Furthermore, they make scaling your stuff incredibly easy.
Deployment / Hosting
- Heroku – My absolute favorite hosting company.
- Flynn – An up-and-coming Heroku competitor (built on top of Docker). It looks very promising if Heroku isn’t your thing.
- Sendgrid – Send email via their API — easily.
- Loggly – Easy log management
Monitoring / Debugging
- New Relic – If you don’t have New Relic in your app — I… I don’t even know what to tell you. You’re missing out. New Relic is 100% critical to building any modern application. It gives you the absolute best performance / monitoring information humanly possible.
- RunScope – Debug API services. Monitor API services. Really valuable tool.
- Firebase – Powerful API to store and sync data in realtime.
- Pusher – Great API that makes web sockets easy.
- Amazon S3 – Can’t beat Amazon S3 for file storage / streaming. It’s the best.
- Travis CI – Unit and integration testing service. Free for open source stuff, paid for proprietary stuff.
Build Great Things
Building great products isn’t easy.
By utilizing API services, you can dramatically speed up the amount of time it takes to build an awesome application.
If you get anything from this article, let it be this: only do the stuff you can be the best at. Leave everything else to other people.