Rondam Ramblings: Top ten geek business myths is a blog from a guy named Ron Garret who's been there, done that, and wants the geeks of the world to know that the truth just aint what you think.
I won't rehash the whole blog, but let me summarize:
- If you want to be rich: Don't build what you want, build what they want.
- If you want to be a happy geek: Build what you want but don't try to sell it.
- If you want to be rich, stop doing research and start schmoozing with the rich.
- If you want to be happy, stop caring about the rich and start doing research.
What Ron is telling you is simply that there is basic business sense, whether you're building the coolest wizbo gadget or running a tortilla factory. If you're going to start a business then remember that it's not about your product and it's not about you. It's about the customer and what it takes to separate them from the greenbacks in their wallet. Ugly, but true. And the ugly part is why you and I are engineers and not salesdroids.
The one thing I take some issue with in Ron's blog is his assertion that C programmers can't do anything by themselves and always work better in a team. This guy has never worked with kernel hackers, apparently. Nor does he work with the GTK+ guys. Or about a dozen other open source C projects. C programmers can be both very good at working in a team or very good at working by themselves. It isn't that language that decides which they can do. It's the basic personality behind the programmer. 10 companies in 20 years, from 4 person startups like my current job or Xi Graphics to umpty-thousand conglomerates like Samsung and Dell – trust me. I've seen them all.
But there is some truth to what he says about Lisp making programmers being so productive they don't know how to work in a team. I might buy that, except I don't know any Lisp programmers. A corollary to this (that seems to lend credence to his claim, sans the C programmer analysis) is that Java programmers are REQUIRED to work in a team or else they won't be productive because that language (and all it's silly cross platform uselessness) is so convoluted that even as a team they can't do anything productive. Or maybe it's just JBOSS that causes that. Or XML. I can't tell yet who to blame. But I digress.
I do have to agree with a couple of important points he makes. First, you don't need $5 million to start a business. You need a computer and some code to sell (or code + hardware, which would be better) and, more importantly, you need a plan to convince someone to buy it. The old addage that the best salesman is one that can sell ice to eskimos is true. Microsoft makes a ton of money because they've convinced the unwashed masses that they need what Redmond is pushing. You (because you're smart like me, since you're reading this now) and I know we don't need it. We need something better. So we use Linux. Or even a Mac. Hell, my toaster works better that mose MS applications. So it's not the product, it's the plan. Your plan on how to sell you product.
Why should you care? Because if you're like me you're probably tired of working for "The Man" and want to be more independent. Most high tech companies (Dell was the worst) treat their software and hardware engineers like cattle, loving you when you're here because next year they'll be happy to dump your ass for the next great vapor product and some other cheap college grad. So you want to leave they're sorry asses behind and go independent. If you don't contract, which requires far more travel than I care for, then you're left with running you're own business. So remember: to be independent means to do what everyone else wants. At least as far as what you build. Which is why I work for a startup writing Java code for a JBOSS based product. Bleck. But they customer wants it. So I'll build it. And I'll do a damn good job at it (not that someone else couldn't do better, but they're not here and I am, so leave it at that). At least the guy I work for is a sane human. That's a big change from the recent past.
So what does this all mean? Well, if nothing else it gives credence to the quality of open source software. Why? Because if you want to build something great, don't make it a commercial product and don't get rich trying to make it. If that doesn't describe open source, then I don't know what does.
But it also gives me more confidence that my decision (along with my coworkers) that the new startup I'm in will NOT go public is the right decision. If we make a bunch of money, it needs to go to the people who make the products great. Not to outsiders betting – literally – on our success or failure.