Scout, our server monitoring service, has grown quite a bit in 2009.
We've documented two big lessons learned on the Scout blog. The main points:
- You will underestimate the ongoing cost of complexity in your product
- Cool new capabilities don't sell themselves
Give it a read! We will have more hard-earned business lessons coming, so stay tuned.
Much of what Rails provides to get your apps up and running isn't optimized for performance. It's crafted to be more efficient for developers, not more efficent at runtime. before_filter callbacks on your RESTful controllers to get the current object? That's an extra database call. All those nifty plugins you are using to kickstart your app? They probably generate far more SQL (and slower SQL) than if you coded the same functionality ad-hoc. ActiveRecord itself is slow compared to raw SQL and object instantiation.
If your project grows huge -- 10's of millions of PV/day huge -- you're gonna have to revisit some of that stuff. Some of it you can compensate for with smart caching techniques and more hardware. And some of it you will have to throw away and rewrite. If you get really huge, you're going to have pay back some of the technical debt you incurred by choosing a tool like Rails.
Yes, using a tool like Rails incurs some debts. But just like the rest of the world, there are good debts and bad debts. If you're smart about the kind of debt you take on, you can build far more, and build it faster.
Many of your projects will never reach the level where you need to "pay back" for all that developer productivity you enjoyed on the front end. That means you can try more ideas, and (hopefully) fail fast at the more speculative ones. If some of your projects do need to scale radically (beyond the basics of better caching, more hardware, etc), you have an incredible amount of upfront productivity you can leverage against that work of -- say -- optimizing some key queries by hand. As long as you go in with eyes wide open and realistic expectations, then I say that's a smart kind of technical debt.
I had the pleasure of being on the The Business of Rails panel at RailsConf this last weekend. Based on the response we got from the audience and the followup communications, co-panelist Robby Russell has created a Google Group to continue the discussion. If you are working independently with Rails, or want to chat with others who are making their living working with this wonderful technology, join us in the group! See Robby's announcement here.
My friend Christian Perry (of SF Beta fame) is co-producing the first GeekSessions event next week. The topic is Scaling Ruby on Rails, and he's got an impressive speaker lineup from Twitter, Joyent, Pivital Labs, and Sun Microsystems. I'll be there, fresh from my Railsconf talk this weekend, to see if I can trip up the speakers with some hard questions ;-)
Lots of good stuff going on and keeping me busy over the last few months:
- Did some interesting Rails work with Helium Report, including the map browsing page
- Helped Sun Microsystems out with some Ruby on Rails training
- Worked on TwoBlocksDown (which will be renamed before it is launched)
I've got a few other projects in the pipeline too, which I'll talk more about when the time is right. Too little time, too many cool projects to work on!
Montreal, Canada has boldly stepped into the #1 city on hotspotr with 107 cafes/hotspots listed! Chicago is trailing in 2nd place with 105 cafes, and San Francisco (hotspotr's hometown, if you will), is in 3rd place. Props to Montreal, who came out of nowhere on this -- their first listing was posted just six days ago.
Chicago was the first to overcome San Francisco, and they've traded the top spot with with Montreal a couple times over the weekend. Who will come out on top?
TwoBlocksDown is a local Q&A service, and is a collaboration between me and Derek Haynes. Although we still have a lot of work to do, I'm very excited about this service! Of course we're doing it in Ruby on Rails, and it will have a Google maps component. Stay tuned for more details, or drop us your email to be the first with the 411!
I'm pleased to be a part of the "Business of Rails" panel at RailsConf this year. I'll be speaking alongside some major players in Rails consulting -- Justin Gehtland, Geoffrey Grosenbach, Joe O'Brien, Robby Russell, and Nathaniel Talbott. The panel is meant to answer your questions about the challenges, rewards, and dynamics of consulting with Rails.
As a one-man shop, I represent the small end of spectrum. I hope my contribution will be useful to others who are contemplating taking a similar approach, i.e, splitting your time between paid work and your own speculative projects. And, importantly, making a living doing what you enjoy with people you enjoy working with.
Again, I'm pleased to be on a panel with an esteemed group like this, and thanks to Nathaniel for pulling it together!
From "How to Start a Startup:"
If you want ideas for startups, one of the most valuable things you could do is find a middle-sized non-technology company and spend a couple weeks just watching what they do with computers. Most good hackers have no more idea of the horrors perpetrated in these places than rich Americans do of what goes on in Brazilian slums.On the value of startup ideas in and of themselves (http://paulgraham.com/ideas.html)
Actually, startup ideas are not million dollar ideas, and here's an experiment you can try to prove it: just try to sell one. Nothing evolves faster than markets. The fact that there's no market for startup ideas suggests there's no demand. Which means, in the narrow sense of the word, that startup ideas are worthless.On "staying upwind" (also from the 'ideas' essay):
I don't think people consciously realize this, but one reason downwind jobs like churning out Java for a bank pay so well is precisely that they are downwind. The market price for that kind of work is higher because it gives you fewer options for the future. A job that lets you work on exciting new stuff will tend to pay less, because part of the compensation is in the form of the new skills you'll learn.Finally . . .I think there's a real glut of me-too Web 2.0 startups. This last excerpt struck a chord regarding why some of the offerings seem so inane (once more, from 'ideas'):
In theory you could stick together ideas at random and see what you came up with. What if you built a peer-to-peer dating site? Would it be useful to have an automatic book? Could you turn theorems into a commodity? When you assemble ideas at random like this, they may not be just stupid, but semantically ill-formed. What would it even mean to make theorems a commodity? You got me. I didn't think of that idea, just its name.The key takeaway, I think, is that the team is far more important than the idea. True for investers like Graham, and certainly true in my own experience.