My brief outsourcing experience
Our Android app we have made for Toddlers (more about that soon) needed Facebook integration! How else would our product spread like a mind virus!?
I started on my merry way, implementing the standard way apps share info on Androd: sending an Intent. All goes well, Gmail, Twitter and Google + works fine with this method but alas Facebook (dun dun duuuuuuuuuuuuuh) doesn't support Intents with images and text. Another example of Facebook's non standard approach to Android. (On an aside I suppose their argument for not allowing this is a valid one. The amount of machine generated crap on Facebook has gotten out of hand as of late. I guess we just wanted to be part of the bot to bot conversation. (Perhaps some actual humans would listen in.) From what I hear though, sending an image with text is allowed on the iOS version of Facebook app. Not fair.)
Only alternative, the people of the Stack, tells me is Facebook SDK for Android.
"Fuck that" I thought. Don't what to learn a crappy social network's SDK that can't use simple Intents on my platform. I will outsource it!
So off to Freelancer I went. It was a fast and easy process to describe what I wanted done, and I was pleasantly surprised when about 10 freelancers clamoured to bid for my project.
About a day later I picked a programmer from India (where else?) to help me with the Facebook SDK part of the app. I chatted with him before I awarded him the project. "Posting images, with text, and no stupid web log in?" "Yes yes yes, no problems."
$20 he said, and should be done in 2 days. Cool I thought, and went away for the weekend like a globalisation loving capitalist.
Before I that, I wanted to give him a skeleton of our app. I wasn't about to hand him over all my source codez just like that (obviously our app is a unique, winning idea) so a subset of the app had to be built. The app simply, takes photo, posts Intent, with comment saying /* Add Facebook share here. */
First version he sent had a stupid Web log in, but besides that, the basic functionality was there. Posting a photo to my Facebook timeline.
It wasn't a public post though, only I could see it. I asked our friend from over the pond if that is a setting in the way the Android app builds the post, or the Facebook app's setting? "No" he said, that is a Facebook setting per app that needs to be set.
Hu? Our poor stressed out, and sleep deprived users definitely won't be able to go through the seven click process of changing default share options for a Facebook app. I don't think they even know they have Facebook apps.
The relationship started breaking down. I made the classic manager mistake, of meddling in development. "Just use the Graph API" I insisted, without completely understanding what that means. He started loosing patience with me, and that meant his "US English Level 1" score of 85% dropped to about 30%.
At the end of the project, 3 weeks later he mailed me his code, and said "thanks for ur patience and understanding. the thing that u have asked not possible. i added the apk and the code also" To be fair the project would probably never have taken more than a week, if I had given him quicker feedback, or lead him down the Open Graph API maze, that he never worked with before. I didn't feel bad paying him the full(!) requested amount of $20.
Now I had to incorporate his (mostly copied and pasted) code into the real app. Didn't take too long, but I was stuck with posting the image to my wall (timeline? What's the difference?). Facebook's API kept returning "permissions error". Googleing didn't really help (mostly because the Facebook API has changed so much, almost all of what is written online about it is broken). So I turned to our Indian friend again, and he was very helpful, even after monies have exchanged hands, and star ratings have been made. (I gave him 3.4 stars, he gave me 5. Am I a bad person?) Unfortunately, his advice didn't really help. I was still stuck.
So there I was a few weeks back, reading through the getting started Android Facebook SDK guide exactly what I wanted to pay someone to avoid doing.
Luckily though I could skim over most of it and find the bit that was missing. (I was never asking for publish_action permission when starting the Android post to Facebook workflow.)
I would say that time wise, I probably came out poorer than I would have just implementing the posting code my self. This app is a side job though, and learning a new API I would classify as harder cognitive work, than just responding to emails. After a hard day of real development, it is a bit easier on the coconut.
Also getting to know the process and pitfalls of outsourcing was also a valuable experience. I would say that next time I dive into an outsourcing project like this, I would probably talk the specs through in more detail with potential freelancers. Understanding the problem and how best to solve it must be clear for all parties.
And I would probably be more generous for someone's time.