This 35-minute video from the recent Google I/O conference explains how to use Go’s concurrency primitives — goroutines, channels, and the
select statement — to do things elegantly, correctly, and safely in a few lines of Go, which would otherwise turn your brain into a pretzel in most programming languages.
My favorite thing about Go is that a good Go program looks self-evident and obvious, even when it may be doing things that would be insanely complex in another language. Callbacks, closures, mutexes, and so on just disappear, and the program itself emerges, looking completely unimpressive. In many cases I think “what’s the big deal about that?” until I realize how hard it would be to write in Java, or Perl, or so on. A lot of the code in Percona Toolkit, for example, involved “pipelines” of callbacks passing data along to other callbacks for further processing. These were hard to reason about, hard to make resilient to errors and allow clean termination, and were redesigned several times, never very successfully in my opinion. In Go, channels make those kinds of tasks so simple. Such a program in Go looks suspiciously like a Unix | pipe | and | filter | program. If you think about it, the Unix shell itself is a great example of using “channels” successfully to trivialize what would otherwise be a migraine-inducing task.
Wow, talk about an industry that’s overcrowded with look-alike me-too products. Online agile project management tools are a dime a dozen, which makes me think that they are probably all very similar and probably don’t solve most people’s needs. I’ve observed that when this is true, nearly-indistinguishable tools get reinvented, until the burden of evaluating the options is greater than the burden of just building yet another one, thus perpetuating the cycle.
Here are some of the products I looked at yesterday:
Acunote, ActiveCollab, AgileBench, AgileZen, Asana, Backlog, Basecamp, Blimp, Bugly, Huboard, IceScrum, JIRA, Kanbanery, Kickoff, Lean-To, Lighthouse, OnTime, PivotalTracker, Planbox, Plan.io, Rally, Redmine, ScrumDo, Sensei, SnowyEvening, Sprintly, TargetProcess, Trac, Trajectory, Trello, Unfuddle, YouTrack, Zoho Projects.
Like many others, I don’t think that RSS is dead. It’s my favorite way to keep up with highly valuable content on the Web. So I’m in the market for a replacement for Google Reader, along with millions of others. As I’ve evaluated options, I’ve had to eliminate some of them because I’m not sure they’re serious about what they’re doing. This post is about my thought process and why I think entrepreneurs should challenge themselves to get serious, and signal that intent, by not building free services.
As I’ve looked around, a number of replacement or alternative services exist. Some of them offer a subscription, but also a free (or freemium) model. Some are free-only. As I assess each of these, I am measuring them against some important questions.
First, although the main thing I care about is the product and how it serves my use-case needs, one of my meta-needs is longevity. I don’t want to change things. I want to find things that work, and stick with them. I just don’t have the bandwidth to go through this process all the time. I’ll stick with something old-but-serviceable for a long time after my friends tell me that the new kid on the block is so much better.
So I really want to know that the people behind the product are damn serious about building it into a lasting service, which means a lasting business. I want to know that they’re not in it for a quick flip-to-big-company-that’ll-kill-it, it’s not an acqui-hire-me strategy, it’s not a lifestyle project or a hobby, it’s not something they’ll tire of and go take a job with another company.
Remember Delicious and Magnolia? A bunch of my friends switched from the former to the latter, and then there was a spectacular data loss incident, and they all lost all of their bookmarks. And the guy who ran Magnolia seemed to signal that he wasn’t willing to press on when the going got tough. When it became clear that it’d cost some money and time to recover the corrupt data he hadn’t backed up, even though his users were loyal and willing to help, he shut the service down. Something similar almost happened with Couchsurfing. In both cases, the users/customers felt (and were) set up to be betrayed because the service was never a mutual obligation; it was an offer of something free with no expectations in either direction. Ah, but expectations always exist, and to avoid acknowledging that is tantamount to dishonesty by omission.
When I look for a service or product that I’m going to rely on to do something for me — such as aggregating my chosen Web content — I’m doing it because the value to me is real. It’s a huge time-saver. Time is worth money. I want to see signs that they understand this and insist that I give them money in return for the benefit.
If a service is free, one must speculate. There are a variety of reasons something is free, but usually, when a product is free, YOU are the product. This is the case with Facebook and Google. I’m OK with this when I understand it and I believe that the company knows how to take the product-of-me and build a business on it.
In most cases, however, I want to pay. Not too much, but more than a little.
Paying an appropriate amount of money gives me a lot of assurances. First, it means the company has their act together on a much larger scale than just running the IT and technical stuff. It’s relatively easy to build a product — much harder to build a company. The logistics of assembling the business around the product are pretty large. Second, it means I have a right to expect good service and to complain. Businesses that are trying to drive the cost down send the signal that they’re just paying attention to competitors, not customers. I had a lot of experience with Virtual PBX products a few years ago — they were all charging pennies, and there was no one I could pay a decent chunk of money to. That meant that I was entitled to dropped and misrouted calls and horrible voice quality and poor customer service. It’s frustrating when there isn’t a solid alternative and you can tell that the market is just being gutted by a price race to the bottom. The elephants fighting means the ant gets trampled.
I recently tried to use a service that integrates with Github and provides a really valuable add-on. It’s built up as a free open-source project that is now trying to commercialize. There are several products and companies in this space; I assume Github will eventually acquire one, and the others will become irrelevant. This is unfortunate, because you have to assume the teams behind the products understand this and are angling to be first in line for the acquisition. That sends a strong signal about their real motivations — “not the customer.” I tried Product A, and was able to convince them to take me as a paying alpha user (they mostly offer the product for free.) But they were charging way too much — many times what I pay for Github. It doesn’t make sense to pay several multiples of Github, to add a feature to Github. I negotiated a long-term deal that was in my interests: not too much, not too little, 12-month deal — should have been a no-brainer for them, because as a young company, if you have ambitions, this is what you’re dying to show investors. But after they agreed to the terms, they couldn’t get their invoicing process together. After a while I found another company doing something similar, who were totally on the ball. This other company offered a free trial period to assess the product, but after that you pay or you leave. They’ve done a great job for me and I haven’t had a second thought.
So, back to the point — as an entrepreneur, I think you should get serious, and signal your intention by charging an appropriate amount of money. Don’t copy giant companies who offer things for free. That free (or freemium) strategy only works in very special cases. You should understand what those cases are — if you don’t, get someone business savvy to help with your strategy. The vast, vast majority of businesses are emphatically not right for free/freemium.
Charging also obligates you to what you’re offering. It gives you no easy out, mentally. I think a lot of people may be subconsciously more comfortable with leaving themselves that out: if this gets tough, I don’t have to feel guilty, because it’s not like I owed the users anything. (If you’re thinking about “users” instead of “customers” you’re probably doing it wrong.) Man up and charge your customers, and accept the obligation that comes in return. Now when shit hits the fan, you damn well better stay up all night fixing it. You can’t just go “I’m tired, and it’s Friday night. Screw it. I’ll get back to work on this Monday.” (If you’re scared of being obligated to work all weekend on a few hours of sleep, you’re also probably doing it wrong.)
Building something for free can be a way to avoid risk, avoid complexity, avoid boring/mundane/hard things that don’t feel rewarding. But those things are exactly what make you grow, and you do yourself and your customers (users) a huge disservice if you don’t challenge yourself to grow. Growth comes from risk, and creates risk. That’s what life is about. See, this is the difference between a nerd/coder and an entrepreneur. An entrepreneur puts his/her career on the line and takes the risk.
I want a Google Reader replacement from an entrepreneur.
I want to end by clarifying a few points. 1) This isn’t about Google Reader; it just provided the inspiration. 2) Google Reader is free in a manner of speaking, so it might seem odd that I’m insisting that its replacement be non-free. Google Reader is in a special category because it’s owned by a company that I believe is unlikely to close its doors soon. None of the replacements I’ve seen so far are in that position. 3) I’m not saying that none of the replacements I’m looking at is built by an entrepreneur who’s serious about making a business from it — but some of them are not clearly identifiable as anything more than hobby projects.