I work for a very small company that builds and customizes a reporting web application as part of a package that another large firm sells. It's currently written in Perl, so it would be a Perl product that's sold again and again.
What's special about our product is that it's not a product, per se. It's more of a service that happens to be written in Perl. In other words, we're a consulting firm in disguise. And, frankly, that's how you're going to have to think of yourself. While you may be able to ride the gravy train of a certain product for a few years, you're not going to build your business unless you're a domain expert first and a producer second.
There's a lot of really bad programmers out there*, but it's not like they have their abilities tattooed on their foreheads. You need to have all the credentials in the world in order to be a recognized domain expert. For example, Stonehenge is a well-known Perl consulting firm. Why? Because Randal Schwartz and brian_d_foy are there! If you want to hire someone, you want to go with the best you can afford. Stonehenge has two of the TOP names in the Perl world. In other words, you have to compete with that if you want to grow your business.
Now, it's not all doom-and-gloom. You can go away from the Perl-centric idea and just build a good web-based product to market. For example, that's what Basecamp does. I bet you can't figure out what language they're using. I'll give you a hint - it's not Perl.
*: According to some estimates, the top 1% of the world's programmers are more efficient than the other 99% combined. Figuring out which side of that line you fall on is tough. But, the nice thing is that it's easy to go from one side to the other, if you're willing to devote yourself to it.
What does it take for an application to succeed in the marketplace that you're describing? Well, it needs to be installable on Windows in the same fashion that Firefox is installable on Windows. You download something, double-click on something, click "Yes" a few times, double-click on something else and you're up and running.
This takes a lot of infrastructure on the Windows machine. While it's all possible to do with Perl, it makes a lot more sense to do it in a language that already has all that infrastructure in place, like C# or Java. Why compete in a space that's already saturated?
Instead, it's much better to work within a space that doesn't have that cost of entry, like rich web applications. Have you used Basecamp? It's a damn slick application - I like it ... a lot.
As for "only way out" ... I make a fine living doing exactly what you're describing, and so does nearly every other serious Perl/Python/Ruby developer. Just because it's not flashy doesn't mean it's not a good thing to do.
If you're calling yourself a "Perl programmer", you're already limiting your career path. Chad Fowler tells you all about this in his recent Perlcast interview where he says that you should make yourself useful in a certain problem area regardless of the tools. Be a programmer who knows Perl along with everything else you know, but also know other things. Don't get tied up just being a programmer either.
Have you looked at Bricolage, RT, or Movable Type? Those are all Perl products. Don't fool yourself into thinking that retail scales better than consulting. More revenue doesn't mean more profit or more return for your investment.
You have a couple of options:
In my experience, the consumer market isn't worth the pain. Support alone could kill you. I haven't directly done anything with big enterprises, but I suspect it's not feasible to get a foot in the door without expensive consultants and an impressive portfolio of buzzwords.
In the end, I think the small business segment is the most exciting: there are plenty opportunities for small shops selling intranets, web sites and so on. You'll be customizing your base product for each client, which technically makes you a consultant, but there's no reason why you shouldn't base this on a common framework that you develop for your particular niche. It gives you at least three income streams:
I don't think there's anything wrong with developing web sites. You can deploy those skills with equal ease into selling intranets, and I think those are just software like any other, but with a lot of management benefits over desktop applications. If you view the web browser as your GUI toolkit, perl comes out very, very strong.
I personally think Perl is best suited to quick and dirty custom programming. For instance, I wrote a script yesterday to merge the results from a four-part poll, remove extreme results, and tabulate votes per person and votes per item. The script took maybe an hour to write, but writing the same script in any other language would have taken significantly longer, and processing the data by hand would have taken ages. Perl to the rescue!
The module CPAN::DistroBuilder does exactly what you said about packing the modules version that you need. PAR also could help in this issue, as well.
I always feel employed/consulting is not a scalable business proposition.
You're right to a large extent, but this touches on something that I always wonder about: why is the (western) world so obsessed with growth and scaling? Everyone seems to be looking for "fire & forget" businesses that they can set up then sit back while the product yields money. It's probably just the way I am wired, but I would rather earn my money by providing a service and get the benefits of becoming more efficient at that service, rather than selling "product".
Sorry, I'm probably off-topic here, and I'm certainly not answering your question, but I needed to get that off my chest.
I like to think of this as I'm in this s**t for life. Build a service, build a product based out of a service, fine tune my services to sell my product better. And so on! (Horrible example, please excuse)
That's true for code that does "general computing", like creating hashes or a brand new technique to query a database. But I think we're not going to see so soon companies putting strategic and high value business process rules into a product using programming languages like Perl or Java, which are (relative) easy to get the source code
.perlmonks.org content © perlmonks.org and Ace128, Anonymous Monk, arc_of_descent, brian_d_foy, BUU, dragonchild, dwildesnl, glasswalk3r, johnnywang, rhesa, robharper, TedPride
prlmnks.org © 2006 edmund von der burg (eccles & toad)
v 0.03