Paying for Source Code. Worth it? or not...
In the past I never used to buy commercial code. I always had the attitude that "If they worked it out then I should be able to work it out". I come across a lot of other developers with the same attitude. They're building their first iPhone game and they want to do it all from scratch - physics, animation, sound... Even if they manage to build their own game engine, they inevitably end up wasting countless hours on game engine design and end up with a sub par game engine at the end.
Recently, my attitude's been changing. When I write a game, I want to spend my time doing game design rather than worrying about collisions or OpenGL. When I have a new problem, I start by looking for existing libraries which could reduce my software development time. A month ago, I started selling source code on this site. Initially, I spent two days setting up a free shopping cart system. I spent about 8 hours setting up the cart which is worth about $320 of my time. It seemed to work fine and I started making sales. However, after installing some routine updates I got an email from a customer saying the shopping cart wasn't working. Now, the shopping cart I was using was very, very powerful and flexible; and that inevitably means that it was extremely complicated. It was composed of about 15 individual modules with a flexible system of rules to determine which actions were taken at every cart state. For some reason, the licenses weren't being issued. In the past, I'd have probably spent a week debugging the PHP code and eventually solving the issue. At least until the next dodgy update!
But wait a minute. I'm not a shopping cart developer. I'm a mobile game developer. I don't want to spend 40 hours trying to debug my shopping cart. I did a search and found a premium module which handled file purchases. It cost $50 which included technical support. I bought the module, installed it in 20 minutes and was ready to go. For me, this was the right option. I made that money back very quickly from the sales on the site and didn't waste my time working on something which didn't add value.
In fact, I probably made a strategic mistake. I spent 8 hours setting up the original cart which translates to around $320 of my time. Since the premium cart only costs $50 I should have gone with that solution from the start.
Really this question comes down to division of labor and specialization. Buying code is the same as buying expertise. The advantage, is that it's much cheaper that buying expertise by the hour because the cost is spread over a large number of people. My premium shopping cart would have taken hundreds of hours to build but I'm only paying for one of those hours.
When thinking about these issues it's really important not to under value your time. Time is valuable and time to market is really important. People who understand this have a big competitive advantage. Take a look at Trey Smith. He's a game designer but he doesn't do any programming or game art. He out-sources everything to third parties. Maybe he spends $15,000 to release a new game but as long as it's a good game, he makes it all back and more! How long would it have taken him to develop the game himself? Probably a minimum of 2 years. In those two years the mobile market could change entirely and the opportunity would have been lost. What this demonstrates is that money, spent intelligently on high quality specialist expertise can result in a significant time saving which saves money and increases the competitive advantage of the project.
Finally, I'd like to highlight a trap which it's easy to fall into. The game of poker highlights this trap extremely well. You start playing and have a pair of kings. This is a pretty good hand and at the first stage you should bet heavily. After betting heavily the first three common cards come down. They are all Spades - which you don't have. Suddenly, your hand is looking a bit shaky. Anyone with a Spade will be on for a flush which would beat your hand. One of your opponents starts betting very aggressively. What do you do? You still have a good hand and you've invested a lot of money in the round. Should you keep betting or drop out?
A prudent person would probably fold at this point however human nature says play! The fear of losing the money you've already invested keeps you in the round. In the end however, because you keep betting at a disadvantage you stand to lose much more. There's a poker saying which is "A bet saved is a bet earned". This translates directly to software development. Sometimes people start "going it alone" after 4 weeks of effort they're advancing very slowly. They get the opportunity to pay a small amount of money to solve the problem instantly however they don't take it because they don't want to lost the 4 weeks they've already invested. In the end they waste a further 6 weeks on the project. Part of becoming a successful independent developer or manager is knowing how to use the expertise and resources effectively; part of this is being prepared to buy specialist expertise when necessary.