I’ve got a few ideas for media sharing services, but want them to work seamlessly in Apple products. Since Steve Jobs is at war with Flash (when he is not trying to rid the world of unnecessary buttons), I’ve become increasingly interested in HTML 5. Nope, not a standard yet, but browsers are starting to appear that support. No time like the present to figure out how it works. Here’s a nice introduction from Addy Osmani.
I’ve recently become addicted to The Ruby Show and The Dev Show by the guys at 5by5. For me to actually absorb any useful information from a tech podcast it must be sprinkled with sarcastic comments and inside jokes. These two don’t disappoint. I’m looking forward to checking out some of the other podcasts these guys produce.
Check these out…because jokes about leading white space in Python and scaling problems with Ruby on Rails just never get old.
I’m involved in two startups. My own, Kiwiluv, who owns this fine blog. Also, my day job is at a small startup doing some interesting mobile development. Because both are short handed, both have turned to the now common practice of offshoring to get the work done. Often companies turn to offshore outsourcing of software development because they lack the skills and developers in developed countries tends to be a bit pricey. However, my two startups are very technically savvy, just understaffed.
I thought I’d share some of our experiences (names omitted to protect the guilty), both positive and negative with offshore development.
Project #1: Web Development
This was my first foray into offshoring and we did not intentionally seek an offshore partner. We posted a job on ELance for a web application using an MVC framework. We expressed a preference for Ruby on Rails, but did not make it a requirement. Interestingly, and almost without exception, the RoR proposals we got back were significantly lower in cost than those who proposed other languages (PHP was the obvious non-Rails favorite).
We didn’t pick the lowest bidder (but were interested enough to throw them a smaller project…more on that later). We based our decision on how professional their site and portfolio looked as well as the customer feedback on ELance.
So, how did it go? Not well. In fact, it’s still lingering on. The requirements we gave them were pretty simple, defining specific functionality and making it clear that the design aspect was to be ignored…just provide purely functional pages and navigation. Nothing pretty, just functional. What we got, were wireframes and a strong focus on the design stuff first. We let them go down this path with the understanding that we wouldn’t pay for increased scope. Our joy at getting some basic site design for free rapidly faded because the code drops and delivered code were of poor quality and the deployed incremental drops did not work properly.
The nice thing about ELance is their escrow service, so you don’t have to release payment until satisfied. Needless to say this vendor isn’t getting his next milestone payment until my partner succeeds at beating them into submission.
Project #2: Design
My partner is the artistic one, not me. I have an eye and appreciation for good design but have no skills whatsoever in making my web apps look nice. To deal with that shortcoming, I took one of my web app projects and handed it over to one of the bidders that we did not select for Project #1. I’m not sure why we did this, but there was something about our dealings with them that we liked. They designed their own site and it was clearly custom designed, not some default Drupal theme.
I made them a Rails skeleton application which didn’t do much besides allow user registration and management. I handed over a product logo originally done by Logonerds.com which I didn’t really like (we’ve had good luck with Logonerds.com in the past but this particular logo wasn’t their best work). I asked them to redesign the logo and style the web application. I gave them some general guidance on the product, target audience and the image we wished to project.
Long story short, I got back a gorgeous design implemented in HAML and SASS for under $1k. It was done quickly and efficiently. English was a bit off, but did not hamper effective communications. We got weekly status reports like clockwork and any delays to the project were our fault due to delays in providing feedback or clarifications (I was on vacation with limited Internet access).
This one was definitely a winner and I look forward to giving them a larger project when the opportunity presents itself…perhaps cleaning up the mess that Project #1 is turning into. We also worked with these guys through ELance.
Project #3: Mobile Applications
We had to produce a mobile application on Android which makes use of the Google Maps API, SMS API as well as some relatively routine data management. The company we selected actually contacted me unsolicited through LinkedIn. I had deleted it and had to go digging to find it when the project surfaced. We let them bid, found the price to be more than acceptable, and awarded it.
This experience has also been very good. They kicked off by asking a lot of intelligent questions about our specifications. They challenged something we were requesting which is generally considered bad practice (but we were doing it for good reason). I was impressed they caught that.
We got the first drop right on schedule and all promised functionality was implemented. The only glitch was that they provided an APK with a development API key that didn’t work, so they rebuilt it with a production key and it worked fine. We asked for source code with each drop, which they reluctantly agreed to provide before they had the opportunity to clean up, comment and beautify it, but complied and it looked fine.
One down side these guys had was that they were not receptive to using a project management/reporting/escrow service like ELance. That means we had to deal with international wire transfers which our US based bank isn’t very good at.
Here’s a few tips that I can offer from this initial foray into outsourcing:
- Make sure your requirements specification is clear about specific functionality. If you can’t demonstrate in a crisp way that it does or does not work, you should rewrite it so you can.
- Don’t pay up front. Make the first milestone payment gated by the vendor providing an iterative drop schedule with specific functionality allocated to each drop. Then issue milestone payments with each drop.
- If you’re a technical person, insist on getting the code. Even if you’re not, have a friend or consultant look at it to make sure you’re getting something that someone else can maintain and enhance. Don’t let them produce indecipherable spaghetti code that only they can maintain going forward.
- Use an escrow service so both you and they are protected and you can release payment only when you’re satisfied that the promised functionality in the incremental drop plan is delivered. ELance did a great job for us and it’s one-stop-shopping. There are other services out there as well.
- Start small. Don’t get locked in with someone doing a 10 man-year project until you’ve seen how they work with a smaller effort.
- Be unforgiving. When we posted our first job we were inundated with responses. If someone screws up, there’s no need to give them a second chance with so many others in line behind them.
- Be tolerant of time-zone and language barriers.
I still prefer to build our products ourselves, but sometimes you really do need lower cost labor or an extra pair of hands and there’s a ton of options out there.
There’s yet another source of some good information for Ruby on Rails developers. Rails Magazine offers a full magazine publication available free for download at http://railsmagazine.com/. They’re up to issue 6 and have some interesting articles including interviews with DHH and Matz. It may not be as real-time as the numerous Rails blogs, but it goes a lot deeper in most cases.
Back in April, I posted about Cadence Watch Company. Watch design has little to do with what we do here, but I was simply stunned that there was a watch company headquartered in Philadelphia of all places. Having spent much of my career living in Switzerland this was somewhat offensive.
Still, I gave them a shot and put myself on the waiting list for their newest model, the Ecomatic. It arrived about a week ago and I have to admit, it’s pretty cool. This is an all mech watch…nicely designed and a pleasure to wear. Definitely not a competitor for multi-thousand-dollar Swiss watches, but just fine nontheless. Will Cadence survive and thrive? Who knows…more and more people are using their cell phones as timekeepers but I’ll always like a nice watch. Hope they do well!
I’ve long been a fan of Ryan Bate’s Railscasts. He covers a wide variety of Rails topics so you can find almost anything you need there. Recently, I went through a multi-part screencast on Teach Me To Code on creating a Twitter clone. I really enjoyed the experience. While Railscast’s seem polished and rehearsed, the Teach Me To Code screencasts have a much more real-world “life of a developer” vibe. In the screencasts I watched, Charles Max Wood went down all of the false paths that we all do in trying to get things to work, but quickly recouped. There’s a lot of value in seeing how all of the various obstacles in doing web development present themselves in a real world situation. I’ve started listening to the Teach Me To Code podcasts as well. Now that I know that Mr. Wood is a fellow TI-85 user, like me and my partner are, I’ll be sure to stay tuned for more podcasts and screencasts. Keeup up the good work!
I learn things, particularly programming, almost entirely by example and digging through other people’s code. I stumbled upon this site looking for some examples and had a look. Michael Hartl has two complete books (one for Rails 2.3, the other for Rails 3.0) on learning Rails by example. I had a quick look, but it seems he’s covered all the bases including adding navigation and structure to your site. It looks like he’s planning to put up some other content as well, such as screencasts, etc. so I’m looking forward to seeing more.
The books are available online for free and for $39 you can get the PDF. I hear a print version is on it’s way too. Check it out.
Check out DHH’s post on Rails 3 going RC! Big news, but is anyone else worried about the refactoring necessary for “…making sure we get performance of Active Record back to at least 2.3 levels before release…”? Is it really a release candidate if you’re planning semi-major changes? I think some better configuration management hygiene is in order.