rss feed
Let me ask you this. Think of all the proprietary code you've left locked up within a company as you walked out the door for the last time. Of all that code, spread over all those years, how much of it do you think was potentially valuable for use in other software? In other words, what percentage of that code could you honestly reuse if you made a copy of it before you left the building? 20%? 10%? 5%? I don't know about you, but at most places I've worked, I'd be lucky to break 1%.Anyway, back to the tale. Undaunted by this minor flaw in his plan, the intrepid executive started shopping around the widget database application to other potential victims/customers, even before any cleanup development work began. After all, once we had a signed contract, generalizing the application to actually be useful to other customers would be a cinch, right?While all of this was going on, some of our developers gave notice. Specifically, it turned out, these developers were working on the very widget database application that our executive was so hot to resell. The executive wondered aloud whether these quitting developers, now obviously harboring ill intent, could potentially make off with the precious widget database source code like so many bandits in the night. The implication being, of course, that the widget database source code was something of great value that a departing developer would be interested in stealing for fun and profit.At this point in the saga of the widget database application, I was tasked with monitoring the departing developers to make sure they didn't actually steal any highly valuable source code in their last couple of weeks employed by our illustrious organization. I'm sorry to say that, as far as I was able to discover given the limited means at my disposal, no highly proprietary widget application source code was stolen, nor was it sold on the black market for untold millions. And by the time I eventually left the company, the hapless executive still hadn't managed to sell a single copy of the widget software, despite his guaranteed recipe for success.So what went wrong here? Our executive was laboring under the false assumption that our one-off, internally produced software was something of value, something that other customers would find worthwhile. Every one of his moves was based on the a priori premise that our recycled software would sell like hotcakes, and therefore its source code should be jealously guarded.This sort of widespread belief grips the software industry like a disease. Most software companies revere their source code as if its escape would somehow give their competitors the keys to immediate riches. It is this very fallacy that prevents many software shops from even considering open sourcing their software. If their source is in and of itself a thing of great value, subject to reuse and thereby profit, then open sourcing it would be like just giving everything away!Of course, once you realize that the majority of your organization's source code is essentially worthless outside the very artificially constructed womb that is your particular development team with your specific tribal knowledge, you begin to realize that open source is not at all a threat to the sanctity of your source code, nor does it in any way threaten your bottom line.A few weeks ago, a friend asked me if he could reuse the Coderific source code for another type of unrelated rating site. Coderific is licensed under the GPL, so he didn't even have to ask, but I of course gave him my blessing anyway. The last I heard, he was having trouble getting it setup, and even if he does get the source installed and configured, there still remains the not inconsiderable challenge of adapting software written specifically for employer ratings to a completely different type of rating site.So even Coderific source code is essentially worthless. The only real value is in the site that's built on top of it, and user contributions in the form of employer ratings. Without that, it's just a pile of project-specific, internally produced code, very similar to code produced by companies all throughout the industry. The main difference is that most proprietary software shops think that the only reason no one is stealing their source is because they keep it hoarded away in a cave somewhere. The reality is that no one wants to reuse the vast majority of source code out there, even if it's completely open and ripe for the taking.
blog - your source code is worthless
posted by witten on July 14, 2007
Yes, it's that time again: Time for another tech industry bedtime story.A few years ago (so, back in the dawn of time), I used to sling code for a small software company. We had developed a consultingware product for one of our customers that had absolutely nothing to do with our main business model nor our core competencies. Let's call it a widget database application.One day, one of our executives was looking for new sources of revenue, as executives are often wont to do. He had a brilliant idea: What if we took this widget database application that we had developed with requirements specific to the whims of a single customer, cleaned it up a bit, and then resold it to dozens of other customers as an enterprise widget database application? The obvious answer, and the one that spurred all further decision making on the matter, was that this scheme when implemented would make us all exceedingly rich, such that we could bathe in actual cash.The inherent flaw in this brilliant idea.. Wait, let me back up a bit.. One of the many inherent flaws in this brilliant idea was the assumption that a group of developers can somehow start with code written to soothe the temper of one particular cranky customer, wave some sort of magical "cleanup" wand, and thereby generalize the code so that it soothes the simultaneous tempers of many dozens of cranky customers.Allow me to quote Dennis Forbes (found via http://cysquatch.net/blog/?p=43):
The question every organization needs to ask itself, then, is what value they could sell their "reusable code" for - what, realistically, would competitors and new entrants in the field offer for it? The answer, in almost every case, is $0, and they wouldn't want it even at that price. There is extraordinarily little code theft in this industry (even though we're in the era of burnable DVDs and USB keys) because most code - above and beyond the industry-wide frameworks and libraries - has no value at all outside of a specific project with a specific group of developers. Trying to use it for other projects is often worse than starting with nothing at all.
Let me ask you this. Think of all the proprietary code you've left locked up within a company as you walked out the door for the last time. Of all that code, spread over all those years, how much of it do you think was potentially valuable for use in other software? In other words, what percentage of that code could you honestly reuse if you made a copy of it before you left the building? 20%? 10%? 5%? I don't know about you, but at most places I've worked, I'd be lucky to break 1%.Anyway, back to the tale. Undaunted by this minor flaw in his plan, the intrepid executive started shopping around the widget database application to other potential victims/customers, even before any cleanup development work began. After all, once we had a signed contract, generalizing the application to actually be useful to other customers would be a cinch, right?While all of this was going on, some of our developers gave notice. Specifically, it turned out, these developers were working on the very widget database application that our executive was so hot to resell. The executive wondered aloud whether these quitting developers, now obviously harboring ill intent, could potentially make off with the precious widget database source code like so many bandits in the night. The implication being, of course, that the widget database source code was something of great value that a departing developer would be interested in stealing for fun and profit.At this point in the saga of the widget database application, I was tasked with monitoring the departing developers to make sure they didn't actually steal any highly valuable source code in their last couple of weeks employed by our illustrious organization. I'm sorry to say that, as far as I was able to discover given the limited means at my disposal, no highly proprietary widget application source code was stolen, nor was it sold on the black market for untold millions. And by the time I eventually left the company, the hapless executive still hadn't managed to sell a single copy of the widget software, despite his guaranteed recipe for success.So what went wrong here? Our executive was laboring under the false assumption that our one-off, internally produced software was something of value, something that other customers would find worthwhile. Every one of his moves was based on the a priori premise that our recycled software would sell like hotcakes, and therefore its source code should be jealously guarded.This sort of widespread belief grips the software industry like a disease. Most software companies revere their source code as if its escape would somehow give their competitors the keys to immediate riches. It is this very fallacy that prevents many software shops from even considering open sourcing their software. If their source is in and of itself a thing of great value, subject to reuse and thereby profit, then open sourcing it would be like just giving everything away!Of course, once you realize that the majority of your organization's source code is essentially worthless outside the very artificially constructed womb that is your particular development team with your specific tribal knowledge, you begin to realize that open source is not at all a threat to the sanctity of your source code, nor does it in any way threaten your bottom line.A few weeks ago, a friend asked me if he could reuse the Coderific source code for another type of unrelated rating site. Coderific is licensed under the GPL, so he didn't even have to ask, but I of course gave him my blessing anyway. The last I heard, he was having trouble getting it setup, and even if he does get the source installed and configured, there still remains the not inconsiderable challenge of adapting software written specifically for employer ratings to a completely different type of rating site.So even Coderific source code is essentially worthless. The only real value is in the site that's built on top of it, and user contributions in the form of employer ratings. Without that, it's just a pile of project-specific, internally produced code, very similar to code produced by companies all throughout the industry. The main difference is that most proprietary software shops think that the only reason no one is stealing their source is because they keep it hoarded away in a cave somewhere. The reality is that no one wants to reuse the vast majority of source code out there, even if it's completely open and ripe for the taking.
2 comments
Write a comment!-
Re: your source code is worthless posted by char on July 17, 2007 05:46 PM
Good post. I agree that the specialized nature of most code makes it difficult to reuse, but I don't think it's the main reason why code is worthless. Far more significant is the "tight coupling" between the code base and its developers.Most companies, like the one you described, still hold on to the myth that developers are more or less interchangeable, so long as replacements have all the right buzzwords on their resumes. This myth was born in the sixties when companies started developing large software systems with large development teams. To address the scalability problems that accompanied these projects, they also began developing "software engineering" methodologies. These were based on techniques used in other manufacturing industries with basically the goal of transforming the software industry from one based on craftsmanship into one based on assembly line production.This approach has failed because we have *not* been able to reduce coding from the level of skilled craftsmanship to the level of unskilled labor, but that hasn't stopped companies from sticking with software engineering all these years. The reason for this is because of the emphasis assembly line production places on skilled management over unskilled labor. What corporate executive or manager is ever going to concede that *this* particular group of worker bees is crucial to the health of the company, possibly even more so than the executive himself? (Answer: executives who are former engineers, like those that founded Google, Intel, Microsoft, Sun, HP, Adobe, ...) From management's perspective, it's much more comforting to believe that developers can come and go as they please without any adverse impact, not to mention more gratifying to the ego to believe *you're* the one who really matters.But because software development is still a skilled craft and not an unskilled labor, things don't really work the way management believes it does. When software doesn't ship it's believed to be because the *process* was flawed and needs improvement, not because the team that could actually work on the code was laid off and outsourced. The reason we're constantly seeing processes come and go (ISO-9000, CMM, Scrum, etc.) is because software projects have been failing at the same steady rate (about 90%) since the sixties. But companies always respond to failure by trying to improve the process, the very concept of which is flawed. The fact is the majority of projects fail, not because their process is flawed or adhered to incorrectly, but because they have teams that are too large, unstable, or unskilled to be successful. -
Re: your source code is worthless posted by witten on July 17, 2007 11:48 PM
All excellent points. I think it's interesting (and fairly accurate) to think of most development processes as mere attempts to commoditize developers. So here's a question: What development processes, if any, avoid the trap of treating developers as interchangeable resources?char wrote:I agree that the specialized nature of most code makes it difficult to reuse, but I don't think it's the main reason why code is worthless. Far more significant is the "tight coupling" between the code base and its developers.
Also, the tight coupling between the code base and.. the code base! For instance, one of the reasons Google can't easily release/open internal software such as Mondrian is that it's tightly coupled to other internal Google software.