To be agile is to hack
Co-Founder of OverClock, Angel Hack & Hackathon.io, Coding & Hacking Expert
Agile development and hacking go hand-in-hand.
Being pragmatic & resourceful, throwing away what you have, maintaining velocity are critical
You incur technical debt when hacking, sacrificing maintainability for speed.
APIs are interfaces for computer software systems to talk to one another.
APIs are often a quick way to access your objective and avoid building an entire system yourself.
To discover APIs, search Google, visit Programmable Web, or go to hackathons.
Lesson: Intro to Hacking with Greg Osuri
Step: #8 The Technology: To be agile is to hack
The thing about how software is being traditionally developed. I mean, if you look at anything in the '80s or '90s it's been traditionally a waterfall methodology. What that means is you have a set of requirements and you go off and build that within however long it takes to build it, maybe sometimes in years to build it, and then you ship the product to the customer, before having the customer see a live product.
That fortunately went through cycles and different methodologies, and now the winning methodology I think is Agile. People recognize, yes, it's very important to get feedback earlier on, before you actually finish building the product and shipping it. In that sense agile and hacking go really well, well in hand because, if your goal is to take the feedback and incorporate what you got out of the feedback in the next iterations, your goal should also be to get to the feedback as fast as you can.
A lot of the principles of hacking, being pragmatic, being resourceful, comes into play if you want to be agile. Also, the fact that being agile means that being able to throw away what you have and still be able to move. So, moving is very, very important, I mean, maintaining the velocity is very important. If you build a robust solution and it turns out that it's something that's not desired by the users you should be in a position to throw it away. If you invest all the time and energy, it's harder to throw something away at that stage.
Technical debt is the other consequence of hacking. Another con of hacking, if I might say. It's a debt you incur because you didn't pay enough attention to make your code maintainable. So as you keep hacking, and hacking, and hacking you incur this maintainability debt. Which might lead to you saying "We might as well throw everything out again and rebuild."
It's something you want to keep an eye on if you have a major product in place. But you don't care about that debt in the early stages of start-up. You shouldn't care about that debt in the early stages of the product. If you do then you're already worrying too much.
Debt is something you incur because of mistakes that people make. You've got to sometimes take shortcuts in order to get to the goal, which results in putting it away for later on. That keeps building, and building, and building. By the time you realize, it's going to be huge.
APIs are interfaces. Just like how when you access a website, the website is the interface for a human and a computer. APIs are an interface or a way to connect for computer software programs. So two systems talk to each other through an API. What that also entails for a company that has an API is wider reach, wider audience. Now you not only have computers but you have people making apps and consumer content, and then spread your distribution through their distribution networks. So that's what APIs are.
It also tells you that you can solve a lot. You don't have to build a lot of things when you build an API. For example, you want to get a users' social circle. You can use Facebook's API to get the social circle. Or you want to host a website. You can use Amazon's API to host a website. Say you want to send an email. You don't have to build an email service provider. You can use Centigrade or MailChimp. Or if you want to do analytics you can use KISSmetrics.
For every problem that you would normally otherwise build solutions yourself, there's an API that you can consume. So that becomes integral to hacking, because hacking itself is a quick and clever way to solve a problem. So the quickest possible way would be for you to go and use an API instead of trying to build an entire system yourself.
IF you want to find a list of APIs and what APIs do, I think programmableWeb.com is where you go to see the list, but most of the time the way I discover APIs is just Google for what I'm trying to do, and if they're good at their distribution, it pops up as an ad.
There are also other ways to find out about APIs and what's going on, just go to Hackathons and see what these APIs really mean. A ton of Hackathons are coming up, you can go to Hackathon.io or you can go to Hackerleague.org to get a sense of what's going on in your area.