What Business Can Learn from Open Source
dtolton writes "Paul Graham has written a fantastic article on what businesses can learn from Open Source. He covers why Amateurs can outperform Professionals, why the home is a better work environment than the office, and how bottom up ideas are better than top down. Finally he ties these lessons into the business relationship." Derived from a talk at Oscon 2005. From the article: "...the biggest thing business has to learn from open source is not about Linux or Firefox, but about the forces that produced them. Ultimately these will affect a lot more than what software you use. We may be able to get a fix on these underlying forces by triangulating from open source and blogging. As you've probably noticed, they have a lot in common."
The problem with the "I can be more productive at home" argument is that it blurs still further the distinction between work and personal life. IT people are already subject to odd-hours, psuedo or real on-call schedules, VPN access "just to check your email", etc.
People need to stop this trend - its not healthy. When I walk out the door of my job, I'm done. They pay me for 40 hours a week, and they get it. No more. If I work an extra 4 hours a week at home, I just gave myself a 10% pay cut.
I want to delete my account but Slashdot doesn't allow it.
why Amateurs can outperform Professionals
I think the article and the facts on the ground would justify rephrasing this as "why professional programmers get better results on their free time, without pointyhairs, committees, and marketing droids in their way".
Actually, one of the most liberal-minded companies I've ever done work for had under 100 employees. But they understood that allowing me some flexibility paid off in the long run. And, to be quite honest, I ended up putting in more than 40 hours a week because of it. Overall, I'd say they came out way ahead compared to trying to turn me into one of the masses who feel like watching clocks and rushing the parking lot are the norm.
Yeah, but the best open source products have people involved who are paid for their time in working on it.
Amateurs are great, and amateur drive is an amazing thing -- it's enabled me to produce software of a quality and sophistication that a "professional operation" couldn't match for anywhere near the price.
But the "great advantage" of amateurs -- they work better at projects they love, without bosses -- is also their great shortcoming. As a rule, amateurs don't do the crap work. Most amateurs, being their own bosses, won't do, or do inadequately the pain-in-the-ass parts of the job. Check grammar on a weblog? Make the GUI useful and intuitive to an average user? Hang around and get the damn thing finished? Ensure that your startup has a legally sound foundation?
In short, discipline is something amateurs as a group lack, and that's something some of those fancy degrees teach : to achieve something, you can't just do the stuff you like.
As far as meetings go, well sure, meetings are to be abhorred by any sensible person. That's also why in Universities (where you get your fancy degrees) we teach people to break up in arbitrary small groups and work on a project. The smart ones figure out pretty quick that small group work sucks and determine to avoid such situations, or make them as functional as possible.
And well, yeah, it sucks being a wage slave, but most jobs are just that: jobs, and for lazy-ass amateurs like me to live our lives, we need an infrastructure of people who work for a living.
It is not that open source software can outperform professionally-written software. It is most often the case that a piece of nice commercial software is written and the open source community tries to replicate it for free. The reason that they can come up with so many quality, open source alternatives is because they have no timeline. Nobody bats an eye that it took the open source community 5 years to come up with a competitor to IE6. Nobody cares about that (it's free, after all, quit complaining!).
Rather, it is the case that code that is well written, only needs to be written once. Take the gecko rendering engine, for instance. How many open source browsers use it? And once a quality piece of core software is written, it doesn't need to be written again! So, it may take the open source community years to come up with a solution, but once it's there, it isn't going anywhere.
You can see this happening with kde and gnome, too. They aren't quite as user-friendly or as stable as their commercial counterparts, but once they get there, unless the desktop paradigm changes, then the OSS community will have their free desktop alternative.
The first reason is that many, many businesses are focused on building what the customers ask for. Clue number one: customers know fuck all about building software. If they were remotely clued in, they wouldn't need to ask somebody else to build it, would they?
So customers ask for stupid things. That's what makes them customers. The problem arises when the business doesn't care that it's stupid, but builds it for them anyway. Now you have a suboptimal solution that cost lots of money.
Compare this with the amateurs. They are building it for themselves, so they are qualified on both the problem domain and the software construction. They aren't going to build something stupid because they are going to be the ones using it.
Then there's the morale. The professionals are fully aware that what they are building is stupid. It's demoralising. They offer sensible solutions instead, but get knocked back with "it's not what the customer asked for". They begin to understand that their job isn't to build good software, it's to spend their time programming, and if the result is somewhat functional when they reach the deadline, that's just a bonus. It's not surprising that they don't really give a shit whether the code is up to scratch or not, because the whole exercise is pointless beyond collecting a paycheck.
Again, compare with the amateurs. They get satisfaction not only from using the software they wrote (being both users and developers simultaneously), but they get the satisfaction from finding that others appreciate it too. They know they've solved a problem well, and they take pride in their work. People who take pride in their work generally put in more effort.
If there's anything that businesses can learn from this, it's that they need to be able to say no to customers. To put off deadlines. To say "You know what? This is solving the wrong problem!" and go back to the drawing board with the customers to figure out a better approach. It's only when the professional programmers see that they are actually doing something productive that they'll feel motivated enough to take pride in their work, and feel like they are in an environment where they can contribute actual solutions instead of banging their head against a brick wall.
As someone who invested 6 years, and about $250,000 worth of lost earning potential into a business, I can honestly say that I agree with him, 100%.
I wouldn't trade my experience running that business for that $250,000, if you tried to give me the cash. Now that I am back at a programming "Job", I treat it completely differently than I did before I had a business. I find that I worry much less, too -- once you've come close to living in a gutter, there's not much that is "threatening" about a boss!
He does say that someone with Kids and a Mortgage should think twice. So, all in all, Mr. Graham's article was very even-handed in its comparison of Jobs vs. Start-ups.
-- -pjk Perry Kundert perry@kundert.ca http://kundert.2y.net
Google uses Linux which is free to make money. Tivo use Linux (although I don't know if they actually make money. Linksys sells (and I assume does pretty well) products like the WRT54g which run Linux.
I don't want to go crazy with examples, but the point is that lots of companies make money off of free software and some of them probably even give things back, they just don't always make money the way you expect a software company would.
In his latest essay, he tries to explain why a Professional will never be as productive as an Amateur because Professionals don't do what they like. Excuse me? So you're saying amateur athletes players are better than people in the NBA/NHL/MLB/NFL because they'll play for free? That's absolutely ridiculous. Professional athletes are more motivated than anyone else. What about people who actually applied for jobs doing work they loved, like me. Not only do I have a job I love, I get paid to do it.
I'm certain there are people who hate their jobs, and who are very unproductive. But has Paul ever considered the fact that maybe they were unmotivated to begin with, and that the reason they took that job was because they were too unmotivated to get anything else?
A previous posted stated that motivation is what drives productivity. I couldn't agree more. Money has absolutely nothing to do with productivity, it's all about motivation.
Phemur
Customers often times have no clue as to what they need (and therefore the requirements that the design and implementation flow from are flawed/wrong) and this can caues issues. However, this has less of an effect on whether or not the code is "up to scratch".
Perhaps you misunderstand me. I'm not saying that bad requirements directly cause bad code. I'm saying that programmers who know they are building the wrong thing are going to find it difficult to care enough to create high-quality code.
The author must not have a wife or kids.