Mac,on the topic of  Business, PHP, Web Development
05.15.2009   |   1comment

This morning Mark and I attended a great talk by Eric Smith, CTO and Co-founder of Control4, at the UTC CTO P2P Forum, titled “Outsourcing: What not to do.”  The short version of the story is that a few years ago Control4 decided they should try outsourcing. They spent about $700,000 setting up a nice 50-man shop in Bangalore, with a good Indian HR manager and a guy from here that moved over there as a technical manager for the shop. In about a year and a half, they spent about $3,000,000 on the facility, and ran into a bunch of problems. They couldn’t hire and keep the top notch developers because they weren’t a big name company, and they had a lot of churn and turnover due to the 20-25% annual growth in average salaries. They had a hard time being clear enough and specific enough in their specs and task lists to get it built right the first time. The 12.5 hour time difference made things very hard for communication. On some projects, they had to go back and forth 17 times with changes, bugs, clarifications, etc. before it was done right.

When he talked about the results they got from this $3M, 1.5 year investment, he said that only about 30% of what the team produced was able to be salvaged and used. The other 70% had to be rebuilt from scratch. One of the most telling things he said was that by the time they got all the kinks worked out and the team there was working at full speed, the production they saw from the Bangalore office was about what they would have had if they had kept their technical manager here in the States and hired one more guy like him. Two top notch guys (for argument sake, say you’re paying them each $150K per year, a total of $300K/year plus their office space and any other administrative overhead) would have yielded the same output as a 50 person team costing $2M per year. He didn’t say, but if that doesn’t already factor in the “30% usable output” then the difference is even more drastic. Don’t forget that another cost besides the money is the time it takes to get to the right solution. If 1.5 years is what it would take to do it right, then 1.5 years to get it 30% right means you still have a lot of work to do and a lot more time (1-5 years) to really get it done, which in a competitive market can leave you in the dust.

One really sad thing is that this story is hardly unique. Many people we’ve talked to who have tried outsourcing projects (to India, Russia, or anywhere) have run into similar problems and worse. Most of the outsourced web development projects we hear about didn’t get in that deep of course, but the principle is the same.

So what is the moral of the outsourcing story? It really is the same lesson many others have learned: Cost, or hourly rate, isn’t the only thing that matters. Sure your outsourced developers are cheap, but what do you get for it? What’s the quality and quantity of their output?

Mark tells a great story about a guy who has a brain tumor. continue reading Outsourcing, Brain Surgery, and The 9’s”


Benjam,on the topic of  CakePHP, PHP
05.07.2009   |   0comment

In this episode of “What does that do?” we’re going to look at a few helpers and methods of (probably) well known classes that may or may not be that well known, as well as enlighten you to a few gotchas that I’ve discovered during my Cake usage.

First is the Set::extract method. When I first started using Cake, I was using the dot notation in my extract and combine calls, that is until I discovered the XPath notation that was also allowed which offers more control over your returned values. One gotcha that I discovered early on, was that to emulate the dot notation {n}.Foo, you can’t just use /Foo, you have to add a /. to the end to make it work properly. So you end up with /Foo/.. One other thing I noticed while poking around in the source, was that the argument order for extract is opposite from that of combine. With combine, you put $data, then $path[12]. With extract, you put in $path first, then $data. I was doing it wrong for a long time, but the Cake developers thought of this, and silently flip them in extract if you get them backwards.

continue reading “What does that do?” – Cake functions I’ve found”


Luke,on the topic of  Tools
05.07.2009   |   0comment

crossloopI have needed a screen sharing service multiple times and I have never had a really easy way to do it. I have shared screens with clients that use Macs with iChat but more often than not the person I want to screen share with isn’t on a Mac. CrossLoop is super easy and lets you screen share with any Mac or PC. If you ever need to screen share use CrossLoop.


Benjam,on the topic of  Usability, WordPress
05.07.2009   |   20comment

EDIT: This post has been deprecated by the recently released WordPress 2.9. Please update your WordPress installation to get this functionality in your blog.

If you don’t wish to update your blog software, then please continue reading.


I was writing a post on my personal blog recently and wanted to show a gallery of pictures, but I also wanted to show one of those pictures near the top of the post, but not in the gallery, and if you’ve ever tried to do this with [gallery], you know it can’t be done.

Well, now it can, and I’ll show you how.

continue reading Filter images from WordPress [gallery]”